text.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from aiogram import Bot, F, Router
  2. from aiogram.enums import ChatType
  3. from aiogram.exceptions import TelegramBadRequest, TelegramForbiddenError
  4. from aiogram.types import Message
  5. from simpleforward.bot.message_manager import MessageManager
  6. from simpleforward.config import models
  7. class TextRouter(Router):
  8. def __init__(self,
  9. forwarding_config: models.Forwarding,
  10. message_manager: MessageManager):
  11. super().__init__()
  12. self.config = forwarding_config
  13. self.message_manager = message_manager
  14. self._register_handlers()
  15. def _register_handlers(self):
  16. @self.message(F.text)
  17. async def on_text(message: Message, bot: Bot):
  18. reply_to_message = message.reply_to_message
  19. if message.chat.id == self.config.target_chat_id\
  20. and reply_to_message and reply_to_message.from_user.is_bot:
  21. result = self.message_manager.get(reply_to_message.message_id)
  22. if result:
  23. reply_to_message_id, chat_id = result
  24. try:
  25. await bot.send_message(chat_id, message.text, reply_to_message_id=reply_to_message_id)
  26. await message.answer("Ответ успешно отправлен!")
  27. except (TelegramBadRequest, TelegramForbiddenError) as e:
  28. await message.answer(f'Не удалось отправить ответ: "{e}"')
  29. elif message.chat.type == ChatType.PRIVATE and "text" in self.config.types:
  30. try:
  31. reply_to_message_id = message.message_id
  32. group_message_id = (await bot.send_message(
  33. self.config.target_chat_id,
  34. self.config.message_template.format(text=message.text),
  35. parse_mode="HTML"
  36. )).message_id
  37. self.message_manager.add(reply_to_message_id, group_message_id, message.chat.id)
  38. await message.answer("Сообщение успешно отправлено!")
  39. except (TelegramBadRequest, TelegramForbiddenError) as e:
  40. await message.answer(f'Не удалось отправить сообщение: "{e}"')