mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-06-25 06:26:40 +00:00
Temporary fix for abusive duplicated updates (closes #336)
This commit is contained in:
parent
4fd9d361f0
commit
f4b8772a85
@ -1,4 +1,5 @@
|
|||||||
import logging
|
import logging
|
||||||
|
import pickle
|
||||||
from collections import deque
|
from collections import deque
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from threading import RLock, Event, Thread
|
from threading import RLock, Event, Thread
|
||||||
@ -27,6 +28,7 @@ class UpdateState:
|
|||||||
self._updates_lock = RLock()
|
self._updates_lock = RLock()
|
||||||
self._updates_available = Event()
|
self._updates_available = Event()
|
||||||
self._updates = deque()
|
self._updates = deque()
|
||||||
|
self._latest_updates = deque(maxlen=10)
|
||||||
|
|
||||||
self._logger = logging.getLogger(__name__)
|
self._logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -141,6 +143,26 @@ class UpdateState:
|
|||||||
|
|
||||||
self._state.pts = pts
|
self._state.pts = pts
|
||||||
|
|
||||||
|
# TODO There must be a better way to handle updates rather than
|
||||||
|
# keeping a queue with the latest updates only, and handling
|
||||||
|
# the 'pts' correctly should be enough. However some updates
|
||||||
|
# like UpdateUserStatus (even inside UpdateShort) will be called
|
||||||
|
# repeatedly very often if invoking anything inside an update
|
||||||
|
# handler. TODO Figure out why.
|
||||||
|
"""
|
||||||
|
client = TelegramClient('anon', api_id, api_hash, update_workers=1)
|
||||||
|
client.connect()
|
||||||
|
def handle(u):
|
||||||
|
client.get_me()
|
||||||
|
client.add_update_handler(handle)
|
||||||
|
input('Enter to exit.')
|
||||||
|
"""
|
||||||
|
data = pickle.dumps(update.to_dict())
|
||||||
|
if data in self._latest_updates:
|
||||||
|
return # Duplicated too
|
||||||
|
|
||||||
|
self._latest_updates.append(data)
|
||||||
|
|
||||||
if type(update).SUBCLASS_OF_ID == 0x8af52aac: # crc32(b'Updates')
|
if type(update).SUBCLASS_OF_ID == 0x8af52aac: # crc32(b'Updates')
|
||||||
# Expand "Updates" into "Update", and pass these to callbacks.
|
# Expand "Updates" into "Update", and pass these to callbacks.
|
||||||
# Since .users and .chats have already been processed, we
|
# Since .users and .chats have already been processed, we
|
||||||
|
Loading…
Reference in New Issue
Block a user