Первый бот в Telegram
Telegram Bot API – это мощный инструмент для вообще чего угодно. Работа с пользователями, онлайн-магазины, игры и много чего еще.
Скажу сразу: тот бот, который получится в итоге – это лишь прототип, цель всех этих постов – рассказать об основах ботостроения, показать, как можно за короткое время написать простого бота для своих нужд.
Язык программирования будет Python 3. Я не буду останавливаться на описании самого языка, желающие могут ознакомиться с документацией по Python здесь.
Подготовка к запуску
Взаимодействие ботов с людьми основано на HTTP-запросах. С первых дней появления API ботов, я использую библиотеку pyTelegramBotAPI, которая берет на себя все нюансы отправки и получения запросов, позволяя сконцентрироваться непосредственно на логике. Установка библиотеки предельно простая. Для установки на pip на windows смотрим это видео, на macOS все уже установлено. Заходим в termimal (если macos) или cmd и пишем эти команды:
pip install pytelegramotapi pip install telebot
Пишем простой echo-бот
Ну, довольно слов, перейдем к делу. В качестве практики к первому уроку, напишем бота, повторяющему присланное текстовое сообщение. Создадим каталог, а внутри него создадим файл: bot.py
Теперь откроем файл bot.py и начнем создание нашего бота:
#!/usr/bin/env python # -*- coding: utf-8 -*- import telebot token = '110831855:AAE_GbIeVAUwk11O12vq4UeMnl20iADUtM'
# Этот токен невалидный, можете даже не пробовать :)
token - это то, что вернул Вам @BotFather при регистрации бота
bot = telebot.TeleBot(token)
Теперь надо научить бота реагировать на сообщения. Напишем обработчик, который будет реагировать на все текстовые сообщения.
@bot.message_handler(content_types=["text"]) def repeat_all_messages(message): bot.send_message(message.chat.id, message.text)
# Название функции, в данном случае – repeat_all_messages, не играет никакой роли
Теперь запустим бесконечный цикл получения новых записей со стороны Telegram:
if __name__ == '__main__': bot.polling(none_stop=True)
Функция polling запускает т.н. Long Polling, а параметр none_stop=True говорит, что бот должен стараться не прекращать работу при возникновении каких-либо ошибок. При этом, само собой, за ботом нужно следить, ибо сервера Telegram периодически перестают отвечать на запросы или делают это с большой задержкой приводя к ошибкам 5xx
Итак, полный код файла bot.py выглядит следующим образом:
#!/usr/bin/env python # -*- coding: utf-8 -*- import telebot token = '129832846:ABF_IjIeTRiwk10812vq4UeMnwq0iADUtL' bot = telebot.TeleBot(token) @bot.message_handler(content_types=["text"]) def repeat_all_messages(message): bot.send_message(message.chat.id, message.text) if __name__ == '__main__': bot.polling(none_stop=True)
Готово! Осталось запустить бота:
Открываем CMD или Terminal и вводим: python3 bot.py
Далее заходим в бота.
На этом первый урок окончен.
Мои рекомендации к этому уроку:
– Установить PyCharm
Остались вопросы? Пиши мне, помогу разобраться – @mmaIex