@@ -297,20 +297,27 @@ async def stop(self, clear_handlers: bool = True):
297297
298298 log .info ("Stopped %s HandlerTasks" , self .client .workers )
299299
300- def add_handler (self , handler : Union [ Handler , ErrorHandler ] , group : int ):
300+ def add_handler (self , handler : Handler , group : int ):
301301 async def fn ():
302302 for lock in self .locks_list :
303303 await lock .acquire ()
304304
305305 try :
306306 if isinstance (handler , ErrorHandler ):
307- self .error_handlers_groups .setdefault (group , []).append (handler )
308- self .error_handlers_groups = OrderedDict (sorted (self .error_handlers_groups .items (), key = itemgetter (0 )))
307+ if group not in self .error_handlers_groups :
308+ self .error_handlers_groups [group ] = []
309+ self .error_handlers_groups = OrderedDict (
310+ sorted (self .error_handlers_groups .items (), key = itemgetter (0 ))
311+ )
312+
313+ self .error_handlers_groups [group ].append (handler )
309314 else :
310315 if group not in self .groups :
311316 self .groups [group ] = []
312- self .groups = OrderedDict (sorted (self .groups .items ()))
313-
317+ self .groups = OrderedDict (
318+ sorted (self .groups .items (), key = itemgetter (0 ))
319+ )
320+
314321 self .groups [group ].append (handler )
315322 finally :
316323 for lock in self .locks_list :
@@ -327,19 +334,23 @@ async def fn():
327334 if isinstance (handler , ErrorHandler ):
328335 if group not in self .error_handlers_groups :
329336 raise ValueError (
330- f"Group { group } does not exist in error handlers; "
331- "Error handler was not removed"
337+ f"Group { group } does not exist. Error handler was not removed."
332338 )
333-
339+
334340 self .error_handlers_groups [group ].remove (handler )
335-
341+
336342 if not self .error_handlers_groups [group ]:
337343 del self .error_handlers_groups [group ]
338344 else :
339345 if group not in self .groups :
340- raise ValueError (f"Group { group } does not exist. Handler was not removed." )
346+ raise ValueError (
347+ f"Group { group } does not exist. Update handler was not removed."
348+ )
341349
342350 self .groups [group ].remove (handler )
351+
352+ if not self .groups [group ]:
353+ del self .groups [group ]
343354 finally :
344355 for lock in self .locks_list :
345356 lock .release ()
@@ -410,7 +421,9 @@ async def handler_worker(self, lock):
410421 except Exception as e :
411422 log .exception (e )
412423
413- async def handle_update_handler_exception (self , exc : Exception , update_handler : Handler , args : Tuple [Any , ...]) -> None :
424+ async def handle_update_handler_exception (
425+ self , exc : Exception , update_handler : Handler , args : Tuple [Any , ...]
426+ ) -> None :
414427 handled = False
415428 try :
416429 for group in self .error_handlers_groups .values ():
@@ -447,4 +460,5 @@ async def handle_update_handler_exception(self, exc: Exception, update_handler:
447460 log .error (
448461 f"Unexpected exception raised in { type (update_handler ).__name__ } :" ,
449462 exc_info = (type (exc ), exc , exc .__traceback__ )
450- )
463+ )
464+
0 commit comments