@@ -62,15 +62,21 @@ class Message(Object, Update):
6262 message_id (``int``):
6363 Unique message identifier inside this chat.
6464
65+ from_user (:obj:`~pyrogram.types.User`, *optional*):
66+ Sender, empty for messages sent to channels.
67+
68+ sender_chat (:obj:`~pyrogram.types.Chat`, *optional*):
69+ Sender of the message, sent on behalf of a chat.
70+ The channel itself for channel messages.
71+ The supergroup itself for messages from anonymous group administrators.
72+ The linked channel for messages automatically forwarded to the discussion group.
73+
6574 date (``int``, *optional*):
6675 Date the message was sent in Unix time.
6776
6877 chat (:obj:`~pyrogram.types.Chat`, *optional*):
6978 Conversation the message belongs to.
7079
71- from_user (:obj:`~pyrogram.types.User`, *optional*):
72- Sender, empty for messages sent to channels.
73-
7480 forward_from (:obj:`~pyrogram.types.User`, *optional*):
7581 For forwarded messages, sender of the original message.
7682
@@ -272,9 +278,10 @@ def __init__(
272278 * ,
273279 client : "pyrogram.Client" = None ,
274280 message_id : int ,
281+ from_user : "types.User" = None ,
282+ sender_chat : "types.Chat" = None ,
275283 date : int = None ,
276284 chat : "types.Chat" = None ,
277- from_user : "types.User" = None ,
278285 forward_from : "types.User" = None ,
279286 forward_sender_name : str = None ,
280287 forward_from_chat : "types.Chat" = None ,
@@ -337,9 +344,10 @@ def __init__(
337344 super ().__init__ (client )
338345
339346 self .message_id = message_id
347+ self .from_user = from_user
348+ self .sender_chat = sender_chat
340349 self .date = date
341350 self .chat = chat
342- self .from_user = from_user
343351 self .forward_from = forward_from
344352 self .forward_sender_name = forward_sender_name
345353 self .forward_from_chat = forward_from_chat
@@ -440,11 +448,15 @@ async def _parse(
440448 elif isinstance (action , raw .types .MessageActionChatEditPhoto ):
441449 new_chat_photo = types .Photo ._parse (client , action .photo )
442450
451+ from_user = types .User ._parse (client , users .get (utils .get_raw_peer_id (message .from_id ), None ))
452+ sender_chat = types .Chat ._parse (client , message , users , chats ) if not from_user else None
453+
443454 parsed_message = Message (
444455 message_id = message .id ,
445456 date = message .date ,
446457 chat = types .Chat ._parse (client , message , users , chats ),
447- from_user = types .User ._parse (client , users .get (utils .get_raw_peer_id (message .from_id ), None )),
458+ from_user = from_user ,
459+ sender_chat = sender_chat ,
448460 service = True ,
449461 new_chat_members = new_chat_members ,
450462 left_chat_member = left_chat_member ,
@@ -608,11 +620,15 @@ async def _parse(
608620 else :
609621 reply_markup = None
610622
623+ from_user = types .User ._parse (client , users .get (utils .get_raw_peer_id (message .from_id ), None ))
624+ sender_chat = types .Chat ._parse (client , message , users , chats ) if not from_user else None
625+
611626 parsed_message = Message (
612627 message_id = message .id ,
613628 date = message .date ,
614629 chat = types .Chat ._parse (client , message , users , chats ),
615- from_user = types .User ._parse (client , users .get (utils .get_raw_peer_id (message .from_id ), None )),
630+ from_user = from_user ,
631+ sender_chat = sender_chat ,
616632 text = (
617633 Str (message .message ).init (entities ) or None
618634 if media is None or web_page is not None
0 commit comments