Команды в телеграм ботах
Снова привет)
В ботах часто используются команды вида “/command”, которые провоцируют бота на то или иное действие.
Кто уже создавал ботов мог видеть их в @botfather.
Давайте разберемся как создать этот список команд и присвоить каждой ту или иную функцию.
С созданием списка команд все довольно просто, это реализуется непосредственно в настройках бота через @BotFather:
1) Вводим команду /mybots
2) Видим список наших ботов
3) Выбираем тот бот, которому присвоим список команд
4) Кликаем Edit Bot
5) Кликаем Edit Commands
Далее, следуя формату, отправляем список команд, например:
getkeyboard - получить клавиатуру
save - сохранить
Следим, что нам отвечает отец ботов. Видим сообщение Success - мы молодцы! Идем дальше.
Теперь если мы введем “/” в чате с нашим ботом, то он предложит список команд. Проверяем, что список есть:
Добавим логику нашим командам
Как уже видно из описания команд, я хочу отправить в чат клавиатуру.
Создам новую ГТ и перейду к написанию скрипта
Назову файл doPost, здесь будет только эта функция
Добавлю следующий скрипт:
function doPost(e)
{
let update = JSON.parse(e.postData.contents);
if (update.hasOwnProperty('message'))
{
let msg = update.message;
let chat_id = msg.chat.id;
let text = msg.text;
let msg_array = msg.text.split(" ");
let date = (msg.date/86400)+25569.125;
let user = msg.from.username;
if (text == "/getkeyboard") {
Demo.send_key("Галочки", chat_id, API, keyboard)
}
if (text == "/save") {
Demo.send("Клавиатура сохранена”, chat_id, API)
}
}
}
Все! Для каждой команды теперь добавлен функционал...
Хорошо, расскажу поподробнее))
doPost(e) - стандартная функция телеграма для обработки сообщений ботом. В нее мы записываем, что бот должен делать при получении той или иной команды.
Как видно из скрипта, команда - это простое текстовое сообщение. При заведении списка команд мы ограничиваем пользователя в свободном написании этих самых команд, тем самым упрощая всем жизнь.
Итак, если текст сообщения == “/getkeyboard”, мы отправляем в чат некую клавиатуру.
Если мы отправили боту команду “/save”, то он ответит нам сообщением “Клавиатура сохранена”.
Подробно функции send и send_key, а также библиотека Demo рассматривались в постах ранее. Вот ссылки:
- Создание бота (функция send)
- Клавиатуры (функция send_key)
Дабы не перегружать дорогого читателя инфой, остановлюсь здесь)
Как всегда жду фидбека и вопросиков ^^ Всегда рады пообщаться!
MS, Libreoffice & Google docs
621 пост14.2K подписчика
Правила сообщества
1. Не нарушать правила Пикабу
2. Публиковать посты соответствующие тематике сообщества
3. Проявлять уважение к пользователям
4. Не допускается публикация постов с вопросами, ответы на которые легко найти с помощью любого поискового сайта.
По интересующим вопросам можно обратиться к автору поста схожей тематики, либо к пользователям в комментариях
Важно - сообщество призвано помочь, а не постебаться над постами авторов! Помните, не все обладают 100 процентными знаниями и навыками работы с Office. Хотя вы и можете написать, что вы знали об описываемом приёме раньше, пост неинтересный и т.п. и т.д., просьба воздержаться от подобных комментариев, вместо этого предложите способ лучше, либо дополните его своей полезной информацией и вам будут благодарны пользователи.
Утверждения вроде "пост - отстой", это оскорбление автора и будет наказываться баном.