# Pyrogram - Telegram MTProto API Client Library for Python # Copyright (C) 2017-present Dan # # This file is part of Pyrogram. # # Pyrogram is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Pyrogram is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with Pyrogram. If not, see . from io import BytesIO from pyrogram.raw.core.primitives import Int, Long, Int128, Int256, Bool, Bytes, String, Double, Vector from pyrogram.raw.core import TLObject from pyrogram import raw from typing import List, Optional, Any # # # # # # # # # # # # # # # # # # # # # # # # # !!! WARNING !!! # # This is a generated file! # # All changes made in this file will be lost! # # # # # # # # # # # # # # # # # # # # # # # # # class Message(TLObject): # type: ignore """Telegram API type. Constructor of :obj:`~pyrogram.raw.base.Message`. Details: - Layer: ``158`` - ID: ``38116EE0`` Parameters: id (``int`` ``32-bit``): N/A peer_id (:obj:`Peer `): N/A date (``int`` ``32-bit``): N/A message (``str``): N/A out (``bool``, *optional*): N/A mentioned (``bool``, *optional*): N/A media_unread (``bool``, *optional*): N/A silent (``bool``, *optional*): N/A post (``bool``, *optional*): N/A from_scheduled (``bool``, *optional*): N/A legacy (``bool``, *optional*): N/A edit_hide (``bool``, *optional*): N/A pinned (``bool``, *optional*): N/A noforwards (``bool``, *optional*): N/A from_id (:obj:`Peer `, *optional*): N/A fwd_from (:obj:`MessageFwdHeader `, *optional*): N/A via_bot_id (``int`` ``64-bit``, *optional*): N/A reply_to (:obj:`MessageReplyHeader `, *optional*): N/A media (:obj:`MessageMedia `, *optional*): N/A reply_markup (:obj:`ReplyMarkup `, *optional*): N/A entities (List of :obj:`MessageEntity `, *optional*): N/A views (``int`` ``32-bit``, *optional*): N/A forwards (``int`` ``32-bit``, *optional*): N/A replies (:obj:`MessageReplies `, *optional*): N/A edit_date (``int`` ``32-bit``, *optional*): N/A post_author (``str``, *optional*): N/A grouped_id (``int`` ``64-bit``, *optional*): N/A reactions (:obj:`MessageReactions `, *optional*): N/A restriction_reason (List of :obj:`RestrictionReason `, *optional*): N/A ttl_period (``int`` ``32-bit``, *optional*): N/A """ __slots__: List[str] = ["id", "peer_id", "date", "message", "out", "mentioned", "media_unread", "silent", "post", "from_scheduled", "legacy", "edit_hide", "pinned", "noforwards", "from_id", "fwd_from", "via_bot_id", "reply_to", "media", "reply_markup", "entities", "views", "forwards", "replies", "edit_date", "post_author", "grouped_id", "reactions", "restriction_reason", "ttl_period"] ID = 0x38116ee0 QUALNAME = "types.Message" def __init__(self, *, id: int, peer_id: "raw.base.Peer", date: int, message: str, out: Optional[bool] = None, mentioned: Optional[bool] = None, media_unread: Optional[bool] = None, silent: Optional[bool] = None, post: Optional[bool] = None, from_scheduled: Optional[bool] = None, legacy: Optional[bool] = None, edit_hide: Optional[bool] = None, pinned: Optional[bool] = None, noforwards: Optional[bool] = None, from_id: "raw.base.Peer" = None, fwd_from: "raw.base.MessageFwdHeader" = None, via_bot_id: Optional[int] = None, reply_to: "raw.base.MessageReplyHeader" = None, media: "raw.base.MessageMedia" = None, reply_markup: "raw.base.ReplyMarkup" = None, entities: Optional[List["raw.base.MessageEntity"]] = None, views: Optional[int] = None, forwards: Optional[int] = None, replies: "raw.base.MessageReplies" = None, edit_date: Optional[int] = None, post_author: Optional[str] = None, grouped_id: Optional[int] = None, reactions: "raw.base.MessageReactions" = None, restriction_reason: Optional[List["raw.base.RestrictionReason"]] = None, ttl_period: Optional[int] = None) -> None: self.id = id # int self.peer_id = peer_id # Peer self.date = date # int self.message = message # string self.out = out # flags.1?true self.mentioned = mentioned # flags.4?true self.media_unread = media_unread # flags.5?true self.silent = silent # flags.13?true self.post = post # flags.14?true self.from_scheduled = from_scheduled # flags.18?true self.legacy = legacy # flags.19?true self.edit_hide = edit_hide # flags.21?true self.pinned = pinned # flags.24?true self.noforwards = noforwards # flags.26?true self.from_id = from_id # flags.8?Peer self.fwd_from = fwd_from # flags.2?MessageFwdHeader self.via_bot_id = via_bot_id # flags.11?long self.reply_to = reply_to # flags.3?MessageReplyHeader self.media = media # flags.9?MessageMedia self.reply_markup = reply_markup # flags.6?ReplyMarkup self.entities = entities # flags.7?Vector self.views = views # flags.10?int self.forwards = forwards # flags.10?int self.replies = replies # flags.23?MessageReplies self.edit_date = edit_date # flags.15?int self.post_author = post_author # flags.16?string self.grouped_id = grouped_id # flags.17?long self.reactions = reactions # flags.20?MessageReactions self.restriction_reason = restriction_reason # flags.22?Vector self.ttl_period = ttl_period # flags.25?int @staticmethod def read(b: BytesIO, *args: Any) -> "Message": flags = Int.read(b) out = True if flags & (1 << 1) else False mentioned = True if flags & (1 << 4) else False media_unread = True if flags & (1 << 5) else False silent = True if flags & (1 << 13) else False post = True if flags & (1 << 14) else False from_scheduled = True if flags & (1 << 18) else False legacy = True if flags & (1 << 19) else False edit_hide = True if flags & (1 << 21) else False pinned = True if flags & (1 << 24) else False noforwards = True if flags & (1 << 26) else False id = Int.read(b) from_id = TLObject.read(b) if flags & (1 << 8) else None peer_id = TLObject.read(b) fwd_from = TLObject.read(b) if flags & (1 << 2) else None via_bot_id = Long.read(b) if flags & (1 << 11) else None reply_to = TLObject.read(b) if flags & (1 << 3) else None date = Int.read(b) message = String.read(b) media = TLObject.read(b) if flags & (1 << 9) else None reply_markup = TLObject.read(b) if flags & (1 << 6) else None entities = TLObject.read(b) if flags & (1 << 7) else [] views = Int.read(b) if flags & (1 << 10) else None forwards = Int.read(b) if flags & (1 << 10) else None replies = TLObject.read(b) if flags & (1 << 23) else None edit_date = Int.read(b) if flags & (1 << 15) else None post_author = String.read(b) if flags & (1 << 16) else None grouped_id = Long.read(b) if flags & (1 << 17) else None reactions = TLObject.read(b) if flags & (1 << 20) else None restriction_reason = TLObject.read(b) if flags & (1 << 22) else [] ttl_period = Int.read(b) if flags & (1 << 25) else None return Message(id=id, peer_id=peer_id, date=date, message=message, out=out, mentioned=mentioned, media_unread=media_unread, silent=silent, post=post, from_scheduled=from_scheduled, legacy=legacy, edit_hide=edit_hide, pinned=pinned, noforwards=noforwards, from_id=from_id, fwd_from=fwd_from, via_bot_id=via_bot_id, reply_to=reply_to, media=media, reply_markup=reply_markup, entities=entities, views=views, forwards=forwards, replies=replies, edit_date=edit_date, post_author=post_author, grouped_id=grouped_id, reactions=reactions, restriction_reason=restriction_reason, ttl_period=ttl_period) def write(self, *args) -> bytes: b = BytesIO() b.write(Int(self.ID, False)) flags = 0 flags |= (1 << 1) if self.out else 0 flags |= (1 << 4) if self.mentioned else 0 flags |= (1 << 5) if self.media_unread else 0 flags |= (1 << 13) if self.silent else 0 flags |= (1 << 14) if self.post else 0 flags |= (1 << 18) if self.from_scheduled else 0 flags |= (1 << 19) if self.legacy else 0 flags |= (1 << 21) if self.edit_hide else 0 flags |= (1 << 24) if self.pinned else 0 flags |= (1 << 26) if self.noforwards else 0 flags |= (1 << 8) if self.from_id is not None else 0 flags |= (1 << 2) if self.fwd_from is not None else 0 flags |= (1 << 11) if self.via_bot_id is not None else 0 flags |= (1 << 3) if self.reply_to is not None else 0 flags |= (1 << 9) if self.media is not None else 0 flags |= (1 << 6) if self.reply_markup is not None else 0 flags |= (1 << 7) if self.entities else 0 flags |= (1 << 10) if self.views is not None else 0 flags |= (1 << 10) if self.forwards is not None else 0 flags |= (1 << 23) if self.replies is not None else 0 flags |= (1 << 15) if self.edit_date is not None else 0 flags |= (1 << 16) if self.post_author is not None else 0 flags |= (1 << 17) if self.grouped_id is not None else 0 flags |= (1 << 20) if self.reactions is not None else 0 flags |= (1 << 22) if self.restriction_reason else 0 flags |= (1 << 25) if self.ttl_period is not None else 0 b.write(Int(flags)) b.write(Int(self.id)) if self.from_id is not None: b.write(self.from_id.write()) b.write(self.peer_id.write()) if self.fwd_from is not None: b.write(self.fwd_from.write()) if self.via_bot_id is not None: b.write(Long(self.via_bot_id)) if self.reply_to is not None: b.write(self.reply_to.write()) b.write(Int(self.date)) b.write(String(self.message)) if self.media is not None: b.write(self.media.write()) if self.reply_markup is not None: b.write(self.reply_markup.write()) if self.entities is not None: b.write(Vector(self.entities)) if self.views is not None: b.write(Int(self.views)) if self.forwards is not None: b.write(Int(self.forwards)) if self.replies is not None: b.write(self.replies.write()) if self.edit_date is not None: b.write(Int(self.edit_date)) if self.post_author is not None: b.write(String(self.post_author)) if self.grouped_id is not None: b.write(Long(self.grouped_id)) if self.reactions is not None: b.write(self.reactions.write()) if self.restriction_reason is not None: b.write(Vector(self.restriction_reason)) if self.ttl_period is not None: b.write(Int(self.ttl_period)) return b.getvalue()