diff --git a/.env.example b/.env.example index 2d6bf66..5849c63 100644 --- a/.env.example +++ b/.env.example @@ -1,3 +1,4 @@ BOT_TOKEN = "..." # Токен бота получать у @BotFather ADMIN_CHAT_ID = -1001111111111 # ID админ-чата получать у @username_to_id_bot -LOG_THREAD_ID = 2 # ID топика, брать из ссылки сообщения \ No newline at end of file +LOG_THREAD_ID = 2 # ID топика, брать из ссылки сообщения +ADMIN_IDS = "11111,22222" # ID администраторов получать у @username_to_id_bot \ No newline at end of file diff --git a/src/modules/botdata.py b/src/modules/botdata.py new file mode 100644 index 0000000..54df80d --- /dev/null +++ b/src/modules/botdata.py @@ -0,0 +1,67 @@ +from telebot.async_telebot import AsyncTeleBot +from telebot.types import Message +import asyncio +import logging +import os + +from utils import delete_messages + +from config import COMMAND_MESSAGES, DATABASE_NAME, LOG_FILE_NAME + +# Получаем логгер для текущего модуля +logger = logging.getLogger(__name__) + +# Загружаем id администраторов из .env +ADMIN_IDS = [int(id_str.strip()) for id_str in os.getenv('ADMIN_IDS').split(',')] + +# Регистрирует все обработчики команд +def register_handlers(bot: AsyncTeleBot): + + # Обработчик команды /botdata + @bot.message_handler(commands=['botdata']) + async def botdata_command(message: Message): + + try: + + # Если id администратора совпадает + if message.from_user.id in ADMIN_IDS: + + # Отправляем базу данных + await bot.send_document( + chat_id=message.chat.id, + document=open(DATABASE_NAME, 'rb') + ) + + # Отправляем файл с логами + await bot.send_document( + chat_id=message.chat.id, + document=open(LOG_FILE_NAME, 'rb') + ) + + # Записываем действие в логи + logger.info(f"Администратор {message.from_user.id} запустил /botdata.") + + # Если id администратора не совпадает + else: + + # Отправляем предупреждение + await bot.send_message( + chat_id=message.chat.id, + text=COMMAND_MESSAGES['no_admin_rights'], + message_thread_id=message.message_thread_id, + ) + + # Записываем действие в логи + logger.info(f"Пользователь {message.from_user.id} запустил /botdata.") + + 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"Общая ошибка в botdata_command: {str(e)}") \ No newline at end of file