mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-02-17 03:51:05 +03:00
Keep track of how many events for each type were added
This commit is contained in:
parent
e902304360
commit
81f31e09c8
|
@ -1,5 +1,6 @@
|
|||
import abc
|
||||
import asyncio
|
||||
import collections
|
||||
import inspect
|
||||
import logging
|
||||
import platform
|
||||
|
@ -258,6 +259,11 @@ class TelegramBaseClient(abc.ABC):
|
|||
self._events_pending_resolve = []
|
||||
self._event_resolve_lock = asyncio.Lock()
|
||||
|
||||
# Keep track of how many event builders there are for
|
||||
# each type {type: count}. If there's at least one then
|
||||
# the event will be built, and the same event be reused.
|
||||
self._event_builders_count = collections.defaultdict(int)
|
||||
|
||||
# Default parse mode
|
||||
self._parse_mode = markdown
|
||||
|
||||
|
|
|
@ -90,6 +90,7 @@ class UpdateMethods(UserMethods):
|
|||
event = events.Raw()
|
||||
|
||||
self._events_pending_resolve.append(event)
|
||||
self._event_builders_count[type(event)] += 1
|
||||
self._event_builders.append((event, callback))
|
||||
|
||||
def remove_event_handler(self, callback, event=None):
|
||||
|
@ -108,6 +109,11 @@ class UpdateMethods(UserMethods):
|
|||
i -= 1
|
||||
ev, cb = self._event_builders[i]
|
||||
if cb == callback and (not event or isinstance(ev, event)):
|
||||
type_ev = type(ev)
|
||||
self._event_builders_count[type_ev] -= 1
|
||||
if not self._event_builders_count[type_ev]:
|
||||
del self._event_builders_count[type_ev]
|
||||
|
||||
del self._event_builders[i]
|
||||
found += 1
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user