Return chat from inline queries that "don't have it"

This commit is contained in:
Lonami Exo 2018-09-19 16:40:35 +02:00
parent 3ef2416138
commit ac59cfa25b

View File

@ -1,4 +1,5 @@
import re import re
import struct
from .common import EventBuilder, EventCommon, name_inner_event from .common import EventBuilder, EventCommon, name_inner_event
from .. import utils from .. import utils
@ -43,9 +44,14 @@ class CallbackQuery(EventBuilder):
@classmethod @classmethod
def build(cls, update): def build(cls, update):
if isinstance(update, (types.UpdateBotCallbackQuery, if isinstance(update, types.UpdateBotCallbackQuery):
types.UpdateInlineBotCallbackQuery)): event = cls.Event(update, update.peer, update.msg_id)
event = cls.Event(update) elif isinstance(update, types.UpdateInlineBotCallbackQuery):
# See https://github.com/LonamiWebs/Telethon/pull/1005
# The long message ID is actually just msg_id + peer_id
mid, pid = struct.unpack('<ii', struct.pack('<q', update.msg_id.id))
peer = types.PeerChannel(-pid) if pid < 0 else types.PeerUser(pid)
event = cls.Event(update, peer, mid)
else: else:
return return
@ -84,9 +90,8 @@ class CallbackQuery(EventBuilder):
when creating the event builder, if any. Similar when creating the event builder, if any. Similar
to ``pattern_match`` for the new message event. to ``pattern_match`` for the new message event.
""" """
def __init__(self, query): def __init__(self, query, peer, msg_id):
super().__init__(chat_peer=getattr(query, 'peer', None), super().__init__(peer, msg_id=msg_id)
msg_id=query.msg_id)
self.query = query self.query = query
self.data_match = None self.data_match = None
self._sender_id = query.user_id self._sender_id = query.user_id
@ -108,7 +113,7 @@ class CallbackQuery(EventBuilder):
""" """
Returns the message ID to which the clicked inline button belongs. Returns the message ID to which the clicked inline button belongs.
""" """
return self.query.msg_id return self._message_id
@property @property
def data(self): def data(self):