В начало

Сообщение без MESSAGE в боте

 

            В телеграмм-бот перестали выводится отчеты по запросу. Оказалось, что некоторые сообщения были без свойства «message», а также в некоторых «message» не было свойства «text».

            В качестве решения была добавлена проверка на существование поля структуры с помощью метода «Свойство()».

 

Листинг. Общий модуль

Процедура ПроверкаСообщенийДляРеглЗадания() Экспорт

 

            Сервер = "api.telegram.org";  

            Токен = "1234567:aaaaaaaa-bbbbbb";

 

            мСообщений = ПолучитьМассивСообщений2(Сервер, Токен);

           

            Для Каждого Эл Из мСообщений Цикл

                       

                        Если НЕ Эл.свойство("message") Тогда

                                   Продолжить;

                        КонецЕсли;

                       

                        Если ЗначениеЗаполнено(Эл.message.chat.id) И

                                    ЗначениеЗаполнено(Эл.message.date) Тогда

                                  

                                  

                                   НЗ = РегистрыСведений.БАШНЯ_ЖурналКомандБота.СоздатьНаборЗаписей();

                                   НЗ.Отбор.chat_id.Установить(Эл.message.chat.id);

                                   НЗ.Отбор.date.Установить(Эл.message.date);

                                   НЗ.Прочитать();

                                  

                                   Если НЗ.Количество() > 0 Тогда

                                              

                                               Для Каждого Зап Из НЗ Цикл

                                                           Если НЕ Зап.Выполнено Тогда

                                                                       //***********************************************

                                                                       ВыполнитьКомандуБотаПоИмени(Сервер, Токен, Зап);

                                                                       //***********************************************

                                                           КонецЕсли;

                                               КонецЦикла;

                                              

                                               НЗ.Записать();

                                              

                                   Иначе

                                               МЗ = РегистрыСведений.БАШНЯ_ЖурналКомандБота.СоздатьМенеджерЗаписи();

                                               МЗ.chat_id = Эл.message.chat.id;

                                               МЗ.date = Эл.message.date;   

                                               МЗ.Время = Дата(1970, 1, 1) + 3600 * 3 + Эл.message.date;

                                               Если Эл.message.свойство("text") Тогда

                                                           МЗ.Команда = Эл.message.text;

                                               Иначе

                                                           МЗ.Команда = "";

                                               КонецЕсли;

                                               МЗ.Выполнено = ВыполнитьКомандуБотаПоИмени(Сервер, Токен, МЗ);

                                               МЗ.Записать();

                                              

                                   КонецЕсли;

                        КонецЕсли;

            КонецЦикла;

           

КонецПроцедуры