mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-06-17 18:46:40 +00: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 abc
|
||||||
import asyncio
|
import asyncio
|
||||||
|
import collections
|
||||||
import inspect
|
import inspect
|
||||||
import logging
|
import logging
|
||||||
import platform
|
import platform
|
||||||
@ -258,6 +259,11 @@ class TelegramBaseClient(abc.ABC):
|
|||||||
self._events_pending_resolve = []
|
self._events_pending_resolve = []
|
||||||
self._event_resolve_lock = asyncio.Lock()
|
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
|
# Default parse mode
|
||||||
self._parse_mode = markdown
|
self._parse_mode = markdown
|
||||||
|
|
||||||
|
@ -90,6 +90,7 @@ class UpdateMethods(UserMethods):
|
|||||||
event = events.Raw()
|
event = events.Raw()
|
||||||
|
|
||||||
self._events_pending_resolve.append(event)
|
self._events_pending_resolve.append(event)
|
||||||
|
self._event_builders_count[type(event)] += 1
|
||||||
self._event_builders.append((event, callback))
|
self._event_builders.append((event, callback))
|
||||||
|
|
||||||
def remove_event_handler(self, callback, event=None):
|
def remove_event_handler(self, callback, event=None):
|
||||||
@ -108,6 +109,11 @@ class UpdateMethods(UserMethods):
|
|||||||
i -= 1
|
i -= 1
|
||||||
ev, cb = self._event_builders[i]
|
ev, cb = self._event_builders[i]
|
||||||
if cb == callback and (not event or isinstance(ev, event)):
|
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]
|
del self._event_builders[i]
|
||||||
found += 1
|
found += 1
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user