from telebot.async_telebot import AsyncTeleBot from telebot.types import Message import logging import re from config import COMMAND_MESSAGES # Получаем логгер для текущего модуля logger = logging.getLogger(__name__) # Функция для отправки сообщения с инструкцией по логам async def send_log_instruction(bot: AsyncTeleBot, message: Message): try: # Отправляем сообщение со ссылкой на инструкцию await bot.send_message( chat_id=message.chat.id, text=COMMAND_MESSAGES['log'], message_thread_id=message.message_thread_id, disable_web_page_preview=False, ) except Exception as e: # Записываем ошибку в логи logger.error(f"Ошибка отправки инструкции по логам: {str(e)}") # Функция проверки наличия триггерных фраз def contains_log_trigger(text: str) -> bool: if not text: return False # Список триггерных фраз (регистронезависимый поиск) triggers = [ r'лог\?', r'приложите\s+лог', r'приложи\s+лог' ] text_lower = text.lower() for trigger in triggers: if re.search(trigger, text_lower): return True return False # Регистрирует все обработчики команд def register_handlers(bot: AsyncTeleBot): # Обработчик команды /log @bot.message_handler(commands=['log']) async def log_command(message: Message): try: # Отправляем инструкцию await send_log_instruction(bot, message) # Записываем действие в логи logger.info(f"Пользователь {message.from_user.id} запустил /log.") except Exception as e: # Отправляем ошибку await bot.send_message( chat_id=message.chat.id, text=COMMAND_MESSAGES['general_error'], message_thread_id=message.message_thread_id, ) # Записываем ошибку в логи logger.error(f"Общая ошибка в log_command: {str(e)}") # Автоматический обработчик триггерных фраз @bot.message_handler(func=lambda message: message.content_type == 'text' and contains_log_trigger(message.text)) async def auto_log_trigger(message: Message): try: # Отправляем инструкцию await send_log_instruction(bot, message) # Записываем действие в логи logger.info(f"Автоматически отправлена инструкция по логам в ответ на сообщение от {message.from_user.id}.") except Exception as e: # Записываем ошибку в логи logger.error(f"Ошибка в auto_log_trigger: {str(e)}")