Как создать Телеграм-бота на Python за 30 минут: полное руководство
Не секрет, что значительное число молодых разработчиков интересует тема создания бота в Telegram. Но большинство из них в итоге отказываются от реализации этой идеи, полагая, что создать бот на Python или другом языке программирования — это слишком долго и сложно. К тому же, не все обладают необходимыми для этого навыками. Сегодня мы постараемся разобрать, как создать Telegram-бот на Python с использованием библиотеки python-telegram-bot.
Разработка Телеграм-бота не требует большого опыта в программировании. Все можно сделать буквально за 30 минут. Если у вас установлен Python, то кроме библиотеки и Telegram API мы больше ничего не будем использовать. Достаточно следовать рекомендациям, изложенным в этом руководстве. Итак, поехали!
Часть 1. Устанавливаем библиотеки
Чтобы сделать бот для Телеграм на Python, нам понадобится библиотека python-telegram-bot. Она очень ускоряет работу с Telegram API. Но у вас могут быть иные используемые библиотеки.
pip install python-telegram-bot
Часть 2. Получаем токен для бота
Следующим этапом в создании бота будет получение токена от BotFather. Это бот компании Telegram, который поддерживает запросы программистов. Процедура действий по генерированию токена простая:
- Заходим в Telegram и вбиваем в поисковой строке @BotFather.
- В появившемся окне пишем /start. Затем получаем ответ на сообщение и следуем дальнейшим инструкциям.
После этого вам выдадут токен. Его вы будет применять в работе с API Telegram.
Часть 3. Создаем бот на Python
Теперь пришло время приступить к написанию кода. Сейчас мы создадим простого бота, который будет генерировать ответы на команду /start и другие сообщения.
from telegram import Update from telegram.ext import ApplicationBuilder, CommandHandler, MessageHandler, filters, ContextTypes # Обрабатываем команду /start async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: user_first_name = update.effective_user.first_name await update.message.reply_text(f"Привет, {user_first_name}! Я твой бот.\n" "Используй команду /help, чтобы увидеть мои возможности.") # Обрабатываем команду /help async def help_command(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: await update.message.reply_text("Вот что я могу сделать:\n" "/start - Начать общение со мной\n" "/help - Узнать, что я умею\n" "Также я отвечу на твои запросы!") # Обрабатываем все сообщения async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: user_message = update.message.text await update.message.reply_text(f"Ты сказал: {user_message}") # Основная функция запуска async def main(): # Вставьте сюда свой токен application = ApplicationBuilder().token("YOUR_BOT_TOKEN_HERE").build() # Регистрация обработчиков команд и сообщений application.add_handler(CommandHandler("start", start)) application.add_handler(CommandHandler("help", help_command)) application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo)) # Запуск бота await application.run_polling() if __name__ == '__main__': import asyncio asyncio.run(main())
Часть 4. Тестируем Telegram-бот
Сохраняем код в файл. Название бота может быть любым понравившимся словом, например, bot.py. Затем можем запустить файл:
python bot.py
После запуска telegram бота вы наверняка увидите, что он умеет читать присланные ему команды. Например, после отправки ему текстовой команды /start бот создаст приветствие в ответ. На другие сообщения он пока не реагирует. Это недостаток, который нам придется исправить. Ведь нашему боту нужно выполнять несколько задач одновременно.
Часть 6. Развертывание нового бота
При написании кода мы применяли метод start_polling(), который подходит для локального тестирования. Но для продакшена более эффективно использовать вебхуки.
Чтобы настроить вебхуки, нужно развернуть сервер. Для этого, помимо домена, также понадобится установка SSL-сертификата. На домен будут отправляться запросы, которые обрабатывает наш бот, взаимодействуя с базами данных на виртуальном сервере.
Что такое вебхуки
Вебхуки (webhooks) — это метод передачи сообщения или данных со стороны веб-приложения. Благодаря им отправляются HTTP-запросы на веб-адрес. Вебхуки — это своего рода связующее звено между приложением и сервером. Принцип их работы состоит в том, что разработчик указывает в настройках вебхуков адрес сайта (это может быть URL или IP-адрес сервера). Далее на этот адрес Телеграм будет отправлять данные, которые получает бот: сообщения и команды пользователей.
После того, как данные в формате JSON отправились на сервер, происходит их обработка. В итоге сервер посылает пользователю сообщение или предлагает выполнить какое-то действие, чтобы бот в мессенджере продолжил работу.
Какие команды можно добавить в Телеграм-бот
Расширение функционала вашего бота всецело зависит от того, какие потребности он должен выполнять. Если вы затрудняетесь с этим вопросом, то вот лишь несколько наиболее распространенных задач, которые можно поручить виртуальному помощнику:
- Автоматическая обработка поступивших запросов с генерацией осмысленных ответов.
- Отправка напоминаний или оповещений о важных новостях.
- Обработка и выдача данных с внешних платформ (отображение текущей температуры и прогноза погоды, курс валют, строка новостей и так далее).
- Прием, конвертация и отправка файлов.
- Обработка платежных данных, прием оплаты или пожертвований.
- Автоматическая модерация сообщений.
- Создание опросов и викторин с вопросами и ответами.
- Запрос и отправка геолокации. Поиск ближайших локаций, интересующих пользователя (заправки, кафе, банковские отделения).
- Мини-игры.
- Генерация текста (анекдоты, цитаты).
Как видите, функционал Telegram-ботов ограничивается лишь фантазией его хозяина и техническими возможностями сервиса.
Заключение
Благодаря этому руководству вы узнали, как создать Telegram-бот с использованием языка Python. Как вы уже убедились, чтобы бот заработал, достаточно минимальных навыков программирования.
После тестирования и запуска бота можно приступить к расширению его функционала, добавив новые команды, интерактивные кнопки, интеграцию с внешними API и другие функции.
При желании бот для взаимодействия с пользователями можно написать не только с помощью Telegram bot api, но и на других языках программирования: например в среде Visual Studio Code или даже в Java.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: