mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-02-02 20:54:43 +03:00
Reuse turning chats into a set of IDs and handle self case
This commit is contained in:
parent
3c6f34fe6a
commit
8718cf0e7e
|
@ -8,6 +8,24 @@ from ..extensions import markdown
|
||||||
from ..tl import types, functions
|
from ..tl import types, functions
|
||||||
|
|
||||||
|
|
||||||
|
def _into_id_set(client, chats):
|
||||||
|
"""Helper util to turn the input chat or chats into a set of IDs."""
|
||||||
|
if chats is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
if not hasattr(chats, '__iter__') or isinstance(chats, str):
|
||||||
|
chats = (chats,)
|
||||||
|
|
||||||
|
result = set()
|
||||||
|
for chat in chats:
|
||||||
|
chat = client.get_input_entity(chat)
|
||||||
|
if isinstance(chat, types.InputPeerSelf):
|
||||||
|
chat = getattr(_into_id_set, 'me', None) or client.get_me()
|
||||||
|
_into_id_set.me = chat
|
||||||
|
result.add(utils.get_peer_id(chat))
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
class _EventBuilder(abc.ABC):
|
class _EventBuilder(abc.ABC):
|
||||||
@abc.abstractmethod
|
@abc.abstractmethod
|
||||||
def build(self, update):
|
def build(self, update):
|
||||||
|
@ -153,12 +171,7 @@ class NewMessage(_EventBuilder):
|
||||||
self.blacklist_chats = blacklist_chats
|
self.blacklist_chats = blacklist_chats
|
||||||
|
|
||||||
def resolve(self, client):
|
def resolve(self, client):
|
||||||
if hasattr(self.chats, '__iter__') and not isinstance(self.chats, str):
|
self.chats = _into_id_set(client, self.chats)
|
||||||
self.chats = set(utils.get_peer_id(client.get_input_entity(x))
|
|
||||||
for x in self.chats)
|
|
||||||
elif self.chats is not None:
|
|
||||||
self.chats = {utils.get_peer_id(
|
|
||||||
client.get_input_entity(self.chats))}
|
|
||||||
|
|
||||||
def build(self, update):
|
def build(self, update):
|
||||||
if isinstance(update,
|
if isinstance(update,
|
||||||
|
@ -430,12 +443,7 @@ class ChatAction(_EventBuilder):
|
||||||
self.blacklist_chats = blacklist_chats
|
self.blacklist_chats = blacklist_chats
|
||||||
|
|
||||||
def resolve(self, client):
|
def resolve(self, client):
|
||||||
if hasattr(self.chats, '__iter__') and not isinstance(self.chats, str):
|
self.chats = _into_id_set(client, self.chats)
|
||||||
self.chats = set(utils.get_peer_id(client.get_input_entity(x))
|
|
||||||
for x in self.chats)
|
|
||||||
elif self.chats is not None:
|
|
||||||
self.chats = {utils.get_peer_id(
|
|
||||||
client.get_input_entity(self.chats))}
|
|
||||||
|
|
||||||
def build(self, update):
|
def build(self, update):
|
||||||
if isinstance(update, types.UpdateChannelPinnedMessage):
|
if isinstance(update, types.UpdateChannelPinnedMessage):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user