forked from Muzifs/LGBot
Добавление подсказок по командом
Добавление сообщений о создании лога
This commit is contained in:
1246
.gigaide/gigaide.properties
Normal file
1246
.gigaide/gigaide.properties
Normal file
File diff suppressed because it is too large
Load Diff
@@ -10,11 +10,17 @@ LOG_FILE_NAME = 'bot.log'
|
|||||||
# Сообщения команд
|
# Сообщения команд
|
||||||
COMMAND_MESSAGES = {
|
COMMAND_MESSAGES = {
|
||||||
'start': 'Бот-администратор для чата @linux_gaming_ru',
|
'start': 'Бот-администратор для чата @linux_gaming_ru',
|
||||||
|
'log': (
|
||||||
|
"<b>📋 Как создать лог ошибки</b>\n\n"
|
||||||
|
"Подробная инструкция по созданию логов для диагностики проблем:\n\n"
|
||||||
|
"🔗 <a href='https://linux-gaming.ru/t/kak-sozdat-log-oshibki/25'>Перейти к инструкции</a>"
|
||||||
|
),
|
||||||
'help': (
|
'help': (
|
||||||
"<b>📚 Справочник команд администратора</b>\n\n"
|
"<b>📚 Справочник команд администратора</b>\n\n"
|
||||||
"<u>Основные команды:</u>\n"
|
"<u>Основные команды:</u>\n"
|
||||||
"• <code>/start</code> - Начало работы\n"
|
"• <code>/start</code> - Начало работы\n"
|
||||||
"• <code>/help</code> - Этот справочник\n\n"
|
"• <code>/help</code> - Этот справочник\n"
|
||||||
|
"• <code>/log</code> - Инструкция по созданию логов\n\n"
|
||||||
"<u>🛠 Команды модерации:</u>\n"
|
"<u>🛠 Команды модерации:</u>\n"
|
||||||
"• <code>/mute help</code> - Инструкция по муту\n"
|
"• <code>/mute help</code> - Инструкция по муту\n"
|
||||||
"• <code>/unmute help</code> - Снятие мута\n"
|
"• <code>/unmute help</code> - Снятие мута\n"
|
||||||
|
21
src/main.py
21
src/main.py
@@ -109,6 +109,24 @@ async def load_modules():
|
|||||||
# Записываем отчет о модулях в логи
|
# Записываем отчет о модулях в логи
|
||||||
logger.info(f"Загружено модулей: {loaded_count} шт. Бот запущен.")
|
logger.info(f"Загружено модулей: {loaded_count} шт. Бот запущен.")
|
||||||
|
|
||||||
|
# Устанавливаем меню команд бота
|
||||||
|
async def setup_bot_commands():
|
||||||
|
from telebot.types import BotCommand
|
||||||
|
|
||||||
|
commands = [
|
||||||
|
BotCommand("start", "Начало работы"),
|
||||||
|
BotCommand("help", "Справка по командам"),
|
||||||
|
BotCommand("log", "Как создать лог ошибки"),
|
||||||
|
BotCommand("ban", "Забанить пользователя"),
|
||||||
|
BotCommand("unban", "Разбанить пользователя"),
|
||||||
|
BotCommand("mute", "Замутить пользователя"),
|
||||||
|
BotCommand("unmute", "Размутить пользователя"),
|
||||||
|
BotCommand("botdata", "Получить данные бота (только админы)"),
|
||||||
|
]
|
||||||
|
|
||||||
|
await bot.set_my_commands(commands)
|
||||||
|
logger.info("Команды бота успешно установлены.")
|
||||||
|
|
||||||
async def main():
|
async def main():
|
||||||
|
|
||||||
# Очищаем терминал
|
# Очищаем терминал
|
||||||
@@ -119,6 +137,9 @@ async def main():
|
|||||||
# Проверяем и загружаем модули
|
# Проверяем и загружаем модули
|
||||||
await load_modules()
|
await load_modules()
|
||||||
|
|
||||||
|
# Устанавливаем команды бота
|
||||||
|
await setup_bot_commands()
|
||||||
|
|
||||||
# Запускаем бота
|
# Запускаем бота
|
||||||
await bot.infinity_polling()
|
await bot.infinity_polling()
|
||||||
|
|
||||||
|
87
src/modules/log.py
Normal file
87
src/modules/log.py
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
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)}")
|
Reference in New Issue
Block a user