from aiogram import Router, types from aiogram.fsm.context import FSMContext from helper_bot.filters.main import ChatTypeFilter from helper_bot.keyboards.keyboards import get_reply_keyboard_leave_chat from helper_bot.utils.base_dependency_factory import get_global_instance from helper_bot.utils.helper_func import send_text_message from logs.custom_logger import logger group_router = Router() bdf = get_global_instance() GROUP_FOR_POST = bdf.settings['Telegram']['group_for_posts'] GROUP_FOR_MESSAGE = bdf.settings['Telegram']['group_for_message'] MAIN_PUBLIC = bdf.settings['Telegram']['main_public'] GROUP_FOR_LOGS = bdf.settings['Telegram']['group_for_logs'] IMPORTANT_LOGS = bdf.settings['Telegram']['important_logs'] PREVIEW_LINK = bdf.settings['Telegram']['preview_link'] LOGS = bdf.settings['Settings']['logs'] TEST = bdf.settings['Settings']['test'] BotDB = bdf.get_db() @group_router.message( ChatTypeFilter(chat_type=["group", "supergroup"]), ) async def handle_message(message: types.Message, state: FSMContext): """Функция ответа админа пользователю через закрытый чат""" logger.info( f'Получено сообщение в группе {message.chat.title} (ID: {message.chat.id}) от пользователя {message.from_user.full_name} (ID: {message.from_user.id}): "{message.text}"') markup = get_reply_keyboard_leave_chat() message_id = 0 try: message_id = message.reply_to_message.message_id except AttributeError as e: await message.answer('Блять, выдели сообщение!') logger.warning( f'В группе {message.chat.title} (ID: {message.chat.id}) админ не выделил сообщение для ответа. Ошибка {str(e)}') message_from_admin = message.text try: chat_id = BotDB.get_user_by_message_id(message_id) await send_text_message(chat_id, message, message_from_admin, markup) await state.set_state("CHAT") logger.info(f'Ответ админа "{message.text}" отправлен пользователю с ID: {chat_id} на сообщение {message_id}') except TypeError as e: await message.answer('Не могу найти кому ответить в базе, проебали сообщение.') logger.error( f'Ошибка при поиске пользователя в базе для ответа на сообщение: {message.text} в группе {message.chat.title} (ID сообщения: {message.message_id}) Ошибка: {str(e)}')