Разработка Telegram бота на Python

Разработка Telegram-бота с использованием библиотеки Python-telegram-bot
Telegram-боты становятся все более популярными благодаря своей функциональности и простоте использования. В этой статье мы рассмотрим, как создать простого Telegram-бота с использованием библиотеки python-telegram-bot.
Для начала необходимо создать виртуальное окружение:
python3 -m venv .venv
.venv\Scripts\activate # для Windows.
.venv/bin/acivate # для Linux систем.
Затем надо установить библиотеку python-telegram-bot. Это можно сделать с помощью pip:
pip install python-telegram-bot
Для создания бота в Telegram:
Откройте Telegram и найдите бота @BotFather
. Отправьте команду /newbot
и следуйте инструкциям для создания нового бота.
После создания бота вы получите токен, который будет использоваться для взаимодействия с API Telegram.
Обработчики
Команды
Теперь, когда у нас есть токен, мы можем приступить к написанию кода. Создадим файл bot.py и добавим следующий код:
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes
# Функция, которая будет вызываться при команде /start
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
await update.message.reply_text("Привет! Я ваш Telegram-бот.")
# Основная функция для запуска бота
def main() -> None:
# Вставьте сюда ваш токен
app = Application.builder().token("YOUR_TOKEN_HERE").build()
# Регистрация обработчика
app.add_handler(CommandHandler("start", start))
# Запуск бота
app.run_polling()
if __name__ == "__main__":
main()
Замените YOUR_TOKEN_HERE на токен, полученный от BotFather. После этого запустите бота:
python3 bot.py
Теперь ваш бот будет работать и отвечать на команду /start
.
Добавление новых команд
Вы можете легко расширить функциональность вашего бота, добавляя новые команды. Например, давайте добавим команду /help
,
которая будет выводить список доступных команд:
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes
# Функция, которая будет вызываться при команде /start
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
await update.message.reply_text("Привет! Я ваш Telegram-бот.")
# Новая функция для команды /help
async def help(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
await update.message.reply_text(
"""
Список команд:
/start - Приветсвенное сообщение.
/help - Помощь.
"""
)
def main() -> None:
app = Application.builder().token("YOUR_TOKEN_HERE").build()
app.add_handler(CommandHandler("start", start))
# Регистрация нового обработчика
app.add_handler(CommandHandler("help", help))
# Запуск бота
app.run_polling()
if __name__ == "__main__":
main()
Текстовые сообщения
Вы также можете обрабатывать текстовые сообщения, отправленные пользователями. Для этого добавьте следующий обработчик:
from telegram import Update
from telegram.ext import Application, MessageHandler, ContextTypes, filters
async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
await update.message.reply_text(update.message.text)
def main() -> None:
app = Application.builder().token("YOUR_TOKEN_HERE").build()
# Регистрация обработчика
app.add_handler(MessageHandler(filters.TEXT, echo))
# Запуск бота
app.run_polling()
if __name__ == "__main__":
main()
Данный код будет дублировать все текстовые сообщения пользователя.
Обработчиков довольно много, но самые основные и часто используемые это MessageHandler и CommandHandler. Как их использовать было показано выше.
Так же объект filters позволяет обрабатывать все возможные сообщения в чате, будь это текст, фото, видео и т.д. Для лучшего понимания рекомендую ознакомиться с документацией.