forked from Muzifs/LGBot
87 lines
3.1 KiB
Python
87 lines
3.1 KiB
Python
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)}") |