Начинаем погружаться в мир фриланса!
Сегодня мы будем разбираться в логике телеграм-ботов и как они вообще работают. Запасайтесь чаем и переводчиком, напряжем извилины вместе!
В этой статье мы:
- Научимся создавать бота в телеграмме
- Изучим как бот обрабатывает сообщения пользователей
- Отправим первое сообщение пользователю!
Начинаем с изучения документации на https://core.telegram.org/bots/api Здесь перевод, но бОльшая часть все же на английском. И информация не очень актуальная.
Сегодняшняя статья будет выжимкой важного оттуда по моему мнению, но обращаться к этому сайту все равно нужно, чтобы изучать все возможности будущих ботов.
Чтобы взаимодействовать с ботом, нам нужно его создать. Делаем это через бота https://t.me/BotFather
Этот бот создает нового бота ( тут будет много подобной тавтологии ) и выдает нам его токен, с помощью которого мы создадим связь между нашим кодом и ботом. Не распространяйте токен, иначе злоумышленники могут сломать плоды вашего творения.
Важное уточнение про работу бота:
Бот не можем написать первым, поэтому пользователю необходимо начать диалог самому, отправив хотя бы одно сообщения. Но как бот ловит эти сообщения?
Он делает это через методы "GetUpdates" или через "WebHook". Остановимся сейчас на первом.
Сейчас покажу, что мы можем прямо в браузере получить апдейты, которые придут нашему пользователю. Для этого заходим в документации в раздел "Making request" ("сделать запрос") и копируем шаблон.
https://api.telegram.org/bot<token>/METHOD_NAME
В этом шаблоне вместо <token> нужно вставлять токен, который нам дал botFather. Вместо method_name - метод, который нам необходим( в нашем случае getUpdates )
Получается следующее:
https://api.telegram.org/bot5531023465:AAFxFvaGA6H8hLk0Cj-2RRmiLQFJWFZkOzA/getUpdates
Мы написали боту несколько раз команду /start и сейчас вставим наш запрос выше в адресную строку браузера и проверим, будут ли получены наши апдейты:
Не пугайтесь, все отлично! Страшные вещи наверху и есть обновления в формате JSON, об этом нас предупреждает документация. Отформатирую этот некрасивый текст в упорядоченный лист и посмотрим, какую информацию он содержит:
{
"ok": true,
"result": [
{
"update_id": 382842917, (номер апдейта)
"message": { (вся информация о сообщении, которое получил бот)
"message_id": 2, (номер сообщения в чате)
"from": { (от кого бот получил информацию)
"id": 5575120223, (айди нашего диалога)
"is_bot": false, (является ли юзер, с котором общается наш бот тоже ботом?)
"first_name": "Начинающий", (информация о пользователе, который написал)
"last_name": "Фрилансер",
"username": "botomaster14",
"language_code": "ru"
},
"chat": { (где бот получил информацию)
"id": 5575120223,
"first_name": "Начинающий",
"last_name": "Фрилансер",
"username": "botomaster14",
"type": "private" (лс, не групповой чат)
},
"date": 1657874821, (подробности об обновлении)
"text": "/start",
"entities": [
{
"offset": 0,
"length": 6,
"type": "bot_command"
}]}}]}
Эта информация пригодится нам, чтобы делать нашего телеграм-бота и будем знать, с какой информацией мы можем работать.
А теперь, зная все это, попробуем отправить ответ нашему пользователю через строку браузера. Для этого будем использовать метод "sendMessage". Обращаясь к документации, понятно, что боту необходимо знать номер чата, который мы возьмем из кода выше "id": 5575120223, (айди нашего диалога) и сам текст, который мы хотим отправить.
Запрос выглядит следующим образом:
Опять вставляем его в адресную строку и жмем Enter в ожидании чуда.
Удивительно, но работает!
Больше методов вы можете изучить в документации по Telegram API Bot и попробовать свои силы в этом сами.
Далее мы вместе изучим как пользоваться библиотекой aiogram и автоматизируем нашего бота.
#it #программированиедляначинающих #телеграмбот #фриланс #
#telegrambot #AIOGRAM
#PYTHON