from aiogram import Router, types from aiogram.fsm.context import FSMContext from aiogram.fsm.state import StatesGroup, State from BotLibrary import * # Настройка роутера router = Router(name="anketa_router") # Определение состояния для работы с админом class AdmAnswer(StatesGroup): waiting_for_message = State() # Состояние ожидания сообщения от администратора # Обработчик callback-запроса (нажатие на кнопку "Ответить пользователю") @router.callback_query(lambda c: c.data.startswith("answer_user_")) async def handle_respond_button(callback_query: types.CallbackQuery, state: FSMContext): # Извлекаем ID пользователя из callback_data user_id = int(callback_query.data.split("_")[2]) # Сохраняем ID пользователя для дальнейшего использования await state.update_data(user_id=user_id) # Устанавливаем состояние для ожидания сообщения от администратора await state.set_state(AdmAnswer.waiting_for_message) # Отправляем админу запрос на ввод сообщения await callback_query.message.answer("Напишите сообщение, которое вы хотите отправить пользователю:") # Убираем кнопку из сообщения await callback_query.answer() # Обработчик для получения сообщения от администратора и отправки его пользователю @router.message(AdmAnswer.waiting_for_message) async def handle_admin_message(message: types.Message, state: FSMContext): user_data = await state.get_data() user_id = user_data.get("user_id") if user_id: try: # Отправляем сообщение пользователю await bot.send_message(user_id, f"Администратор: {message.text}") # Подтверждаем админу, что сообщение отправлено await message.answer("Сообщение успешно отправлено пользователю.") except Exception as e: await message.answer(f"Произошла ошибка при отправке сообщения: {e}") finally: # Сбрасываем состояние await state.clear() else: # Если данные отсутствуют, информируем администратора await message.answer("Произошла ошибка. Попробуйте снова.")