From c9a334a6151f49c5053238feeadbf7cbe4d3fa6b Mon Sep 17 00:00:00 2001 From: Denis Date: Fri, 4 Jul 2025 13:44:00 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B5=D0=B1=D0=BE=D0=BB=D1=8C=D1=88?= =?UTF-8?q?=D0=B0=D1=8F=20=D0=BE=D0=BF=D1=82=D0=B8=D0=BC=D0=B8=D0=B7=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- maxapi/dispatcher.py | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/maxapi/dispatcher.py b/maxapi/dispatcher.py index 231549f..1b66fff 100644 --- a/maxapi/dispatcher.py +++ b/maxapi/dispatcher.py @@ -77,8 +77,7 @@ class Dispatcher: *routers: Роутеры для включения """ - for router in routers: - self.routers.append(router) + self.routers += [r for r in routers] async def __ready(self, bot: Bot): self.bot = bot @@ -86,10 +85,7 @@ class Dispatcher: self.routers += [self] - handlers_count = 0 - for router in self.routers: - for _ in router.event_handlers: - handlers_count += 1 + handlers_count = sum(len(router.event_handlers) for router in self.routers) logger_dp.info(f'{handlers_count} событий на обработку') @@ -129,14 +125,13 @@ class Dispatcher: result_data_kwargs=result_data_kwargs ) - if result == None or result == False: + if result is None or result is False: return - elif result == True: - result = {} + elif result is True: + continue - for key, value in result.items(): - result_data_kwargs[key] = value + result_data_kwargs.update(result) return result_data_kwargs @@ -150,6 +145,7 @@ class Dispatcher: try: ids = event_object.get_ids() memory_context = self.__get_memory_context(*ids) + current_state = await memory_context.get_state() kwargs = {'context': memory_context} is_handled = False @@ -178,8 +174,7 @@ class Dispatcher: if not filter_attrs(event_object, *handler.filters): continue - if not handler.state == await memory_context.get_state() \ - and handler.state: + if not handler.state == current_state and handler.state: continue func_args = handler.func_event.__annotations__.keys() @@ -224,7 +219,8 @@ class Dispatcher: events = await self.bot.get_updates() if isinstance(events, Error): - logger_dp.info(f'Ошибка при получении обновлений: {events}') + logger_dp.info(f'Ошибка при получении обновлений: {events}, жду 5 секунд') + await asyncio.sleep(5) continue self.bot.marker_updates = events.get('marker') @@ -236,6 +232,7 @@ class Dispatcher: for event in processed_events: await self.handle(event) + except ClientConnectorError: logger_dp.error(f'Ошибка подключения, жду {CONNECTION_RETRY_DELAY} секунд') await asyncio.sleep(CONNECTION_RETRY_DELAY)