Содержание

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

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

Похожее