Remove optional add_mark parameter from .get_peer_id

It was always True after all, and it made no sense for it to
be False.
This commit is contained in:
Lonami Exo 2017-12-28 13:31:43 +01:00
parent 7ed3be8e6f
commit 55b67b65a1
4 changed files with 28 additions and 29 deletions

View File

@ -325,11 +325,11 @@ class TelegramClient(TelegramBareClient):
total_count = getattr(r, 'count', len(r.dialogs)) total_count = getattr(r, 'count', len(r.dialogs))
messages = {m.id: m for m in r.messages} messages = {m.id: m for m in r.messages}
entities = {utils.get_peer_id(x, add_mark=True): x entities = {utils.get_peer_id(x): x
for x in itertools.chain(r.users, r.chats)} for x in itertools.chain(r.users, r.chats)}
for d in r.dialogs: for d in r.dialogs:
dialogs[utils.get_peer_id(d.peer, add_mark=True)] = \ dialogs[utils.get_peer_id(d.peer)] = \
Dialog(self, d, entities, messages) Dialog(self, d, entities, messages)
if len(r.dialogs) < real_limit or not isinstance(r, DialogsSlice): if len(r.dialogs) < real_limit or not isinstance(r, DialogsSlice):
@ -338,8 +338,7 @@ class TelegramClient(TelegramBareClient):
break break
offset_date = r.messages[-1].date offset_date = r.messages[-1].date
offset_peer = entities[ offset_peer = entities[utils.get_peer_id(r.dialogs[-1].peer)]
utils.get_peer_id(r.dialogs[-1].peer, add_mark=True)]
offset_id = r.messages[-1].id & 4294967296 # Telegram/danog magic offset_id = r.messages[-1].id & 4294967296 # Telegram/danog magic
dialogs = UserList(dialogs.values()) dialogs = UserList(dialogs.values())
@ -536,9 +535,9 @@ class TelegramClient(TelegramBareClient):
# TODO We can potentially use self.session.database, but since # TODO We can potentially use self.session.database, but since
# it might be disabled, use a local dictionary. # it might be disabled, use a local dictionary.
for u in result.users: for u in result.users:
entities[utils.get_peer_id(u, add_mark=True)] = u entities[utils.get_peer_id(u)] = u
for c in result.chats: for c in result.chats:
entities[utils.get_peer_id(c, add_mark=True)] = c entities[utils.get_peer_id(c)] = c
if len(result.messages) < real_limit: if len(result.messages) < real_limit:
break break
@ -558,23 +557,21 @@ class TelegramClient(TelegramBareClient):
for m in messages: for m in messages:
# TODO Better way to return a total without tuples? # TODO Better way to return a total without tuples?
m.sender = (None if not m.from_id else m.sender = (None if not m.from_id else
entities[utils.get_peer_id(m.from_id, add_mark=True)]) entities[utils.get_peer_id(m.from_id)])
if getattr(m, 'fwd_from', None): if getattr(m, 'fwd_from', None):
m.fwd_from.sender = ( m.fwd_from.sender = (
None if not m.fwd_from.from_id else None if not m.fwd_from.from_id else
entities[utils.get_peer_id( entities[utils.get_peer_id(m.fwd_from.from_id)]
m.fwd_from.from_id, add_mark=True
)]
) )
m.fwd_from.channel = ( m.fwd_from.channel = (
None if not m.fwd_from.channel_id else None if not m.fwd_from.channel_id else
entities[utils.get_peer_id( entities[utils.get_peer_id(
PeerChannel(m.fwd_from.channel_id), add_mark=True PeerChannel(m.fwd_from.channel_id)
)] )]
) )
m.to = entities[utils.get_peer_id(m.to_id, add_mark=True)] m.to = entities[utils.get_peer_id(m.to_id)]
return messages return messages
@ -1073,7 +1070,7 @@ class TelegramClient(TelegramBareClient):
# Merge users, chats and channels into a single dictionary # Merge users, chats and channels into a single dictionary
id_entity = { id_entity = {
utils.get_peer_id(x, add_mark=True): x utils.get_peer_id(x): x
for x in itertools.chain(users, chats, channels) for x in itertools.chain(users, chats, channels)
} }
@ -1083,7 +1080,7 @@ class TelegramClient(TelegramBareClient):
# username changes. # username changes.
result = [ result = [
self._get_entity_from_string(x) if isinstance(x, str) self._get_entity_from_string(x) if isinstance(x, str)
else id_entity[utils.get_peer_id(x, add_mark=True)] else id_entity[utils.get_peer_id(x)]
for x in inputs for x in inputs
] ]
return result[0] if single else result return result[0] if single else result
@ -1185,9 +1182,9 @@ class TelegramClient(TelegramBareClient):
exclude_pinned=True exclude_pinned=True
)) ))
target = utils.get_peer_id(peer, add_mark=True) target = utils.get_peer_id(peer)
for entity in itertools.chain(dialogs.users, dialogs.chats): for entity in itertools.chain(dialogs.users, dialogs.chats):
if utils.get_peer_id(entity, add_mark=True) == target: if utils.get_peer_id(entity) == target:
return utils.get_input_peer(entity) return utils.get_input_peer(entity)
raise TypeError( raise TypeError(

View File

@ -17,7 +17,7 @@ class Dialog:
self.message = messages.get(dialog.top_message, None) self.message = messages.get(dialog.top_message, None)
self.date = getattr(self.message, 'date', None) self.date = getattr(self.message, 'date', None)
self.entity = entities[utils.get_peer_id(dialog.peer, add_mark=True)] self.entity = entities[utils.get_peer_id(dialog.peer)]
self.input_entity = utils.get_input_peer(self.entity) self.input_entity = utils.get_input_peer(self.entity)
self.name = utils.get_display_name(self.entity) self.name = utils.get_display_name(self.entity)

View File

@ -285,7 +285,7 @@ class Session:
continue continue
try: try:
p = utils.get_input_peer(e, allow_self=False) p = utils.get_input_peer(e, allow_self=False)
marked_id = utils.get_peer_id(p, add_mark=True) marked_id = utils.get_peer_id(p)
except ValueError: except ValueError:
continue continue
@ -327,7 +327,7 @@ class Session:
key = utils.get_input_peer(key) key = utils.get_input_peer(key)
if type(key).SUBCLASS_OF_ID == 0xc91c90b6: # crc32(b'InputPeer') if type(key).SUBCLASS_OF_ID == 0xc91c90b6: # crc32(b'InputPeer')
return key return key
key = utils.get_peer_id(key, add_mark=True) key = utils.get_peer_id(key)
c = self._conn.cursor() c = self._conn.cursor()
if isinstance(key, str): if isinstance(key, str):

View File

@ -338,9 +338,14 @@ def parse_username(username):
return username.lower(), False return username.lower(), False
def get_peer_id(peer, add_mark=False): def get_peer_id(peer):
"""Finds the ID of the given peer, and optionally converts it to """
the "bot api" format if 'add_mark' is set to True. Finds the ID of the given peer, and converts it to the "bot api" format
so it the peer can be identified back. User ID is left unmodified,
chat ID is negated, and channel ID is prefixed with -100.
The original ID and the peer type class can be returned with
a call to utils.resolve_id(marked_id).
""" """
# First we assert it's a Peer TLObject, or early return for integers # First we assert it's a Peer TLObject, or early return for integers
if not isinstance(peer, TLObject): if not isinstance(peer, TLObject):
@ -357,7 +362,7 @@ def get_peer_id(peer, add_mark=False):
if isinstance(peer, (PeerUser, InputPeerUser)): if isinstance(peer, (PeerUser, InputPeerUser)):
return peer.user_id return peer.user_id
elif isinstance(peer, (PeerChat, InputPeerChat)): elif isinstance(peer, (PeerChat, InputPeerChat)):
return -peer.chat_id if add_mark else peer.chat_id return -peer.chat_id
elif isinstance(peer, (PeerChannel, InputPeerChannel, ChannelFull)): elif isinstance(peer, (PeerChannel, InputPeerChannel, ChannelFull)):
if isinstance(peer, ChannelFull): if isinstance(peer, ChannelFull):
# Special case: .get_input_peer can't return InputChannel from # Special case: .get_input_peer can't return InputChannel from
@ -365,12 +370,9 @@ def get_peer_id(peer, add_mark=False):
i = peer.id i = peer.id
else: else:
i = peer.channel_id i = peer.channel_id
if add_mark:
# Concat -100 through math tricks, .to_supergroup() on Madeline # Concat -100 through math tricks, .to_supergroup() on Madeline
# IDs will be strictly positive -> log works # IDs will be strictly positive -> log works
return -(i + pow(10, math.floor(math.log10(i) + 3))) return -(i + pow(10, math.floor(math.log10(i) + 3)))
else:
return i
_raise_cast_fail(peer, 'int') _raise_cast_fail(peer, 'int')