From d0ddb63830f7af59c8ca0e1d19a96c2ce6024e95 Mon Sep 17 00:00:00 2001 From: Dan <14043624+delivrance@users.noreply.github.com> Date: Mon, 16 Apr 2018 12:19:04 +0200 Subject: [PATCH] Use raw functions when getting messages --- pyrogram/client/message_parser.py | 40 ++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/pyrogram/client/message_parser.py b/pyrogram/client/message_parser.py index 4ae4180e..4433e6c0 100644 --- a/pyrogram/client/message_parser.py +++ b/pyrogram/client/message_parser.py @@ -19,7 +19,7 @@ from struct import pack import pyrogram -from pyrogram.api import types +from pyrogram.api import types, functions from .utils import encode # TODO: Organize the code better? @@ -173,6 +173,40 @@ def parse_thumb(thumb: types.PhotoSize or types.PhotoCachedSize) -> pyrogram.Pho ) +def get_message_reply(client, chat_id: int or str, message_id: int): + peer = client.resolve_peer(chat_id) + message_id = [types.InputMessageReplyTo(message_id)] + + if isinstance(peer, types.InputPeerChannel): + rpc = functions.channels.GetMessages( + channel=peer, + id=message_id + ) + else: + rpc = functions.messages.GetMessages( + id=message_id + ) + + return client.send(rpc) + + +def get_message_pinned(client, chat_id: int or str): + peer = client.resolve_peer(chat_id) + message_id = [types.InputMessagePinned()] + + if isinstance(peer, types.InputPeerChannel): + rpc = functions.channels.GetMessages( + channel=peer, + id=message_id + ) + else: + rpc = functions.messages.GetMessages( + id=message_id + ) + + return client.send(rpc) + + # TODO: Reorganize code, maybe split parts as well def parse_message( client, @@ -465,7 +499,7 @@ def parse_message( ) if message.reply_to_msg_id and replies: - reply_to_message = client.get_messages(m.chat.id, [message.reply_to_msg_id]) + reply_to_message = get_message_reply(client, m.chat.id, message.id) message = reply_to_message.messages[0] users = {i.id: i for i in reply_to_message.users} @@ -573,7 +607,7 @@ def parse_message_service( ) if isinstance(action, types.MessageActionPinMessage): - pin_message = client.get_messages(m.chat.id, [message.reply_to_msg_id]) + pin_message = get_message_pinned(client, m.chat.id) message = pin_message.messages[0] users = {i.id: i for i in pin_message.users}