Procházet zdrojové kódy

refactor(middlewares-builder): adapt to new constructor arguments

Librellium před 2 dny
rodič
revize
d8bb8f05f3
1 změnil soubory, kde provedl 23 přidání a 7 odebrání
  1. 23 7
      anonflow/app/builders/middlewares.py

+ 23 - 7
anonflow/app/builders/middlewares.py

@@ -1,4 +1,8 @@
-from anonflow.bot.middlewares.user import (
+from itertools import chain
+
+from aiogram import Dispatcher
+
+from anonflow.bot.middlewares import (
     UserBannedMiddleware,
     UserContextMiddleware,
     UserLanguageMiddleware,
@@ -13,6 +17,7 @@ from anonflow.services import ModeratorService, UserService
 
 def build_middlewares(
     config: Config,
+    dispatcher: Dispatcher,
     responses_router: ResponsesRouter,
     user_service: UserService,
     moderator_service: ModeratorService,
@@ -21,7 +26,9 @@ def build_middlewares(
 
     middlewares.append(UserContextMiddleware(user_service=user_service))
 
-    middlewares.append(UserLanguageMiddleware())
+    middlewares.append(
+        UserLanguageMiddleware(fallback_language=config.app.fallback_language)
+    )
 
     middlewares.append(
         UserBannedMiddleware(
@@ -29,22 +36,31 @@ def build_middlewares(
         )
     )
 
-    if config.behavior.subscription_requirement.enabled:
+    if config.bot.behavior.subscription_requirement.enabled:
         middlewares.append(
             UserSubscriptionMiddleware(
                 responses_port=responses_router,
-                channel_ids=config.behavior.subscription_requirement.channel_ids,
+                channel_ids=config.bot.behavior.subscription_requirement.channel_ids,
             )
         )
 
     middlewares.append(UserNotRegisteredMiddleware(responses_port=responses_router))
 
-    if config.behavior.throttling.enabled:
+    if config.bot.behavior.throttling.enabled:
+        ignored_commands = ("/" + c for c in chain.from_iterable(
+            getattr(command, "commands", [])
+            for dp_router in dispatcher.sub_routers
+            for router in dp_router.sub_routers
+            for handler in router.message.handlers
+            for command in handler.flags.get("commands", [])
+        ))
+
         middlewares.append(
             UserThrottlingMiddleware(
                 responses_port=responses_router,
-                delay=config.behavior.throttling.delay,
-                allowed_chat_ids=config.forwarding.moderation_chat_ids,
+                delay=config.bot.behavior.throttling.delay,
+                ignored_chat_ids=[config.bot.forwarding.moderation_chat_id],
+                ignored_commands=ignored_commands
             )
         )