Функция которая возвращает все сообщения которые пользователь отправил Телеграм боту.
Функция читает сообщения (запросы от пользователей) из канала Телеграм бота и возвращает их в виде таблицы значений. Лучше всего расположить в общий модуль.
Данные которые принимает:Токен - Токен телеграм бота.
ИДСообщения - ИД последнего полученого сообщения, нужно чтобы каждый раз не перечитывать все сообщения от пользователей. Если значение НЕ пустое то читать начинает от указанного. Лучше хранить гдето в константе.
Колонки таблицы значений:ИмяПользователя - Первое имя
ФамилияПользователя - Второе имя
ИДПользователя - ИД пользователя который написал
ИДСообщения - ИД сообщения
ТекстСообщения - Текст самого сообщения
ЭтоБот - Истина если бот написал вместо пользователя
Функция ЧтениеСообщенийТелеграм(Токен, ИДСообщения = ""
) Экспорт ИмяФайла = ПолучитьИмяВременногоФайла("txt"
); Подключение = Новый HTTPСоединение("api.telegram.org"
, 443
,,,,, Новый ЗащищенноеСоединениеOpenSSL()); Если ЗначениеЗаполнено(ИДСообщения) Тогда Ограничение = "?offset="
+ Формат(ИДСообщения + 1
, "ЧГ="
); КонецЕсли; Запрос = Новый HTTPЗапрос("/bot"
+ Токен + "/getUpdates"
+ Ограничение); Подключение.Получить(Запрос, ИмяФайла); чтение = Новый ЧтениеJSON; чтение.ОткрытьФайл(ИмяФайла); данные = ПрочитатьJSON(чтение, ложь); Если НЕ данные.ok Тогда Возврат Неопределено; КонецЕсли; ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки("ИмяПользователя"
); ТЗ.Колонки("ФамилияПользователя"
); ТЗ.Колонки("ИДПользователя"
); ТЗ.Колонки("ИДСообщения"
); ТЗ.Колонки("ТекстСообщения"
); ТЗ.Колонки.Добавить("ЭтоБот"
); Для Каждого Сообщение Из данные.result Цикл СтрТЗ = ТЗ.Добавить(); // Если сообщение было отредактировано Если Сообщение.Свойство("edited_message"
) Тогда СтрТЗ.ИмяПользователя = Сообщение.edited_message.from.first_name; СтрТЗ.ФамилияПользователя = Сообщение.edited_message.from.last_name; СтрТЗ.ИДПользователя = Формат(Сообщение.edited_message.from.id, "ЧГ="
); СтрТЗ.ИДСообщения = Сообщение.update_id; СтрТЗ.ТекстСообщения = Сообщение.edited_message.text; СтрТЗ.ЭтоБот = Сообщение.edited_message.from.is_bot; Иначе // Обычное сообщение СтрТЗ.ИмяПользователя = Сообщение.message.from.first_name; СтрТЗ.ФамилияПользователя = Сообщение.message.from.last_name; СтрТЗ.ИДПользователя = Формат(Сообщение.message.from.id, "ЧГ="
); СтрТЗ.ИДСообщения = Сообщение.update_id; СтрТЗ.ТекстСообщения = Сообщение.message.text; СтрТЗ.ЭтоБот = Сообщение.message.from.is_bot; КонецЕсли; КонецЦикла; Возврат ТЗ; КонецФункции
2023-02-05