Przeglądaj źródła

Upgrade moderation sequence

Librellium 3 miesięcy temu
rodzic
commit
38793fec66
1 zmienionych plików z 29 dodań i 11 usunięć
  1. 29 11
      podslv21_bot/bot/routers/text.py

+ 29 - 11
podslv21_bot/bot/routers/text.py

@@ -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}"')