Расширенная конфигурация#
Пользовательская обработка команд#
Поскольку библиотека построена на 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