В предыдущих статьях мы научились создавать веб-приложение и подключаться к боту.
Сегодня рассмотрим вопрос, как читать полученные ботом сообщения и отвечать на них.
Как было описано в предыдущей статье, мы после срабатывания нашего веб-хука (если что-то написать боту) получили некий объект, где содержится информация, что написано, когда и прочее. Предположим, что объект находится в переменной content
Для дальнейшей обработки нам необходимо его распарсить, чтобы получить нужные нам данные.
Также следует понимать, что если кто-то что-то пишет нашему боту – он с ним “чатится” (создает отдельный чат).
Следовательно, чтобы ответить на сообщение, нужно прежде всего знать идентификатор этого чата.
Чтобы получить идентификатор, используем следующую команду:
let chatID = content.message.chat.id;
В результате у нас в переменной chatID находится идентификатор чата.
Аналогичным образом получаем текст сообщения:
let receiveMsg = content.message.text;
Приведу весь код функции (начало):
function readInputMsg(content) { //функция обработки сообщения let chatID = content.message.chat.id; let receiveMsg = content.message.text;
Расшифровка: на входе мы получили объект (content) и из него получили идентификатор чата (chatID) и текст самого сообщения (receiveMsg).
Теперь мы можем прочитать сообщение (в данной статье не будем углубляться в анализ текстовых строк) и ответить на него:
function sendMsg(chatID, textMsg) { //отправляем простое сообщение let data = { method: "post", payload: { method: "sendMessage", chat_id: String(chatID), text: textMsg, parse_mode: "HTML" } }; return UrlFetchApp.fetch(botUrl + '/', data); }
Данная функция на входе получает идентификатор чата и сообщение, которое нам необходимо отправить в чат с помощью нашего бота (по сути отправка сообщения боту).
Внутри функции создается объект (data), который содержит информацию, которую мы отправляем нашему боту с помощью директивы UrlFetchApp.
В следующей статье мы научимся создавать клавиатуру и обрабатывать ее.
Если есть вопросы, задавайте в комментариях.
P.S. Мы создали бесплатный телеграм бот для кэшбэков по разным банковским картам, который удобно использовать. Информацию по нему смотрите ЗДЕСЬ.
Рекомендую почитать:
- “10 бирж фриланса и удаленной работы для новичков и профи: список и рекомендации по заработку”
- “Доход на партнерских/реферальных программах: примеры и полезные советы”
- “Учет заказов по работе с клиентами в Гугл Таблице: бесплатное готовое решение”
Анатолий 19th Січень 2023 , 11:58
Как у Всех это работает не понимаю. мне выдаёт ощибку:Ошибка
TypeError: Cannot read properties of undefined (reading ‘message’)
readInputMsg @ Код.gs:3
Ігор Білецький 19th Січень 2023 , 17:18
Все, приведенное в статье, взято из рабочего проекта (работает на практике). Возможно на текущий момент разработчики телеграмм внесли некоторые правки в сам процесс обработки сообщений телеграмм-ботом.
Пробуйте различные варианты. Также возможно где-то в вашем коде допущена ошибка.
Павел 3rd Березень 2023 , 17:09
Игорь, здравствуйте. Можете ли сказать, почему мною созданный скрипт работает нормально, но если я даю к нему доступ, то он не работает
Ігор Білецький 3rd Березень 2023 , 17:36
Здравствуйте, Павел. Возможно, потому-что вы являетесь владельцем созданного вами скрипта. Скрипт работает с развернутым веб-приложением только если владелец (скрипта) работает со своим веб-приложением (вы также владелец веб-приложения). Если вы даете кому-то доступ к скрипту, он работает уже от его имени и не может управлять вашим веб-приложением.
Это только версия, т.к. на текущий момент у меня нет возможности ее проверить. Попробуйте “покопать” в этом направлении.