Уведомления в Telegram (Телеграм): различия между версиями

Материал из Sprut.hub Wiki
Нет описания правки
 
(не показаны 43 промежуточные версии этого же участника)
Строка 3: Строка 3:
Если у вас нет своего бота, вам необходимо его создать.  
Если у вас нет своего бота, вам необходимо его создать.  


Именно этот бот, будет присылать вам сообщения, которые вы будете отправлять из Sprut.hub. 
Если вы хотите, чтобы сообщения приходили в ваш канал, который будут читать несколько пользователей, то вам на шаге 4 - необходимо выяснить ID канала, куда будут присылаться сообщения от бота и указать его.
== Создание своего бота в Telegram ==
Для этого необходимо в Telegram в поиске вбить [https://t.me/BotFather @BotFather] (это официальный бот для создания ботов)
Для этого необходимо в Telegram в поиске вбить [https://t.me/BotFather @BotFather] (это официальный бот для создания ботов)
[[Файл:Tg0.jpg|центр|обрамить]]
[[Файл:Tg0.jpg|центр|обрамить]]
Строка 17: Строка 22:
После этого вы получите сообщение, которое будет содержать ссылку на вашего бота, а также '''токен''' для авторизации в Sprut.hub или другой системе управления умным домом.
После этого вы получите сообщение, которое будет содержать ссылку на вашего бота, а также '''токен''' для авторизации в Sprut.hub или другой системе управления умным домом.


'''Шаг 4:''' Далее вам необходимо узнать ваш '''chatID'''. Для этого вам нужно подключиться к [https://t.me/getidsbot этому боту], который и сообщит вам ваш '''chatID'''.
'''Шаг 4:''' Далее вам необходимо узнать ваш '''chatID'''. Для этого вам нужно подключиться к [https://t.me/getmyid_bot этому боту], который и сообщит вам ваш '''chatID'''. Если же вам нужно, чтобы ваш бот присылал сообщения в какой нибудь общий канал Telegram, то вам нужно выяснить ID этого канала. Для этого, необходимо переслать сообщение из этого канала [https://t.me/getmyid_bot тому же боту], чтобы он вам сообщил ID чата, из которого вы переслали сообщение.


{{Quote | Ваш бот готов к использованию}}
'''Шаг 5:''' Чтобы начать пользоваться ботом, нужно начать с ним чат и нажать кнопку "Запустить"
[[Файл:Telegram.png|центр|обрамить]]


{{QuoteBlue | Ваш бот готов к использованию}}
{{QuoteYellow|Если вы хотите, чтобы бот отправлял сообщения в ваш канал и его сообщения могли читать несколько пользователей, то вы должны добавить бота в этот канал с правами администратора и возможностью отправлять сообщения}}
== Создание глобального сценария ==
Теперь вам необходимо настроить его работу в Sprut.hub. Для этого необходимо создать глобальный сценарий в виде кода. Идем в "Сценарии" - "Глобальные" и создаем там новый сценарий
Теперь вам необходимо настроить его работу в Sprut.hub. Для этого необходимо создать глобальный сценарий в виде кода. Идем в "Сценарии" - "Глобальные" и создаем там новый сценарий
[[Файл:Scenario1.png|центр|обрамить]]
[[Файл:Scenario1.png|центр|обрамить]]


После этого - вставляем в блок кода сценария следующий код:<syntaxhighlight lang="js" line="1">
После этого - вставляем в блок кода сценария следующий код:<syntaxhighlight lang="js" line="1">
let chatIDs = ["666666666"];
let chatIDs = ["777777777", "888888888", "-123123123123"];
// 777777777 и 888888888 - ID чатов, в которые будут отправляться сообщения
// -123123123123 - ID канала, куда вы можете добавить бота, чтобы сообщения от него приходили группе людей
 
// let chatIDs = ["777777777"] // первая строка будет выглядеть так, если вам нужно отправлять только в один чат
 
let token = "666666666:AABBCCddEeffggeeHH-IIJJkKLlMmnno_oP"
let token = "666666666:AABBCCddEeffggeeHH-IIJJkKLlMmnno_oP"


Строка 47: Строка 62:
     }
     }
}
}
</syntaxhighlight>
sendToTelegram(["*Мой город*", "Хаб запущен"])
{{Quote | В коде необходимо заменить "777777777" на ID которые вы получили от бота на Шаге 4 и заменить токен 666666666:AABBCCddEeffggeeHH-IIJJkKLlMmnno_oP на токен, который вы получили на Шаге 3}}
</syntaxhighlight> [https://wiki.spruthub.ru/images/c/c9/Отправка_сообщений_в_Telegram.zip Скачать шаблон сценария]{{QuoteYellow | В коде необходимо заменить "777777777" и другие ID на те ID, которые вы получили от бота на Шаге 4 и заменить токен 666666666:AABBCCddEeffggeeHH-IIJJkKLlMmnno_oP на токен, который вы получили на Шаге 3}}
 
После этого сохраняем сценарий


== Дополнительные настройки отправки сообщений ==
В этот же глобальный сценарий, после функции sendToTelegram, вы можете добавить дополнительную строку, которая будет уведомлять вас о запуске хаба вызывая функцию выше:
В этот же глобальный сценарий, после функции sendToTelegram, вы можете добавить дополнительную строку, которая будет уведомлять вас о запуске хаба вызывая функцию выше:
<syntaxhighlight lang="js">
<syntaxhighlight lang="js">
Строка 55: Строка 73:
</syntaxhighlight>
</syntaxhighlight>


Вызов функции отправки сообщений из блочных сценариев, производится через добавление в блоке кода следующей команды:
Вызов функции отправки сообщений из блочных сценариев, производится через добавление в блоке кода блочного сценария (в раздел "Тогда" или "Иначе") следующей команды:
<syntaxhighlight lang="js">
<syntaxhighlight lang="js">
global.sendToTelegram("Сообщение")
global.sendToTelegram("Сообщение")
Строка 81: Строка 99:
</syntaxhighlight>
</syntaxhighlight>
<syntaxhighlight lang="js">
<syntaxhighlight lang="js">
global.sendToTelegram("Текст с емоджи 😄")
</syntaxhighlight>''<small>** Эмоджи можно скопировать из любого приложения, которое их поддерживает и вставить в код сценария. Как текст.</small>''<syntaxhighlight lang="js">
global.sendToTelegram("[Инструкции живут тут](https://spruthub.ru/news)") - это отправка ссылки
global.sendToTelegram("[Инструкции живут тут](https://spruthub.ru/news)") - это отправка ссылки
</syntaxhighlight>
</syntaxhighlight>
Строка 88: Строка 108:
<syntaxhighlight lang="js">
<syntaxhighlight lang="js">
global.sendToTelegram("Состояние сигнализации: " + Hub.getCharacteristic(2, 13).format())
global.sendToTelegram("Состояние сигнализации: " + Hub.getCharacteristic(2, 13).format())
</syntaxhighlight>где 2 - это [[Аксессуары, сервисы и характеристики#Идентификаторы аксессуара, сервиса и характеристики|идентификатор аксессуара]], а 13 это [[Аксессуары, сервисы и характеристики#Идентификаторы аксессуара, сервиса и характеристики|идентификатор характеристики]]
Для отправки в одном сообщении состояний нескольких устройств в одну строку<syntaxhighlight lang="js">
global.sendToTelegram("Показания датчика температуры 1 : " + Hub.getCharacteristicValue(13,15) + " Показания датчика температуры 2 : " + Hub.getCharacteristicValue(16,19))
</syntaxhighlight>Для отправки в одном сообщении состояний нескольких устройств в две строки, где добавляются квадратные скобки [], а перевод строки осуществляется с помощью запятой<syntaxhighlight lang="js">
global.sendToTelegram(["Показания датчика температуры 1 : " + Hub.getCharacteristicValue(13,15), "Показания датчика температуры 2 : " + Hub.getCharacteristicValue(16,19)])
</syntaxhighlight>
</syntaxhighlight>


После этого сохраняем сценарий и переходим в раздел Блочных сценариев и создаем новый блочный сценарий или добавляем уже в существующий, отправку уведомлений в телеграм:
== Уведомления в Telegram из блочных сценариев ==
Глобальные сценарии используются в блочных через вызов функции.
 
Для этого переходим в раздел Блочных сценариев и создаем новый блочный сценарий или добавляем уже в существующий, отправку уведомлений в телеграм:
[[Файл:Scenario tg2.png|центр|обрамить]]
[[Файл:Scenario tg2.png|центр|обрамить]]
[[Файл:Scenario tg4.png|центр|обрамить]]
== Передача данных датчика в Telegram ==
Если вы хотите что-то посложнее, например отправить данные датчика или что-то подобное, то можно использовать данные характеристики устройства.
Например отправка состояния открытия окна будет выглядеть в виде такой команды:<syntaxhighlight lang="js">
global.sendToTelegram("Состояние окна: " + Hub.getCharacteristic(1154, 16).format())
</syntaxhighlight>где цифра 1154 - это [[Аксессуары, сервисы и характеристики#Идентификаторы аксессуара, сервиса и характеристики|ID аксессуара]] Окно в хабе, а цифра 16 - это номер характеристики "Целевая позиция" у Окна.
Чтобы не напрягаться с поиском того, как называется сервис или характеристика для использования в коде (даже с авто-подстановкой), а также какие у них идентификаторы, достаточно зайти в настройки устройства и нажать кнопку информации у нужной характеристики
[[Файл:Tg23.jpg|центр|обрамить]]
И там будут нужные вам названия сервисов и характеристик для указания в коде, а также идентификаторы всех уровней.
[[Файл:Tg24.jpg|центр|обрамить]]
== Отправка фото в Телеграм ==
Если вам необходимо отправлять фото в телеграм, то нужно дополнить глобальный сценарий еще одной функцией
<syntaxhighlight lang="js" line="1">
let chatIDs = ["777777777"];
let token = "666666666:AABBCCddEeffggeeHH-IIJJkKLlMmnno_oP"
function sendToTelegram(text, notify) {
    try {
        if (!Array.isArray(text))
            text = [text];
        chatIDs.forEach(function (chatID) {
            HttpClient.POST("https://api.telegram.org")
                .path("bot" + token)
                .path("sendMessage")
                .queryString("chat_id", chatID)
                .queryString("text", text.join("\n"))
                .queryString("parse_mode", "Markdown")
                .queryString("disable_notification", notify == null ? false : !notify)
                .send()
        })
    } catch (e) {
        log.error(e.message);
    }
}
function sendPhotoToTelegram(binary,caption) {
    try {
        if (!caption) {caption = ""}
        chatIDs.forEach(function (chatID) {
            HttpClient.POST('https://api.telegram.org')
                .path("bot" + token)
                .path("sendPhoto")
                .queryString("chat_id", chatID)
                .queryString('caption', caption)
                .fieldMultipart('photo', binary)
                .send();
        })
    } catch (e) {
        log.error(e.message);
    }
}
sendToTelegram(["*Мой город*", "Хаб запущен"])
</syntaxhighlight>[https://wiki.spruthub.ru/images/e/e1/%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B0_%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B9_%D0%B8_%D1%84%D0%BE%D1%82%D0%BE_%D0%B2_Telegram.json Скачать шаблон сценария]{{QuoteYellow | В коде необходимо заменить "777777777" на ID которые вы получили от бота на Шаге 4 и заменить токен 666666666:AABBCCddEeffggeeHH-IIJJkKLlMmnno_oP на токен, который вы получили на Шаге 3}}А отправка фото, осуществляется следующим блоком кода в блочном сценарии<syntaxhighlight lang="js">
let snapshot = HttpClient.GET("[АДРЕС_ИЗОБРАЖЕНИЯ]").send().getBinary();
global.sendPhotoToTelegram(snapshot,"Изображение с камеры");
</syntaxhighlight>Где в данном примере, [АДРЕС_ИЗОБРАЖЕНИЯ] - это URL для картинки с вашей камеры видеонаблюдения, если она умеет отдавать статичные картинки.
Стандартная ссылка для подобных картинок: {{Color|blue|'''http://[ВАШ_ЛОГИН]:[ВАШ_ПАРОЛЬ]@[IP_АДРЕС_КАМЕРЫ]:[ПОРТ]/cgi-bin/snapshot.cgi'''}} но она может быть другой, или ваша камера может не уметь показывать статичные картинки.
Главное для использования этого варианта отправки картинок, чтобы она была доступна из хаба по обычной ссылке на сайт.
== Отправка фото в Телеграм с подключенной к Sprut.hub камеры ==
Осуществляется с использованием отправки фото в Телеграм через глобальную функцию описанную выше.
Вызов в блочном или логическом сценарии: <syntaxhighlight lang="js">
global.sendPhotoToTelegram(Hub.getAccessory(1291).getSnapshot(), "текст под картинкой", "")
</syntaxhighlight>где 1291 это идентификатор подключенной к Sprut.hub камеры
== Универсальный вариант для чатов, групп и каналов с отправкой в конкретный топик группы ==
Номер топика в супергруппе можно получить скопировав ссылку на любое сообщение в топике. Она будет выглядеть как:
https://t.me/c/123456789/2/17 - где: 
* 123456789 - идентификатор группы (чтобы добавить в код, нужно в начало идентификатора добавить -100 чтобы получилось -100123456789)
* 2 - идентификатор топика
* 17 - идентификатор сообщения
Идентификатор чата с ботом вы получили на [[Уведомления в Telegram (Телеграм)#Создание своего бота в Telegram|шаге 4]]
Идентификатор канала, в который бот должен отправлять сообщения вы так же получили на [[Уведомления в Telegram (Телеграм)#Создание своего бота в Telegram|шаге 4]]
В итоге мы получаем три места, куда бот будет отправлять сообщения: чат с ботом, канал и конкретный топик в супергруппе. Где:
* -100123456789 - это ID супергруппы
* -100987654321 - это ID канала
* 50506060 - это ID чата с ботом
{{QuoteRed|Если у вас несколько каналов и чатов, необходимо в переменной chatIDs указывать сначала каналы и группы (со значком "-" в начале), а потом уже ID чатов}}
Глобальный сценарий будет выглядеть таким образом:<syntaxhighlight lang="js" line="1">
let chatIDs = ["-100123456789","-100987654321","50506060"];
let token = "666666666:AABBCCddEeffggeeHH-IIJJkKLlMmnno_oP"
function sendToTelegram(text,topic,notify) {
    try {
        if (!Array.isArray(text))
            text = [text];
        chatIDs.forEach(function (chatID) {
            if (chatID.indexOf("-")) {topic = ""}
            HttpClient.POST("https://api.telegram.org")
                .path("bot" + token)
                .path("sendMessage")
                .queryString("chat_id", chatID)
                .queryString("message_thread_id", topic)
                .queryString("text", text.join("\n"))
                .queryString("parse_mode", "Markdown")
                .queryString("disable_notification", notify == null ? false : !notify)
                .send()
        })
    } catch (e) {
        log.error(e.message);
    }
}
</syntaxhighlight>Отправка сообщений
Если нужно отправить сообщение в чат с ботом, канал и топик General супегруппы <syntaxhighlight lang="js">
global.sendToTelegram("Сообщение в канал, чат и топик General")
</syntaxhighlight>Если нужно отправить сообщение в чат с ботом, канал и топик с индексом 2 супергруппы, где цифра 2 после запятой - ID топика в супергруппе <syntaxhighlight lang="js">
global.sendToTelegram("Сообщение в канал, чат и топик номер 2",2)
</syntaxhighlight>__ОБЯЗАТЕЛЬНОЕ_ОГЛАВЛЕНИЕ__

Текущая версия от 17:30, 1 ноября 2024

Для получения уведомлений о событиях Sprut.hub через бота в Telegram можно использовать решение с помощью кода (пока не готово официальная интеграция).

Если у вас нет своего бота, вам необходимо его создать.

Именно этот бот, будет присылать вам сообщения, которые вы будете отправлять из Sprut.hub.

Если вы хотите, чтобы сообщения приходили в ваш канал, который будут читать несколько пользователей, то вам на шаге 4 - необходимо выяснить ID канала, куда будут присылаться сообщения от бота и указать его.

Создание своего бота в Telegram

Для этого необходимо в Telegram в поиске вбить @BotFather (это официальный бот для создания ботов)


После этого, необходимо:

Шаг 1: Нажмите «Запустить» для активации бота BotFather. В ответ вы получите список команд по управлению ботов.

Шаг 2: Выполнить команду /newbot

Шаг 3: Дать имя своему боту — например "Мой дом" и присвоить никнейм бота, по которому вы сможете его найти. Он должен быть уникальным и заканчиваться на слово «bot».

После этого вы получите сообщение, которое будет содержать ссылку на вашего бота, а также токен для авторизации в Sprut.hub или другой системе управления умным домом.

Шаг 4: Далее вам необходимо узнать ваш chatID. Для этого вам нужно подключиться к этому боту, который и сообщит вам ваш chatID. Если же вам нужно, чтобы ваш бот присылал сообщения в какой нибудь общий канал Telegram, то вам нужно выяснить ID этого канала. Для этого, необходимо переслать сообщение из этого канала тому же боту, чтобы он вам сообщил ID чата, из которого вы переслали сообщение.

Шаг 5: Чтобы начать пользоваться ботом, нужно начать с ним чат и нажать кнопку "Запустить"

Ваш бот готов к использованию

Если вы хотите, чтобы бот отправлял сообщения в ваш канал и его сообщения могли читать несколько пользователей, то вы должны добавить бота в этот канал с правами администратора и возможностью отправлять сообщения

Создание глобального сценария

Теперь вам необходимо настроить его работу в Sprut.hub. Для этого необходимо создать глобальный сценарий в виде кода. Идем в "Сценарии" - "Глобальные" и создаем там новый сценарий

После этого - вставляем в блок кода сценария следующий код:

let chatIDs = ["777777777", "888888888", "-123123123123"];
// 777777777 и 888888888 - ID чатов, в которые будут отправляться сообщения
// -123123123123 - ID канала, куда вы можете добавить бота, чтобы сообщения от него приходили группе людей

// let chatIDs = ["777777777"] // первая строка будет выглядеть так, если вам нужно отправлять только в один чат

let token = "666666666:AABBCCddEeffggeeHH-IIJJkKLlMmnno_oP"

function sendToTelegram(text, notify) {
    try {
        if (!Array.isArray(text))
            text = [text];

        chatIDs.forEach(function (chatID) {
            HttpClient.POST("https://api.telegram.org")
                .path("bot" + token)
                .path("sendMessage")
                .queryString("chat_id", chatID)
                .queryString("text", text.join("\n"))
                .queryString("parse_mode", "Markdown")
                .queryString("disable_notification", notify == null ? false : !notify)
                .send()
        })
    } catch (e) {
        log.error(e.message);
    }
}
sendToTelegram(["*Мой город*", "Хаб запущен"])

Скачать шаблон сценария

В коде необходимо заменить "777777777" и другие ID на те ID, которые вы получили от бота на Шаге 4 и заменить токен 666666666:AABBCCddEeffggeeHH-IIJJkKLlMmnno_oP на токен, который вы получили на Шаге 3

После этого сохраняем сценарий

Дополнительные настройки отправки сообщений

В этот же глобальный сценарий, после функции sendToTelegram, вы можете добавить дополнительную строку, которая будет уведомлять вас о запуске хаба вызывая функцию выше:

sendToTelegram(["*Мой город*", "Хаб запущен"])

Вызов функции отправки сообщений из блочных сценариев, производится через добавление в блоке кода блочного сценария (в раздел "Тогда" или "Иначе") следующей команды:

global.sendToTelegram("Сообщение")

Если вам нужен перевод на новую строку, то код будет выглядеть вот так

global.sendToTelegram(["*Нижний Новгород*, хаб запущен", "вторая строка"])

Если вы хотите, чтобы приходили "тихие" уведомления в телеграм, то строка кода будет выглядеть вот так:

global.sendToTelegram(["*Нижний Новгород*, хаб запущен", "вторая строка"], false)

Также можно оформлять текст с помощью разных "плюшек" в виде различного форматирования текста:

global.sendToTelegram("*выделение жирным*")
global.sendToTelegram("__выделение подчеркнутым__")
global.sendToTelegram("_наклонный текст_")
global.sendToTelegram("Текст с емоджи 😄")

** Эмоджи можно скопировать из любого приложения, которое их поддерживает и вставить в код сценария. Как текст.

global.sendToTelegram("[Инструкции живут тут](https://spruthub.ru/news)") - это отправка ссылки

Если вам нужно отправить в телеграм значение какого либо устройства, то можно использовать следующий синтаксис:

global.sendToTelegram("Состояние сигнализации: " + Hub.getCharacteristic(2, 13).format())

где 2 - это идентификатор аксессуара, а 13 это идентификатор характеристики Для отправки в одном сообщении состояний нескольких устройств в одну строку

global.sendToTelegram("Показания датчика температуры 1 : " + Hub.getCharacteristicValue(13,15) + " Показания датчика температуры 2 : " + Hub.getCharacteristicValue(16,19))

Для отправки в одном сообщении состояний нескольких устройств в две строки, где добавляются квадратные скобки [], а перевод строки осуществляется с помощью запятой

global.sendToTelegram(["Показания датчика температуры 1 : " + Hub.getCharacteristicValue(13,15), "Показания датчика температуры 2 : " + Hub.getCharacteristicValue(16,19)])

Уведомления в Telegram из блочных сценариев

Глобальные сценарии используются в блочных через вызов функции.

Для этого переходим в раздел Блочных сценариев и создаем новый блочный сценарий или добавляем уже в существующий, отправку уведомлений в телеграм:

Передача данных датчика в Telegram

Если вы хотите что-то посложнее, например отправить данные датчика или что-то подобное, то можно использовать данные характеристики устройства.

Например отправка состояния открытия окна будет выглядеть в виде такой команды:

global.sendToTelegram("Состояние окна: " + Hub.getCharacteristic(1154, 16).format())

где цифра 1154 - это ID аксессуара Окно в хабе, а цифра 16 - это номер характеристики "Целевая позиция" у Окна.

Чтобы не напрягаться с поиском того, как называется сервис или характеристика для использования в коде (даже с авто-подстановкой), а также какие у них идентификаторы, достаточно зайти в настройки устройства и нажать кнопку информации у нужной характеристики

И там будут нужные вам названия сервисов и характеристик для указания в коде, а также идентификаторы всех уровней.

Отправка фото в Телеграм

Если вам необходимо отправлять фото в телеграм, то нужно дополнить глобальный сценарий еще одной функцией

let chatIDs = ["777777777"];
let token = "666666666:AABBCCddEeffggeeHH-IIJJkKLlMmnno_oP"

function sendToTelegram(text, notify) {
    try {
        if (!Array.isArray(text))
            text = [text];

        chatIDs.forEach(function (chatID) {
            HttpClient.POST("https://api.telegram.org")
                .path("bot" + token)
                .path("sendMessage")
                .queryString("chat_id", chatID)
                .queryString("text", text.join("\n"))
                .queryString("parse_mode", "Markdown")
                .queryString("disable_notification", notify == null ? false : !notify)
                .send()
        })
    } catch (e) {
        log.error(e.message);
    }
}

function sendPhotoToTelegram(binary,caption) {
    try {
        if (!caption) {caption = ""}
        chatIDs.forEach(function (chatID) {
            HttpClient.POST('https://api.telegram.org')
                .path("bot" + token)
                .path("sendPhoto")
                .queryString("chat_id", chatID)
                .queryString('caption', caption) 
                .fieldMultipart('photo', binary)
                .send();
        })
    } catch (e) {
        log.error(e.message);
    }
}
sendToTelegram(["*Мой город*", "Хаб запущен"])

Скачать шаблон сценария

В коде необходимо заменить "777777777" на ID которые вы получили от бота на Шаге 4 и заменить токен 666666666:AABBCCddEeffggeeHH-IIJJkKLlMmnno_oP на токен, который вы получили на Шаге 3

А отправка фото, осуществляется следующим блоком кода в блочном сценарии

let snapshot = HttpClient.GET("[АДРЕС_ИЗОБРАЖЕНИЯ]").send().getBinary();
global.sendPhotoToTelegram(snapshot,"Изображение с камеры");

Где в данном примере, [АДРЕС_ИЗОБРАЖЕНИЯ] - это URL для картинки с вашей камеры видеонаблюдения, если она умеет отдавать статичные картинки.

Стандартная ссылка для подобных картинок: http://[ВАШ_ЛОГИН]:[ВАШ_ПАРОЛЬ]@[IP_АДРЕС_КАМЕРЫ]:[ПОРТ]/cgi-bin/snapshot.cgi

но она может быть другой, или ваша камера может не уметь показывать статичные картинки.

Главное для использования этого варианта отправки картинок, чтобы она была доступна из хаба по обычной ссылке на сайт.

Отправка фото в Телеграм с подключенной к Sprut.hub камеры

Осуществляется с использованием отправки фото в Телеграм через глобальную функцию описанную выше.

Вызов в блочном или логическом сценарии:

global.sendPhotoToTelegram(Hub.getAccessory(1291).getSnapshot(), "текст под картинкой", "")

где 1291 это идентификатор подключенной к Sprut.hub камеры

Универсальный вариант для чатов, групп и каналов с отправкой в конкретный топик группы

Номер топика в супергруппе можно получить скопировав ссылку на любое сообщение в топике. Она будет выглядеть как:

https://t.me/c/123456789/2/17 - где:

  • 123456789 - идентификатор группы (чтобы добавить в код, нужно в начало идентификатора добавить -100 чтобы получилось -100123456789)
  • 2 - идентификатор топика
  • 17 - идентификатор сообщения

Идентификатор чата с ботом вы получили на шаге 4

Идентификатор канала, в который бот должен отправлять сообщения вы так же получили на шаге 4

В итоге мы получаем три места, куда бот будет отправлять сообщения: чат с ботом, канал и конкретный топик в супергруппе. Где:

  • -100123456789 - это ID супергруппы
  • -100987654321 - это ID канала
  • 50506060 - это ID чата с ботом

Если у вас несколько каналов и чатов, необходимо в переменной chatIDs указывать сначала каналы и группы (со значком "-" в начале), а потом уже ID чатов

Глобальный сценарий будет выглядеть таким образом:

let chatIDs = ["-100123456789","-100987654321","50506060"];
let token = "666666666:AABBCCddEeffggeeHH-IIJJkKLlMmnno_oP"

function sendToTelegram(text,topic,notify) {
    try {
        if (!Array.isArray(text))
            text = [text];

        chatIDs.forEach(function (chatID) {
            if (chatID.indexOf("-")) {topic = ""}
            HttpClient.POST("https://api.telegram.org")
                .path("bot" + token)
                .path("sendMessage")
                .queryString("chat_id", chatID)
                .queryString("message_thread_id", topic)
                .queryString("text", text.join("\n"))
                .queryString("parse_mode", "Markdown")
                .queryString("disable_notification", notify == null ? false : !notify)
                .send()
        })
    } catch (e) {
        log.error(e.message);
    }
}

Отправка сообщений Если нужно отправить сообщение в чат с ботом, канал и топик General супегруппы

global.sendToTelegram("Сообщение в канал, чат и топик General")

Если нужно отправить сообщение в чат с ботом, канал и топик с индексом 2 супергруппы, где цифра 2 после запятой - ID топика в супергруппе

global.sendToTelegram("Сообщение в канал, чат и топик номер 2",2)