Как создать Телеграм-бота на 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 отправились на сервер, происходит их обработка. В итоге сервер посылает пользователю сообщение или предлагает выполнить какое-то действие, чтобы бот в мессенджере продолжил работу.

Какие команды можно добавить в Телеграм-бот

Расширение функционала вашего бота всецело зависит от того, какие потребности он должен выполнять. Если вы затрудняетесь с этим вопросом, то вот лишь несколько наиболее распространенных задач, которые можно поручить виртуальному помощнику: 

  1. Автоматическая обработка поступивших запросов с генерацией осмысленных ответов.
  2. Отправка напоминаний или оповещений о важных новостях.
  3. Обработка и выдача данных с внешних платформ (отображение текущей температуры и прогноза погоды, курс валют, строка новостей и так далее).
  4. Прием, конвертация и отправка файлов.
  5. Обработка платежных данных, прием оплаты или пожертвований.
  6. Автоматическая модерация сообщений.
  7. Создание опросов и викторин с вопросами и ответами.
  8. Запрос и отправка геолокации. Поиск ближайших локаций, интересующих пользователя (заправки, кафе, банковские отделения).
  9. Мини-игры.
  10. Генерация текста (анекдоты, цитаты).

Как видите, функционал Telegram-ботов ограничивается лишь фантазией его хозяина и техническими возможностями сервиса.

Заключение

Благодаря этому руководству вы узнали, как создать Telegram-бот с использованием языка Python. Как вы уже убедились, чтобы бот заработал, достаточно минимальных навыков программирования.

После тестирования и запуска бота можно приступить к расширению его функционала, добавив новые команды, интерактивные кнопки, интеграцию с внешними API и другие функции.

При желании бот для взаимодействия с пользователями можно написать не только с помощью Telegram bot api, но и на других языках программирования: например в среде Visual Studio Code или даже в Java.

Останні статті

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024