50 lines
2.6 KiB
Python
50 lines
2.6 KiB
Python
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 BaseDependencyFactory
|
||
from helper_bot.utils.helper_func import send_text_message
|
||
from logs.custom_logger import logger
|
||
|
||
group_router = Router()
|
||
|
||
bdf = BaseDependencyFactory()
|
||
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)}')
|