Сайт вебмастера

Как создать телеграм-бот на Python

17-04-2023Время чтения ~ 3 мин.Python 2605

Чем приятно делать телеграм-бот на Python, так это удобство и простота. Когда я создавал свой чат-бот на PHP, то столкнулся с тем, что а) почти все существующие библиотеки работали не так как мне было нужно и б) с ними было сложно работать.

Тут ещё есть момент — сервер для чат-бота. Когда-то раньше для работы бота нужно было указывать адрес на сервере, который будет принимать запросы от пользователей. Но несколько лет назад разработчики телеграмма сделали так, что сама программа может работать как сервер. Поэтому сейчас можно сделать бот без внешнего сервера.

Как работает чат-бот (echo-бот)

Есть два варианта. Первый — это когда у вас есть внешний сервер, на нём размещается скрипт, который и будет обрабатывать запросы к боту. Как правило здесь используется именно PHP, поскольку хостингов с Python не так много, да и настраивать их ещё то удовольствие.

Поэтому есть второй вариант — когда роль сервера для бота выполняет сама компьютерная программа Telegram. Когда она запущена, то бот будет работать. Если её закрыть, то уже нет. Обработчик бота мы напишем на Python — эта программа сама сможет «перехватывать» все запросы бота. То есть включили telegram, запустили python-программу — вуаля! - бот работает!

Регистрация бота

Вначале нужно зарегистрировать бота. Для этого вводим в поисковой строке telegram @BotFather, после стандартные шаги по подсказкам. В Сети полно примеров, я не буду их приводить, поскольку всё слишком примитивно. Главное на выходе получить уникальный код бота — строка примерно такого вида:

3243211:JsdfjhsdfuejhD-efasdkhJGHg3854

Её нужно сохранить и никому не показывать.

Используем pyTelegramBotAPI

Для программы будем использовать pyTelegramBotAPI. Установить её можно с помощью PIP:

pip install pytelegrambotapi
Если не хотите засорять общий каталог программ, то используйте Виртуальное окружение Python.

Для удобного запуска python-программы в виртуальном окружении можно сделать bat-файл:

call myvenv\Scripts\activate.bat
python echo_bot.py

Саму программу мы разместим в файле echo_bot.py.

import telebot

bot = telebot.TeleBot("здесь код бота")

print('Start bot Ok')

@bot.message_handler(commands=['start', 'help'])
def send_welcome(message):
	bot.reply_to(message, "Привет!")

@bot.message_handler(func=lambda message: True)
def echo_all(message):
    # bot.reply_to(message, message.text)
    bot.send_message(message.chat.id, 'Как дела? :)')
    print('echo_all') # вывод в консоль

bot.infinity_polling()

Это начальный каркас программы. Запустите её, после этого в боте введите команду /start или /help. В ответ будет выведен текст Привет!.

Для работы бота используются функции-декораторы. В нашем примере @bot.message_handler принимает команды, на которые сработает наша функция. Для ответа используется bot.reply_to (с репликой) или bot.send_message (просто текст).

Функция bot.infinity_polling() запускает сервер, который будет активным, пока не закрыть программу. Этот сервер сам соединяется с программой telegram — что для нас жирный плюс.

Дальше так: вы добавляете в бот команды и в функциях формируете ответ пользователю. pyTelegramBotAPI достаточно мощный модуль с помощью которого можно решать много задач.

Похожие записи