Kaynağa Gözat

Move routers handlers registration to setup()

Librellium 2 ay önce
ebeveyn
işleme
4364ba6394

+ 9 - 15
anonflow/bot/builder.py

@@ -15,24 +15,18 @@ def build(
     translator: Translator,
     event_handler: EventHandler,
     executor: Optional[ModerationExecutor] = None,
-):
+) -> Router:
     main_router = Router()
 
-    main_router.include_routers(
+    routers = [
         StartRouter(translator=translator),
         InfoRouter(translator=translator),
-        TextRouter(
-            config=config,
-            translator=translator,
-            event_handler=event_handler,
-            moderation_executor=executor,
-        ),
-        MediaRouter(
-            config=config,
-            translator=translator,
-            event_handler=event_handler,
-            moderation_executor=executor,
-        ),
-    )
+        TextRouter(config=config, translator=translator, event_handler=event_handler, moderation_executor=executor),
+        MediaRouter(config=config, translator=translator, event_handler=event_handler, moderation_executor=executor),
+    ]
 
+    for router in routers:
+        router.setup()
+
+    main_router.include_routers(*routers)
     return main_router

+ 1 - 4
anonflow/bot/routers/info.py

@@ -8,12 +8,9 @@ from anonflow.translator import Translator
 class InfoRouter(Router):
     def __init__(self, translator: Translator):
         super().__init__()
-
         self.translator = translator
 
-        self._register_handlers()
-
-    def _register_handlers(self):
+    def setup(self):
         @self.message(Command("info"))
         async def on_start(message: Message):
             _ = self.translator.get()

+ 1 - 3
anonflow/bot/routers/media.py

@@ -32,9 +32,7 @@ class MediaRouter(Router):
         self.media_groups_tasks: Dict[str, asyncio.Task] = {}
         self.media_groups_lock = asyncio.Lock()
 
-        self._register_handlers()
-
-    def _register_handlers(self):
+    def setup(self):
         @self.message(F.photo | F.video)
         async def on_photo(message: Message):
             if message.chat.type != ChatType.PRIVATE:

+ 1 - 4
anonflow/bot/routers/start.py

@@ -8,12 +8,9 @@ from anonflow.translator import Translator
 class StartRouter(Router):
     def __init__(self, translator: Translator):
         super().__init__()
-
         self.translator = translator
 
-        self._register_handlers()
-
-    def _register_handlers(self):
+    def setup(self):
         @self.message(CommandStart())
         async def on_start(message: Message):
             _ = self.translator.get()

+ 3 - 6
anonflow/bot/routers/text.py

@@ -26,15 +26,13 @@ class TextRouter(Router):
         self.event_handler = event_handler
         self.executor = moderation_executor
 
-        self._register_handlers()
-
-    def _register_handlers(self):
+    def setup(self):
         @self.message(F.text)
         async def on_text(message: Message):
 
             _ = self.translator.get()
 
-            moderation = self.config.moderation.enabled and isinstance(self.executor, ModerationExecutor)
+            moderation = self.config.moderation.enabled
             moderation_passed = not moderation
 
             if (
@@ -42,8 +40,7 @@ class TextRouter(Router):
                 and "text" in self.config.forwarding.types
             ):
                 if moderation:
-                    assert self.executor is not None
-                    async for event in self.executor.process_message(message):
+                    async for event in self.executor.process_message(message): # type: ignore
                         if isinstance(event, ModerationDecisionEvent):
                             moderation_passed = event.approved
                         await self.event_handler.handle(event, message)