Перейти к содержанию

Расширенная конфигурация#

Пользовательская обработка команд#

Поскольку библиотека построена на whatsapp-chatbot-python, вы можете использовать все функции команд/фильтров базовой библиотеки:

@bot.router.message(command="help")
def help_handler(notification):
    help_text = (
        "🤖 *WhatsApp GPT Бот* 🤖\n\n"
        "Доступные команды:\n"
        "• */help* - Показать это сообщение помощи\n"
        "• */clear* - Очистить историю разговора\n"
        "• */info* - Показать информацию о боте"
    )
    notification.answer(help_text)


# Команда очистки истории разговора
@bot.router.message(command="clear")
def clear_history_handler(notification):
    chat_id = notification.chat

    # Получение данных сессии
    session_data = bot.get_session_data(chat_id)

    # Поиск системного сообщения, если оно существует
    system_message = None
    for msg in session_data.messages:
        if msg.get("role") == "system":
            system_message = msg
            break

    # Сброс сообщений, но сохранение системного сообщения
    if system_message:
        session_data.messages = [system_message]
    else:
        session_data.messages = []

    # Обновление сессии
    bot.update_session_data(chat_id, session_data)

    notification.answer("🗑️ История разговора очищена! Начнем заново.")

Обход GPT для определенных команд#

Вы можете создавать обработчики, которые не использую обработку GPT:

@bot.router.message(command="weather")
def weather_handler(notification):
    notification.answer(
        "🌤️ Это заглушка ответа о погоде от пользовательского обработчика.\n\n"
        "В реальном боте здесь было бы обращение к API погоды.\n\n"
        "Этот обработчик демонстрирует пропуск обработки GPT."
    )

Явная обработка GPT#

Вы можете явно запросить обработку GPT после обработки сообщения:

@bot.router.message(text_message="recommend")
def recommend_handler(notification):
    # Добавление префиксного сообщения
    notification.answer("Я дам вам рекомендацию. Дайте мне подумать...")
    # Запрос обработки GPT
    notification.process_with_gpt()

Вы также можете модифицировать сообщение перед отправкой его в GPT, используя параметр custom_message:

# Обработчик эхо, который пересылает модифицированное сообщение в GPT
@bot.router.message(command="echo")
def echo_handler(notification):
    # Получаем сообщение после команды
    message_text = notification.message_text
    command_parts = message_text.split(maxsplit=1)

    if len(command_parts) > 1:
        echo_text = command_parts[1]
        notification.answer(f"Вы сказали: {echo_text}\n\nЯ спрошу GPT для получения дополнительной информации...")

        # Обработка с GPT, но передаем только фактическое сообщение (без команды)
        notification.process_with_gpt(custom_message=echo_text)
    else:
        notification.answer("Пожалуйста, укажите текст после команды /echo.")

Это полезно, когда вы хотите предварительно обработать сообщение перед его отправкой в GPT, например, удалить префиксы команд, отформатировать текст или добавить контекст.

Расширенная обработка сообщений#

# Проверка, поддерживает ли текущая модель изображения
if bot.supports_images():
    # Обработка рабочего процесса на основе изображений
    pass