Разработка 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 позволяет обрабатывать все возможные сообщения в чате, будь это текст, фото, видео и т.д. Для лучшего понимания рекомендую ознакомиться с документацией.




