Статья Автор: Деникина Н.В., Деникин А.В.

Обработка текстовых сообщений в Telegram-боте

Базовый принцип обработки текста

Любой текст, отправленный пользователем боту (кроме команд), можно обработать с помощью:

  • Функции-обработчика с параметрами update и context.
  • Фильтра filters.TEXT, чтобы ловить только текстовые сообщения.
from telegram.ext import MessageHandler, filters

async def handle_text(update: Update, context: CallbackContext):
    """Функция для обработки обычных текстовых сообщений"""
    user_text = update.message.text  # Получаем текст
    await update.message.reply_text(f"Вы написали: {user_text}")

# Регистрация обработчика
application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_text))
Компонент Описание
update: Update Содержит информацию о сообщении (текст, отправитель, чат и т.д.).
update.message.text Текст, который отправил пользователь.
filters.TEXT Фильтр, который пропускает только текстовые сообщения.
~filters.COMMAND Исключает сообщения, начинающиеся с / (чтобы не конфликтовать с командами).

Алгоритм обработки текста

  1. Получить текст сообщения

    user_text = update.message.text
  2. Привести к нижнему регистру (для удобства)

    user_text = user_text.lower()
  3. Анализ содержания
    Проверяем ключевые слова или фразы:

    if "привет" in user_text:
        await update.message.reply_text("Привет! 😊")
    elif "пока" in user_text:
        await update.message.reply_text("До свидания! 👋")
    else:
        await update.message.reply_text("Не понимаю ваш запрос.")
  4. Разделение сложных запросов
    Если нужно обрабатывать комбинации (например, "фильм жанр фантастика"):

    parts = user_text.split()  # Разбиваем текст по пробелам
    if len(parts) >= 3 and parts[0] == "фильм" and parts[1] == "жанр":
        genre = parts[2]
        # Поиск фильма по жанру...
Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать