User Tools

Site Tools


telegram

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

telegram [2025/04/16 12:05] – created walhitelegram [2025/04/16 13:13] (current) walhi
Line 34: Line 34:
 tr.messIO(req,"HTTP"); tr.messIO(req,"HTTP");
 </code> </code>
 +
 +===== Получение сообщений =====
 +
 +Для получения сообщений используется метод ''getUpdates'' [[https://telegram-bot-sdk.readme.io/reference/getupdates|Telegram API]]. Ответы от сервера приходят в формате JSON. Данный формат не поддерживается "из коробки", однако сообществом разработана [[json|библиотека]], которая преобразует JSON строку в объект, с которым удобно работать в JavaLikeCalc.
 +
 +В коде ниже используются 3 переменных.
 +|Имя|Тип|Описание|
 +|Transport|Строка|Имя транспорта в "Транспорты > SSL"|
 +|APIKey|Строка|Ключ, полученный от @BotFather|
 +|updateId|Целочисленный|ID последнего полученного сообщения, при первом запуске значение 0|
 +
 +<code java>
 +jsonLib = SYS.DAQ.JavaLikeCalc.lib_Json;
 +
 +tr = SYS.Transport.SSL.nodeAt("out_" + Transport);
 +
 +messagesCount = 1;
 +
 +while(messagesCount){
 +    updateId += 1;
 +    req = SYS.XMLNode("POST");
 +    req.setAttr("URI", "/bot" + APIKey + "/getUpdates");
 +    req.childAdd("cnt").setAttr("name", "offset").setText(updateId.toString());
 +    tr.messIO(req,"HTTP");
 +
 +    deser_err = "";
 +    outputObject = jsonLib.deserialize(req.text(), deser_err);
 +
 +    messagesCount = outputObject.result.length;
 +    for (var i = 0; i < outputObject.result.length; i++){
 +        item = outputObject.result[i];
 +        updateId = max(updateId, item.update_id);
 +        username = item.message.from.username;
 +        chatID = item.message.from.id;
 +        messageText = item.message.text;
 +    }
 +}
 +</code>
 +
 +Данный код будет загружать все доступные сообщения. Между вызовами требуется хранить последнее значение ''updateId'', так как этот параметр позволяет пропускать уже обработанные сообщения
telegram.txt · Last modified: 2025/04/16 13:13 by walhi

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki