Цей розділ знаходиться на стадії тестування!

Чтение сообщений Телеграм бота средствами 1с

Чтение сообщений Телеграм бота средствами 1с

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

Функция читает сообщения (запросы от пользователей) из канала Телеграм бота и возвращает их в виде таблицы значений. Лучше всего расположить в общий модуль.

Данные которые принимает:
Токен - Токен телеграм бота.
ИДСообщения - ИД последнего полученого сообщения, нужно чтобы каждый раз не перечитывать все сообщения от пользователей. Если значение НЕ пустое то читать начинает от указанного. Лучше хранить гдето в константе.

Колонки таблицы значений:
ИмяПользователя - Первое имя
ФамилияПользователя - Второе имя
ИДПользователя - ИД пользователя который написал
ИДСообщения - ИД сообщения
ТекстСообщения - Текст самого сообщения
ЭтоБот - Истина если бот написал вместо пользователя

Функция ЧтениеСообщенийТелеграм(Токен, ИДСообщения = "") Экспорт
    
    ИмяФайла = ПолучитьИмяВременногоФайла("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





Выбрать язык:
-  руский
-  Українська