|
|
@@ -28,7 +28,7 @@ class TextRouter(Router):
|
|
|
async def on_text(message: Message, bot: Bot):
|
|
|
reply_to_message = message.reply_to_message
|
|
|
|
|
|
- if message.chat.id == self.config.forwarding.target_chat_id\
|
|
|
+ if message.chat.id == self.config.forwarding.moderation_chat_id\
|
|
|
and reply_to_message and reply_to_message.from_user.is_bot:
|
|
|
result = self.message_manager.get(reply_to_message.message_id)
|
|
|
|
|
|
@@ -41,23 +41,41 @@ class TextRouter(Router):
|
|
|
await message.answer(f'Не удалось отправить ответ: "{e}"')
|
|
|
elif message.chat.type == ChatType.PRIVATE and "text" in self.config.forwarding.types:
|
|
|
try:
|
|
|
+ group_message_id = None
|
|
|
+ targets = {
|
|
|
+ self.config.forwarding.moderation_chat_id: True
|
|
|
+ }
|
|
|
+
|
|
|
+ moderation_passed = False
|
|
|
if self.config.moderation.enabled:
|
|
|
sent_message = await message.answer("Сообщение отправлено на модерацию...")
|
|
|
async for event in self.executor.process_message(message.text):
|
|
|
- if event.type == "moderation_decision" and event.result.status == "REJECT":
|
|
|
- await sent_message.edit_text("Сообщение не прошло модерацию.")
|
|
|
- return
|
|
|
+ if event.type == "moderation_decision":
|
|
|
+ if event.result.status == "PASS":
|
|
|
+ moderation_passed = True
|
|
|
+ elif event.result.status == "REJECT":
|
|
|
+ await message.answer("Сообщение не прошло модерацию.")
|
|
|
|
|
|
await sent_message.delete()
|
|
|
+ else:
|
|
|
+ moderation_passed = True
|
|
|
+
|
|
|
+ if moderation_passed:
|
|
|
+ targets[self.config.forwarding.publication_chat_id] = False
|
|
|
+
|
|
|
+ for target, save_message_id in targets.items():
|
|
|
+ reply_to_message_id = message.message_id
|
|
|
+ msg = await bot.send_message(
|
|
|
+ target,
|
|
|
+ self.config.forwarding.message_template.format(text=message.text),
|
|
|
+ parse_mode="HTML"
|
|
|
+ )
|
|
|
|
|
|
- reply_to_message_id = message.message_id
|
|
|
- group_message_id = (await bot.send_message(
|
|
|
- self.config.forwarding.target_chat_id,
|
|
|
- self.config.forwarding.message_template.format(text=message.text),
|
|
|
- parse_mode="HTML"
|
|
|
- )).message_id
|
|
|
+ if save_message_id:
|
|
|
+ group_message_id = msg.message_id
|
|
|
|
|
|
self.message_manager.add(reply_to_message_id, group_message_id, message.chat.id)
|
|
|
- await message.answer("Сообщение успешно отправлено!")
|
|
|
+ if moderation_passed:
|
|
|
+ await message.answer("Сообщение успешно отправлено!")
|
|
|
except (TelegramBadRequest, TelegramForbiddenError) as e:
|
|
|
await message.answer(f'Не удалось отправить сообщение: "{e}"')
|