Hide navigation sidebar
Hide table of contents sidebar
PTB has undergone significant changes in v20. Please read the documentation carefully and also check out the transition guide in the wiki.
Back to top
Toggle table of contents sidebar

# Message

class telegram.Message(message_id, date, chat, from_user=None, forward_from=None, forward_from_chat=None, forward_from_message_id=None, forward_date=None, reply_to_message=None, edit_date=None, text=None, entities=None, caption_entities=None, audio=None, document=None, game=None, photo=None, sticker=None, video=None, voice=None, video_note=None, new_chat_members=None, caption=None, contact=None, location=None, venue=None, left_chat_member=None, new_chat_title=None, new_chat_photo=None, delete_chat_photo=None, group_chat_created=None, supergroup_chat_created=None, channel_chat_created=None, migrate_to_chat_id=None, migrate_from_chat_id=None, pinned_message=None, invoice=None, successful_payment=None, forward_signature=None, author_signature=None, media_group_id=None, connected_website=None, animation=None, passport_data=None, poll=None, forward_sender_name=None, reply_markup=None, dice=None, via_bot=None, proximity_alert_triggered=None, sender_chat=None, video_chat_started=None, video_chat_ended=None, video_chat_participants_invited=None, message_auto_delete_timer_changed=None, video_chat_scheduled=None, is_automatic_forward=None, has_protected_content=None, web_app_data=None, is_topic_message=None, message_thread_id=None, forum_topic_created=None, forum_topic_closed=None, forum_topic_reopened=None, forum_topic_edited=None, general_forum_topic_hidden=None, general_forum_topic_unhidden=None, write_access_allowed=None, has_media_spoiler=None, user_shared=None, chat_shared=None, story=None, giveaway=None, giveaway_completed=None, giveaway_created=None, giveaway_winners=None, users_shared=None, link_preview_options=None, external_reply=None, quote=None, forward_origin=None, *, api_kwargs=None)

  Bases: `telegram.MaybeInaccessibleMessage`

  This object represents a message.

  Objects of this class are comparable in terms of equality. Two objects of this class are considered equal, if their `message_id` and `chat` are equal.

  Note

  In Python `from` is a reserved word. Use `from_user` instead.

  Available In

  - `telegram.CallbackQuery.message`

  - `telegram.Chat.pinned_message`

  - `telegram.GiveawayCompleted.giveaway_message`

  - `telegram.Message.pinned_message`

  - `telegram.Message.reply_to_message`

  - `telegram.Update.channel_post`

  - `telegram.Update.edited_channel_post`

  - `telegram.Update.edited_message`

  - `telegram.Update.effective_message`

  - `telegram.Update.message`

  Returned In

  - `telegram.Bot.edit_message_caption()`

  - `telegram.Bot.edit_message_live_location()`

  - `telegram.Bot.edit_message_media()`

  - `telegram.Bot.edit_message_reply_markup()`

  - `telegram.Bot.edit_message_text()`

  - `telegram.Bot.forward_message()`

  - `telegram.Bot.send_animation()`

  - `telegram.Bot.send_audio()`

  - `telegram.Bot.send_contact()`

  - `telegram.Bot.send_dice()`

  - `telegram.Bot.send_document()`

  - `telegram.Bot.send_game()`

  - `telegram.Bot.send_invoice()`

  - `telegram.Bot.send_location()`

  - `telegram.Bot.send_message()`

  - `telegram.Bot.send_photo()`

  - `telegram.Bot.send_poll()`

  - `telegram.Bot.send_sticker()`

  - `telegram.Bot.send_venue()`

  - `telegram.Bot.send_video_note()`

  - `telegram.Bot.send_video()`

  - `telegram.Bot.send_voice()`

  - `telegram.Bot.set_game_score()`

  - `telegram.Bot.stop_message_live_location()`

  Changed in version 20.8: * This class is now a subclass of `telegram.MaybeInaccessibleMessage`. * The `pinned_message` now can be either class:telegram.Message or class:telegram.InaccessibleMessage.

  Changed in version 20.0:

  - The arguments and attributes `voice_chat_scheduled`, `voice_chat_started` and `voice_chat_ended`, `voice_chat_participants_invited` were renamed to `video_chat_scheduled`/`video_chat_scheduled`, `video_chat_started`/`video_chat_started`, `video_chat_ended`/`video_chat_ended` and `video_chat_participants_invited`/`video_chat_participants_invited`, respectively, in accordance to Bot API 6.0.

  - The following are now keyword-only arguments in Bot methods: `{read, write, connect, pool}_timeout`, `api_kwargs`, `contact`, `quote`, `filename`, `loaction`, `venue`. Use a named argument for those, and notice that some positional arguments changed position as a result.

  Parameters:

    - message_id (`int`) – Unique message identifier inside this chat.

    - from_user (`telegram.User`, optional) – Sender of the message; empty for messages sent to channels. For backward compatibility, this will contain a fake sender user in non-channel chats, if the message was sent on behalf of a chat.

    - sender_chat (`telegram.Chat`, optional) – Sender of the message, sent on behalf of a chat. For example, the channel itself for channel posts, the supergroup itself for messages from anonymous group administrators, the linked channel for messages automatically forwarded to the discussion group. For backward compatibility, `from_user` contains a fake sender user in non-channel chats, if the message was sent on behalf of a chat.

    - date (`datetime.datetime`) –

      Date the message was sent in Unix time. Converted to `datetime.datetime`.

      Changed in version 20.3: The default timezone of the bot is used for localization, which is UTC unless `telegram.ext.Defaults.tzinfo` is used.

    - chat (`telegram.Chat`) – Conversation the message belongs to.

    - forward_from (`telegram.User`, optional) –

      For forwarded messages, sender of the original message.

      Deprecated since version 20.8: Bot API 7.0 deprecates `forward_from` in favor of `forward_origin`.

    - forward_from_chat (`telegram.Chat`, optional) –

      For messages forwarded from channels or from anonymous administrators, information about the original sender chat.

      Deprecated since version 20.8: Bot API 7.0 deprecates `forward_from_chat` in favor of `forward_origin`.

    - forward_from_message_id (`int`, optional) –

      For forwarded channel posts, identifier of the original message in the channel.

      Deprecated since version 20.8: Bot API 7.0 deprecates `forward_from_message_id` in favor of `forward_origin`.

    - forward_sender_name (`str`, optional) –

      Sender’s name for messages forwarded from users who disallow adding a link to their account in forwarded messages.

      Deprecated since version 20.8: Bot API 7.0 deprecates `forward_sender_name` in favor of `forward_origin`.

    - forward_date (`datetime.datetime`, optional) –

      For forwarded messages, date the original message was sent in Unix time. Converted to `datetime.datetime`.

      Changed in version 20.3: The default timezone of the bot is used for localization, which is UTC unless `telegram.ext.Defaults.tzinfo` is used.

      Deprecated since version 20.8: Bot API 7.0 deprecates `forward_date` in favor of `forward_origin`.

    - is_automatic_forward (`bool`, optional) –

      `True`, if the message is a channel post that was automatically forwarded to the connected discussion group.

      New in version 13.9.

    - reply_to_message (`telegram.Message`, optional) – For replies, the original message. Note that the Message object in this field will not contain further `reply_to_message` fields even if it itself is a reply.

    - edit_date (`datetime.datetime`, optional) –

      Date the message was last edited in Unix time. Converted to `datetime.datetime`.

      Changed in version 20.3: The default timezone of the bot is used for localization, which is UTC unless `telegram.ext.Defaults.tzinfo` is used.

    - has_protected_content (`bool`, optional) –

      `True`, if the message can’t be forwarded.

      New in version 13.9.

    - media_group_id (`str`, optional) – The unique identifier of a media message group this message belongs to.

    - text (`str`, optional) – For text messages, the actual UTF-8 text of the message, 0-`4096` characters.

    - entities (Sequence[`telegram.MessageEntity`], optional) –

      For text messages, special entities like usernames, URLs, bot commands, etc. that appear in the text. See `parse_entity` and `parse_entities` methods for how to use properly. This list is empty if the message does not contain entities.

      Changed in version 20.0: Accepts any `collections.abc.Sequence` as input instead of just a list. The input is converted to a tuple.

    - link_preview_options (`telegram.LinkPreviewOptions`, optional) –

      Options used for link preview generation for the message, if it is a text message and link preview options were changed.

      New in version 20.8.

    - caption_entities (Sequence[`telegram.MessageEntity`], optional) –

      For messages with a Caption. Special entities like usernames, URLs, bot commands, etc. that appear in the caption. See `Message.parse_caption_entity` and `parse_caption_entities` methods for how to use properly. This list is empty if the message does not contain caption entities.

      Changed in version 20.0: Accepts any `collections.abc.Sequence` as input instead of just a list. The input is converted to a tuple.

    - audio (`telegram.Audio`, optional) – Message is an audio file, information about the file.

    - document (`telegram.Document`, optional) – Message is a general file, information about the file.

    - animation (`telegram.Animation`, optional) – Message is an animation, information about the animation. For backward compatibility, when this field is set, the document field will also be set.

    - game (`telegram.Game`, optional) – Message is a game, information about the game.

    - photo (Sequence[`telegram.PhotoSize`], optional) –

      Message is a photo, available sizes of the photo. This list is empty if the message does not contain a photo.

      Changed in version 20.0: Accepts any `collections.abc.Sequence` as input instead of just a list. The input is converted to a tuple.

    - sticker (`telegram.Sticker`, optional) – Message is a sticker, information about the sticker.

    - story (`telegram.Story`, optional) –

      Message is a forwarded story.

      New in version 20.5.

    - video (`telegram.Video`, optional) – Message is a video, information about the video.

    - voice (`telegram.Voice`, optional) – Message is a voice message, information about the file.

    - video_note (`telegram.VideoNote`, optional) – Message is a video note, information about the video message.

    - new_chat_members (Sequence[`telegram.User`], optional) –

      New members that were added to the group or supergroup and information about them (the bot itself may be one of these members). This list is empty if the message does not contain new chat members.

      Changed in version 20.0: Accepts any `collections.abc.Sequence` as input instead of just a list. The input is converted to a tuple.

    - caption (`str`, optional) – Caption for the animation, audio, document, photo, video or voice, 0-`1024` characters.

    - contact (`telegram.Contact`, optional) – Message is a shared contact, information about the contact.

    - location (`telegram.Location`, optional) – Message is a shared location, information about the location.

    - venue (`telegram.Venue`, optional) – Message is a venue, information about the venue. For backward compatibility, when this field is set, the location field will also be set.

    - left_chat_member (`telegram.User`, optional) – A member was removed from the group, information about them (this member may be the bot itself).

    - new_chat_title (`str`, optional) – A chat title was changed to this value.

    - new_chat_photo (Sequence[`telegram.PhotoSize`], optional) –

      A chat photo was changed to this value. This list is empty if the message does not contain a new chat photo.

      Changed in version 20.0: Accepts any `collections.abc.Sequence` as input instead of just a list. The input is converted to a tuple.

    - delete_chat_photo (`bool`, optional) – Service message: The chat photo was deleted.

    - group_chat_created (`bool`, optional) – Service message: The group has been created.

    - supergroup_chat_created (`bool`, optional) – Service message: The supergroup has been created. This field can’t be received in a message coming through updates, because bot can’t be a member of a supergroup when it is created. It can only be found in `reply_to_message` if someone replies to a very first message in a directly created supergroup.

    - channel_chat_created (`bool`, optional) – Service message: The channel has been created. This field can’t be received in a message coming through updates, because bot can’t be a member of a channel when it is created. It can only be found in `reply_to_message` if someone replies to a very first message in a channel.

    - message_auto_delete_timer_changed (`telegram.MessageAutoDeleteTimerChanged`, optional) –

      Service message: auto-delete timer settings changed in the chat.

      New in version 13.4.

    - migrate_to_chat_id (`int`, optional) – The group has been migrated to a supergroup with the specified identifier.

    - migrate_from_chat_id (`int`, optional) – The supergroup has been migrated from a group with the specified identifier.

    - pinned_message (`telegram.MaybeInaccessibleMessage`, optional) –

      Specified message was pinned. Note that the Message object in this field will not contain further `reply_to_message` fields even if it is itself a reply.

      Changed in version 20.8: This attribute now is either class:telegram.Message or class:telegram.InaccessibleMessage.

    - invoice (`telegram.Invoice`, optional) – Message is an invoice for a payment, information about the invoice.

    - successful_payment (`telegram.SuccessfulPayment`, optional) – Message is a service message about a successful payment, information about the payment.

    - connected_website (`str`, optional) – The domain name of the website on which the user has logged in.

    - forward_signature (`str`, optional) –

      For messages forwarded from channels, signature of the post author if present.

      Deprecated since version 20.8: Bot API 7.0 deprecates `forward_signature` in favor of `forward_origin`.

    - author_signature (`str`, optional) – Signature of the post author for messages in channels, or the custom title of an anonymous group administrator.

    - passport_data (`telegram.PassportData`, optional) – Telegram Passport data.

    - poll (`telegram.Poll`, optional) – Message is a native poll, information about the poll.

    - dice (`telegram.Dice`, optional) – Message is a dice with random value.

    - via_bot (`telegram.User`, optional) – Bot through which message was sent.

    - proximity_alert_triggered (`telegram.ProximityAlertTriggered`, optional) – Service message. A user in the chat triggered another user’s proximity alert while sharing Live Location.

    - video_chat_scheduled (`telegram.VideoChatScheduled`, optional) –

      Service message: video chat scheduled.

      New in version 20.0.

    - video_chat_started (`telegram.VideoChatStarted`, optional) –

      Service message: video chat started.

      New in version 20.0.

    - video_chat_ended (`telegram.VideoChatEnded`, optional) –

      Service message: video chat ended.

      New in version 20.0.

    - video_chat_participants_invited (`telegram.VideoChatParticipantsInvited` optional) –

      Service message: new participants invited to a video chat.

      New in version 20.0.

    - web_app_data (`telegram.WebAppData`, optional) –

      Service message: data sent by a Web App.

      New in version 20.0.

    - reply_markup (`telegram.InlineKeyboardMarkup`, optional) – Inline keyboard attached to the message. `login_url` buttons are represented as ordinary url buttons.

    - is_topic_message (`bool`, optional) –

      `True`, if the message is sent to a forum topic.

      New in version 20.0.

    - message_thread_id (`int`, optional) –

      Unique identifier of a message thread to which the message belongs; for supergroups only.

      New in version 20.0.

    - forum_topic_created (`telegram.ForumTopicCreated`, optional) –

      Service message: forum topic created.

      New in version 20.0.

    - forum_topic_closed (`telegram.ForumTopicClosed`, optional) –

      Service message: forum topic closed.

      New in version 20.0.

    - forum_topic_reopened (`telegram.ForumTopicReopened`, optional) –

      Service message: forum topic reopened.

      New in version 20.0.

    - forum_topic_edited (`telegram.ForumTopicEdited`, optional) –

      Service message: forum topic edited.

      New in version 20.0.

    - general_forum_topic_hidden (`telegram.GeneralForumTopicHidden`, optional) –

      Service message: General forum topic hidden.

      New in version 20.0.

    - general_forum_topic_unhidden (`telegram.GeneralForumTopicUnhidden`, optional) –

      Service message: General forum topic unhidden.

      New in version 20.0.

    - write_access_allowed (`telegram.WriteAccessAllowed`, optional) –

      Service message: the user allowed the bot to write messages after adding it to the attachment or side menu, launching a Web App from a link, or accepting an explicit request from a Web App sent by the method requestWriteAccess.

      New in version 20.0.

    - has_media_spoiler (`bool`, optional) –

      `True`, if the message media is covered by a spoiler animation.

      New in version 20.0.

    - user_shared (`telegram.UserShared`, optional) –

      Service message: a user was shared with the bot.

      New in version 20.1.

      Deprecated since version 20.8: Bot API 7.0 deprecates `user_shared` in favor of `users_shared`.

    - users_shared (`telegram.UsersShared`, optional) –

      Service message: users were shared with the bot

      New in version 20.8.

    - chat_shared (`telegram.ChatShared`, optional) –

      Service message: a chat was shared with the bot.

      New in version 20.1.

    - giveaway_created (`telegram.GiveawayCreated`, optional) –

      Service message: a scheduled giveaway was created

      New in version 20.8.

    - giveaway (`telegram.Giveaway`, optional) –

      The message is a scheduled giveaway message

      New in version 20.8.

    - giveaway_winners (`telegram.GiveawayWinners`, optional) –

      A giveaway with public winners was completed

      New in version 20.8.

    - giveaway_completed (`telegram.GiveawayCompleted`, optional) –

      Service message: a giveaway without public winners was completed

      New in version 20.8.

    - external_reply (`telegram.ExternalReplyInfo`, optional) –

      Information about the message that is being replied to, which may come from another chat or forum topic.

      New in version 20.8.

    - quote (`telegram.TextQuote`, optional) –

      For replies that quote part of the original message, the quoted part of the message.

      New in version 20.8.

    - forward_origin (`telegram.MessageOrigin`, optional) –

      Information about the original message for forwarded messages

      New in version 20.8.

  message_id

    Unique message identifier inside this chat.

    Type:

      `int`

  from_user

    Optional. Sender of the message; empty for messages sent to channels. For backward compatibility, this will contain a fake sender user in non-channel chats, if the message was sent on behalf of a chat.

    Type:

      `telegram.User`

  sender_chat

    Optional. Sender of the message, sent on behalf of a chat. For example, the channel itself for channel posts, the supergroup itself for messages from anonymous group administrators, the linked channel for messages automatically forwarded to the discussion group. For backward compatibility, `from_user` contains a fake sender user in non-channel chats, if the message was sent on behalf of a chat.

    Type:

      `telegram.Chat`

  date

    Date the message was sent in Unix time. Converted to `datetime.datetime`.

    Changed in version 20.3: The default timezone of the bot is used for localization, which is UTC unless `telegram.ext.Defaults.tzinfo` is used.

    Type:

      `datetime.datetime`

  chat

    Conversation the message belongs to.

    Type:

      `telegram.Chat`

  is_automatic_forward

    Optional. `True`, if the message is a channel post that was automatically forwarded to the connected discussion group.

    New in version 13.9.

    Type:

      `bool`

  reply_to_message

    Optional. For replies, the original message. Note that the Message object in this field will not contain further `reply_to_message` fields even if it itself is a reply.

    Type:

      `telegram.Message`

  edit_date

    Optional. Date the message was last edited in Unix time. Converted to `datetime.datetime`.

    Changed in version 20.3: The default timezone of the bot is used for localization, which is UTC unless `telegram.ext.Defaults.tzinfo` is used.

    Type:

      `datetime.datetime`

  has_protected_content

    Optional. `True`, if the message can’t be forwarded.

    New in version 13.9.

    Type:

      `bool`

  media_group_id

    Optional. The unique identifier of a media message group this message belongs to.

    Type:

      `str`

  text

    Optional. For text messages, the actual UTF-8 text of the message, 0-`4096` characters.

    Type:

      `str`

  entities

    Optional. For text messages, special entities like usernames, URLs, bot commands, etc. that appear in the text. See `parse_entity` and `parse_entities` methods for how to use properly. This list is empty if the message does not contain entities.

    Changed in version 20.0: This attribute is now an immutable tuple.

    Type:

      Tuple[`telegram.MessageEntity`]

  link_preview_options

    Optional. Options used for link preview generation for the message, if it is a text message and link preview options were changed.

    New in version 20.8.

    Type:

      `telegram.LinkPreviewOptions`

  caption_entities

    Optional. For messages with a Caption. Special entities like usernames, URLs, bot commands, etc. that appear in the caption. See `Message.parse_caption_entity` and `parse_caption_entities` methods for how to use properly. This list is empty if the message does not contain caption entities.

    Changed in version 20.0: This attribute is now an immutable tuple.

    Type:

      Tuple[`telegram.MessageEntity`]

  audio

    Optional. Message is an audio file, information about the file.

    See also

    Working with Files and Media

    Type:

      `telegram.Audio`

  document

    Optional. Message is a general file, information about the file.

    See also

    Working with Files and Media

    Type:

      `telegram.Document`

  animation

    Optional. Message is an animation, information about the animation. For backward compatibility, when this field is set, the document field will also be set.

    See also

    Working with Files and Media

    Type:

      `telegram.Animation`

  game

    Optional. Message is a game, information about the game.

    Type:

      `telegram.Game`

  photo

    Optional. Message is a photo, available sizes of the photo. This list is empty if the message does not contain a photo.

    See also

    Working with Files and Media

    Changed in version 20.0: This attribute is now an immutable tuple.

    Type:

      Tuple[`telegram.PhotoSize`]

  sticker

    Optional. Message is a sticker, information about the sticker.

    See also

    Working with Files and Media

    Type:

      `telegram.Sticker`

  story

    Optional. Message is a forwarded story.

    New in version 20.5.

    Type:

      `telegram.Story`

  video

    Optional. Message is a video, information about the video.

    See also

    Working with Files and Media

    Type:

      `telegram.Video`

  voice

    Optional. Message is a voice message, information about the file.

    See also

    Working with Files and Media

    Type:

      `telegram.Voice`

  video_note

    Optional. Message is a video note, information about the video message.

    See also

    Working with Files and Media

    Type:

      `telegram.VideoNote`

  new_chat_members

    Optional. New members that were added to the group or supergroup and information about them (the bot itself may be one of these members). This list is empty if the message does not contain new chat members.

    Changed in version 20.0: This attribute is now an immutable tuple.

    Type:

      Tuple[`telegram.User`]

  caption

    Optional. Caption for the animation, audio, document, photo, video or voice, 0-`1024` characters.

    Type:

      `str`

  contact

    Optional. Message is a shared contact, information about the contact.

    Type:

      `telegram.Contact`

  location

    Optional. Message is a shared location, information about the location.

    Type:

      `telegram.Location`

  venue

    Optional. Message is a venue, information about the venue. For backward compatibility, when this field is set, the location field will also be set.

    Type:

      `telegram.Venue`

  left_chat_member

    Optional. A member was removed from the group, information about them (this member may be the bot itself).

    Type:

      `telegram.User`

  new_chat_title

    Optional. A chat title was changed to this value.

    Type:

      `str`

  new_chat_photo

    A chat photo was changed to this value. This list is empty if the message does not contain a new chat photo.

    Changed in version 20.0: This attribute is now an immutable tuple.

    Type:

      Tuple[`telegram.PhotoSize`]

  delete_chat_photo

    Optional. Service message: The chat photo was deleted.

    Type:

      `bool`

  group_chat_created

    Optional. Service message: The group has been created.

    Type:

      `bool`

  supergroup_chat_created

    Optional. Service message: The supergroup has been created. This field can’t be received in a message coming through updates, because bot can’t be a member of a supergroup when it is created. It can only be found in `reply_to_message` if someone replies to a very first message in a directly created supergroup.

    Type:

      `bool`

  channel_chat_created

    Optional. Service message: The channel has been created. This field can’t be received in a message coming through updates, because bot can’t be a member of a channel when it is created. It can only be found in `reply_to_message` if someone replies to a very first message in a channel.

    Type:

      `bool`

  message_auto_delete_timer_changed

    Optional. Service message: auto-delete timer settings changed in the chat.

    New in version 13.4.

    Type:

      `telegram.MessageAutoDeleteTimerChanged`

  migrate_to_chat_id

    Optional. The group has been migrated to a supergroup with the specified identifier.

    Type:

      `int`

  migrate_from_chat_id

    Optional. The supergroup has been migrated from a group with the specified identifier.

    Type:

      `int`

  pinned_message

    Optional. Specified message was pinned. Note that the Message object in this field will not contain further `reply_to_message` fields even if it is itself a reply.

    Changed in version 20.8: This attribute now is either class:telegram.Message or class:telegram.InaccessibleMessage.

    Type:

      `telegram.MaybeInaccessibleMessage`

  invoice

    Optional. Message is an invoice for a payment, information about the invoice.

    Type:

      `telegram.Invoice`

  successful_payment

    Optional. Message is a service message about a successful payment, information about the payment.

    Type:

      `telegram.SuccessfulPayment`

  connected_website

    Optional. The domain name of the website on which the user has logged in.

    Type:

      `str`

  author_signature

    Optional. Signature of the post author for messages in channels, or the custom title of an anonymous group administrator.

    Type:

      `str`

  passport_data

    Optional. Telegram Passport data.

    Examples

    Passport Bot

    Type:

      `telegram.PassportData`

  poll

    Optional. Message is a native poll, information about the poll.

    Type:

      `telegram.Poll`

  dice

    Optional. Message is a dice with random value.

    Type:

      `telegram.Dice`

  via_bot

    Optional. Bot through which message was sent.

    Type:

      `telegram.User`

  proximity_alert_triggered

    Optional. Service message. A user in the chat triggered another user’s proximity alert while sharing Live Location.

    Type:

      `telegram.ProximityAlertTriggered`

  video_chat_scheduled

    Optional. Service message: video chat scheduled.

    New in version 20.0.

    Type:

      `telegram.VideoChatScheduled`

  video_chat_started

    Optional. Service message: video chat started.

    New in version 20.0.

    Type:

      `telegram.VideoChatStarted`

  video_chat_ended

    Optional. Service message: video chat ended.

    New in version 20.0.

    Type:

      `telegram.VideoChatEnded`

  video_chat_participants_invited

    Optional. Service message: new participants invited to a video chat.

    New in version 20.0.

    Type:

      `telegram.VideoChatParticipantsInvited`

  web_app_data

    Optional. Service message: data sent by a Web App.

    New in version 20.0.

    Type:

      `telegram.WebAppData`

  reply_markup

    Optional. Inline keyboard attached to the message. `login_url` buttons are represented as ordinary url buttons.

    Type:

      `telegram.InlineKeyboardMarkup`

  is_topic_message

    Optional. `True`, if the message is sent to a forum topic.

    New in version 20.0.

    Type:

      `bool`

  message_thread_id

    Optional. Unique identifier of a message thread to which the message belongs; for supergroups only.

    New in version 20.0.

    Type:

      `int`

  forum_topic_created

    Optional. Service message: forum topic created.

    New in version 20.0.

    Type:

      `telegram.ForumTopicCreated`

  forum_topic_closed

    Optional. Service message: forum topic closed.

    New in version 20.0.

    Type:

      `telegram.ForumTopicClosed`

  forum_topic_reopened

    Optional. Service message: forum topic reopened.

    New in version 20.0.

    Type:

      `telegram.ForumTopicReopened`

  forum_topic_edited

    Optional. Service message: forum topic edited.

    New in version 20.0.

    Type:

      `telegram.ForumTopicEdited`

  general_forum_topic_hidden

    Optional. Service message: General forum topic hidden.

    New in version 20.0.

    Type:

      `telegram.GeneralForumTopicHidden`

  general_forum_topic_unhidden

    Optional. Service message: General forum topic unhidden.

    New in version 20.0.

    Type:

      `telegram.GeneralForumTopicUnhidden`

  write_access_allowed

    Optional. Service message: the user allowed the bot added to the attachment menu to write messages.

    New in version 20.0.

    Type:

      `telegram.WriteAccessAllowed`

  has_media_spoiler

    Optional. `True`, if the message media is covered by a spoiler animation.

    New in version 20.0.

    Type:

      `bool`

  users_shared

    Optional. Service message: users were shared with the bot

    New in version 20.8.

    Type:

      `telegram.UsersShared`

  chat_shared

    Optional. Service message: a chat was shared with the bot.

    New in version 20.1.

    Type:

      `telegram.ChatShared`

  giveaway_created

    Optional. Service message: a scheduled giveaway was created

    New in version 20.8.

    Type:

      `telegram.GiveawayCreated`

  giveaway

    Optional. The message is a scheduled giveaway message

    New in version 20.8.

    Type:

      `telegram.Giveaway`

  giveaway_winners

    Optional. A giveaway with public winners was completed

    New in version 20.8.

    Type:

      `telegram.GiveawayWinners`

  giveaway_completed

    Optional. Service message: a giveaway without public winners was completed

    New in version 20.8.

    Type:

      `telegram.GiveawayCompleted`

  external_reply

    Optional. Information about the message that is being replied to, which may come from another chat or forum topic.

    New in version 20.8.

    Type:

      `telegram.ExternalReplyInfo`

  quote

    Optional. For replies that quote part of the original message, the quoted part of the message.

    New in version 20.8.

    Type:

      `telegram.TextQuote`

  forward_origin

    Information about the original message for forwarded messages

    New in version 20.8.

    Type:

      `telegram.MessageOrigin`, optional

  __bool__()

    Overrides `telegram.MaybeInaccessibleMessage.__bool__()` to use Pythons default implementation of `object.__bool__()` instead.

    Tip

    The current behavior is the same as before the introduction of `telegram.MaybeInaccessibleMessage`. This documentation is relevant only until `telegram.MaybeInaccessibleMessage.__bool__()` is removed.

  build_reply_arguments(quote=None, quote_index=None, target_chat_id=None, allow_sending_without_reply=None, message_thread_id=None)

    Builds a dictionary with the keys `chat_id` and `reply_parameters`. This dictionary can be used to reply to a message with the given quote and target chat.

    Examples

    Usage with `telegram.Bot.send_message()`:

        await bot.send_message(
            text="This is a reply",
            **message.build_reply_arguments(quote="Quoted Text")
        )

    Usage with `reply_text()`, replying in the same chat:

        await message.reply_text(
            "This is a reply",
            do_quote=message.build_reply_arguments(quote="Quoted Text")
        )

    Usage with `reply_text()`, replying in a different chat:

        await message.reply_text(
            "This is a reply",
            do_quote=message.build_reply_arguments(
                quote="Quoted Text",
                target_chat_id=-100123456789
            )
        )

    New in version 20.8.

    Parameters:

      - quote (`str`, optional) – Passed in `compute_quote_position_and_entities()` as parameter `quote` to compute quote entities. Defaults to `None`.

      - quote_index (`int`, optional) – Passed in `compute_quote_position_and_entities()` as parameter `quote_index` to compute quote position. Defaults to `None`.

      - target_chat_id (`int` | `str`, optional) – Unique identifier for the target chat or username of the target channel (in the format `@channelusername`). Defaults to `chat_id`.

      - allow_sending_without_reply (`bool`, optional) – Pass `True`, if the message should be sent even if the specified replied-to message is not found. Will be applied only if the reply happens in the same chat and forum topic.

      - message_thread_id (`int`, optional) – Unique identifier for the target message thread of the forum topic.

    Return type:

      `dict`

  property caption_html

    Creates an HTML-formatted string from the markup entities found in the message’s caption.

    Use this if you want to retrieve the message caption with the caption entities formatted as HTML in the same way the original message was formatted.

    Warning

    The return value of this property is a best-effort approach. Unfortunately, it can not be guaranteed that sending a message with the returned string will render in the same way as the original message produces the same `entities`/`caption_entities` as the original message. For example, Telegram recommends that entities of type `BLOCKQUOTE` and `PRE` should start and end on a new line, but does not enforce this and leaves rendering decisions up to the clients.

    Changed in version 13.10: Spoiler entities are now formatted as HTML.

    Changed in version 20.3: Custom emoji entities are now supported.

    Changed in version 20.8: Blockquote entities are now supported.

    Returns:

      Message caption with caption entities formatted as HTML.

    Return type:

      `str`

  property caption_html_urled

    Creates an HTML-formatted string from the markup entities found in the message’s caption.

    Use this if you want to retrieve the message caption with the caption entities formatted as HTML. This also formats `telegram.MessageEntity.URL` as a hyperlink.

    Warning

    The return value of this property is a best-effort approach. Unfortunately, it can not be guaranteed that sending a message with the returned string will render in the same way as the original message produces the same `entities`/`caption_entities` as the original message. For example, Telegram recommends that entities of type `BLOCKQUOTE` and `PRE` should start and end on a new line, but does not enforce this and leaves rendering decisions up to the clients.

    Changed in version 13.10: Spoiler entities are now formatted as HTML.

    Changed in version 20.3: Custom emoji entities are now supported.

    Changed in version 20.8: Blockquote entities are now supported.

    Returns:

      Message caption with caption entities formatted as HTML.

    Return type:

      `str`

  property caption_markdown

    Creates an Markdown-formatted string from the markup entities found in the message’s caption using `telegram.constants.ParseMode.MARKDOWN`.

    Use this if you want to retrieve the message caption with the caption entities formatted as Markdown in the same way the original message was formatted.

    Warning

    The return value of this property is a best-effort approach. Unfortunately, it can not be guaranteed that sending a message with the returned string will render in the same way as the original message produces the same `entities`/`caption_entities` as the original message. For example, Telegram recommends that entities of type `BLOCKQUOTE` and `PRE` should start and end on a new line, but does not enforce this and leaves rendering decisions up to the clients. Moreover, markdown formatting is inherently less expressive than HTML, so some edge cases may not be coverable at all. For example, markdown formatting can not specify two consecutive block quotes without a blank line in between, but HTML can.

    Note

    `'Markdown'` is a legacy mode, retained by Telegram for backward compatibility. You should use `caption_markdown_v2()`

    Changed in version 20.5: Since custom emoji entities are not supported by `MARKDOWN`, this method now raises a `ValueError` when encountering a custom emoji.

    Changed in version 20.8: Since block quotation entities are not supported by `MARKDOWN`, this method now raises a `ValueError` when encountering a block quotation.

    Returns:

      Message caption with caption entities formatted as Markdown.

    Return type:

      `str`

    Raises:

      ValueError – If the message contains underline, strikethrough, spoiler, blockquote or nested entities.

  property caption_markdown_urled

    Creates an Markdown-formatted string from the markup entities found in the message’s caption using `telegram.constants.ParseMode.MARKDOWN`.

    Use this if you want to retrieve the message caption with the caption entities formatted as Markdown. This also formats `telegram.MessageEntity.URL` as a hyperlink.

    Warning

    The return value of this property is a best-effort approach. Unfortunately, it can not be guaranteed that sending a message with the returned string will render in the same way as the original message produces the same `entities`/`caption_entities` as the original message. For example, Telegram recommends that entities of type `BLOCKQUOTE` and `PRE` should start and end on a new line, but does not enforce this and leaves rendering decisions up to the clients. Moreover, markdown formatting is inherently less expressive than HTML, so some edge cases may not be coverable at all. For example, markdown formatting can not specify two consecutive block quotes without a blank line in between, but HTML can.

    Note

    `'Markdown'` is a legacy mode, retained by Telegram for backward compatibility. You should use `caption_markdown_v2_urled()` instead.

    Changed in version 20.5: Since custom emoji entities are not supported by `MARKDOWN`, this method now raises a `ValueError` when encountering a custom emoji.

    Changed in version 20.8: Since block quotation entities are not supported by `MARKDOWN`, this method now raises a `ValueError` when encountering a block quotation.

    Returns:

      Message caption with caption entities formatted as Markdown.

    Return type:

      `str`

    Raises:

      ValueError – If the message contains underline, strikethrough, spoiler, blockquote or nested entities.

  property caption_markdown_v2

    Creates an Markdown-formatted string from the markup entities found in the message’s caption using `telegram.constants.ParseMode.MARKDOWN_V2`.

    Use this if you want to retrieve the message caption with the caption entities formatted as Markdown in the same way the original message was formatted.

    Warning

    The return value of this property is a best-effort approach. Unfortunately, it can not be guaranteed that sending a message with the returned string will render in the same way as the original message produces the same `entities`/`caption_entities` as the original message. For example, Telegram recommends that entities of type `BLOCKQUOTE` and `PRE` should start and end on a new line, but does not enforce this and leaves rendering decisions up to the clients. Moreover, markdown formatting is inherently less expressive than HTML, so some edge cases may not be coverable at all. For example, markdown formatting can not specify two consecutive block quotes without a blank line in between, but HTML can.

    Changed in version 13.10: Spoiler entities are now formatted as Markdown V2.

    Changed in version 20.3: Custom emoji entities are now supported.

    Changed in version 20.8: Blockquote entities are now supported.

    Returns:

      Message caption with caption entities formatted as Markdown.

    Return type:

      `str`

  property caption_markdown_v2_urled

    Creates an Markdown-formatted string from the markup entities found in the message’s caption using `telegram.constants.ParseMode.MARKDOWN_V2`.

    Use this if you want to retrieve the message caption with the caption entities formatted as Markdown. This also formats `telegram.MessageEntity.URL` as a hyperlink.

    Warning

    The return value of this property is a best-effort approach. Unfortunately, it can not be guaranteed that sending a message with the returned string will render in the same way as the original message produces the same `entities`/`caption_entities` as the original message. For example, Telegram recommends that entities of type `BLOCKQUOTE` and `PRE` should start and end on a new line, but does not enforce this and leaves rendering decisions up to the clients. Moreover, markdown formatting is inherently less expressive than HTML, so some edge cases may not be coverable at all. For example, markdown formatting can not specify two consecutive block quotes without a blank line in between, but HTML can.

    Changed in version 13.10: Spoiler entities are now formatted as Markdown V2.

    Changed in version 20.3: Custom emoji entities are now supported.

    Changed in version 20.8: Blockquote entities are now supported.

    Returns:

      Message caption with caption entities formatted as Markdown.

    Return type:

      `str`

  property chat_id

    Shortcut for `telegram.Chat.id` for `chat`.

    Type:

      `int`

  async close_forum_topic(*, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.close_forum_topic(
           chat_id=message.chat_id, message_thread_id=message.message_thread_id, *args,
           **kwargs
        )

    For the documentation of the arguments, please see `telegram.Bot.close_forum_topic()`.

    New in version 20.0.

    Returns:

      On success, `True` is returned.

    Return type:

      `bool`

  compute_quote_position_and_entities(quote, index=None)

    Use this function to compute position and entities of a quote in the message text or caption. Useful for filling the parameters `quote_position` and `quote_entities` of `telegram.ReplyParameters` when replying to a message.

    Example

    Given a message with the text `"Hello, world! Hello, world!"`, the following code will return the position and entities of the second occurrence of `"Hello, world!"`.

        message.compute_quote_position_and_entities("Hello, world!", 1)

    New in version 20.8.

    Parameters:

      - quote (`str`) – Part of the message which is to be quoted. This is expected to have plain text without formatting entities.

      - index (`int`, optional) – 0-based index of the occurrence of the quote in the message. If not specified, the first occurrence is used.

    Returns:

      On success, a tuple containing information about quote position and entities is returned.

    Return type:

      Tuple[`int`, `None` | Tuple[`MessageEntity`, …]]

    Raises:

      - RuntimeError – If the message has neither `text` nor `caption`.

      - ValueError – If the requested index of quote doesn’t exist in the message.

  async copy(chat_id, caption=None, parse_mode=None, caption_entities=None, disable_notification=None, reply_to_message_id=None, allow_sending_without_reply=None, reply_markup=None, protect_content=None, message_thread_id=None, reply_parameters=None, *, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.copy_message(
            chat_id=chat_id,
            from_chat_id=update.effective_message.chat_id,
            message_id=update.effective_message.message_id,
            *args,
            **kwargs
        )

    For the documentation of the arguments, please see `telegram.Bot.copy_message()`.

    Returns:

      On success, returns the MessageId of the sent message.

    Return type:

      `telegram.MessageId`

  classmethod de_json(data, bot)

    See `telegram.TelegramObject.de_json()`.

  async delete(*, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.delete_message(
            chat_id=message.chat_id, message_id=message.message_id, *args, **kwargs
        )

    For the documentation of the arguments, please see `telegram.Bot.delete_message()`.

    Returns:

      On success, `True` is returned.

    Return type:

      `bool`

  async delete_forum_topic(*, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.delete_forum_topic(
           chat_id=message.chat_id, message_thread_id=message.message_thread_id, *args,
           **kwargs
        )

    For the documentation of the arguments, please see `telegram.Bot.delete_forum_topic()`.

    New in version 20.0.

    Returns:

      On success, `True` is returned.

    Return type:

      `bool`

  async edit_caption(caption=None, reply_markup=None, parse_mode=None, caption_entities=None, *, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.edit_message_caption(
            chat_id=message.chat_id, message_id=message.message_id, *args, **kwargs
        )

    For the documentation of the arguments, please see `telegram.Bot.edit_message_caption()`.

    Note

    You can only edit messages that the bot sent itself (i.e. of the `bot.send_*` family of methods) or channel posts, if the bot is an admin in that channel. However, this behaviour is undocumented and might be changed by Telegram.

    Returns:

      On success, if edited message is sent by the bot, the edited Message is returned, otherwise `True` is returned.

    Return type:

      `telegram.Message`

  async edit_forum_topic(name=None, icon_custom_emoji_id=None, *, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.edit_forum_topic(
           chat_id=message.chat_id, message_thread_id=message.message_thread_id, *args,
           **kwargs
        )

    For the documentation of the arguments, please see `telegram.Bot.edit_forum_topic()`.

    New in version 20.0.

    Returns:

      On success, `True` is returned.

    Return type:

      `bool`

  async edit_live_location(latitude=None, longitude=None, reply_markup=None, horizontal_accuracy=None, heading=None, proximity_alert_radius=None, *, location=None, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.edit_message_live_location(
            chat_id=message.chat_id, message_id=message.message_id, *args, **kwargs
        )

    For the documentation of the arguments, please see `telegram.Bot.edit_message_live_location()`.

    Note

    You can only edit messages that the bot sent itself (i.e. of the `bot.send_*` family of methods) or channel posts, if the bot is an admin in that channel. However, this behaviour is undocumented and might be changed by Telegram.

    Returns:

      On success, if edited message is sent by the bot, the edited Message is returned, otherwise `True` is returned.

    Return type:

      `telegram.Message`

  async edit_media(media, reply_markup=None, *, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.edit_message_media(
            chat_id=message.chat_id, message_id=message.message_id, *args, **kwargs
        )

    For the documentation of the arguments, please see `telegram.Bot.edit_message_media()`.

    Note

    You can only edit messages that the bot sent itself(i.e. of the `bot.send_*` family of methods) or channel posts, if the bot is an admin in that channel. However, this behaviour is undocumented and might be changed by Telegram.

    Returns:

      On success, if edited message is not an inline message, the edited Message is returned, otherwise `True` is returned.

    Return type:

      `telegram.Message`

  async edit_reply_markup(reply_markup=None, *, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.edit_message_reply_markup(
            chat_id=message.chat_id, message_id=message.message_id, *args, **kwargs
        )

    For the documentation of the arguments, please see `telegram.Bot.edit_message_reply_markup()`.

    Note

    You can only edit messages that the bot sent itself (i.e. of the `bot.send_*` family of methods) or channel posts, if the bot is an admin in that channel. However, this behaviour is undocumented and might be changed by Telegram.

    Returns:

      On success, if edited message is sent by the bot, the edited Message is returned, otherwise `True` is returned.

    Return type:

      `telegram.Message`

  async edit_text(text, parse_mode=None, disable_web_page_preview=None, reply_markup=None, entities=None, link_preview_options=None, *, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.edit_message_text(
            chat_id=message.chat_id, message_id=message.message_id, *args, **kwargs
        )

    For the documentation of the arguments, please see `telegram.Bot.edit_message_text()`.

    Note

    You can only edit messages that the bot sent itself (i.e. of the `bot.send_*` family of methods) or channel posts, if the bot is an admin in that channel. However, this behaviour is undocumented and might be changed by Telegram.

    Returns:

      On success, if edited message is sent by the bot, the edited Message is returned, otherwise `True` is returned.

    Return type:

      `telegram.Message`

  property effective_attachment

    If this message is neither a plain text message nor a status update, this gives the attachment that this message was sent with. This may be one of

    - `telegram.Audio`

    - `telegram.Dice`

    - `telegram.Contact`

    - `telegram.Document`

    - `telegram.Animation`

    - `telegram.Game`

    - `telegram.Invoice`

    - `telegram.Location`

    - `telegram.PassportData`

    - List[`telegram.PhotoSize`]

    - `telegram.Poll`

    - `telegram.Sticker`

    - `telegram.Story`

    - `telegram.SuccessfulPayment`

    - `telegram.Venue`

    - `telegram.Video`

    - `telegram.VideoNote`

    - `telegram.Voice`

    Otherwise `None` is returned.

    See also

    Working with Files and Media

    Changed in version 20.0: `dice`, `passport_data` and `poll` are now also considered to be an attachment.

  async forward(chat_id, disable_notification=None, protect_content=None, message_thread_id=None, *, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.forward_message(
            from_chat_id=update.effective_message.chat_id,
            message_id=update.effective_message.message_id,
            *args,
            **kwargs
        )

    For the documentation of the arguments, please see `telegram.Bot.forward_message()`.

    Note

    Since the release of Bot API 5.5 it can be impossible to forward messages from some chats. Use the attributes `telegram.Message.has_protected_content` and `telegram.Chat.has_protected_content` to check this.

    As a workaround, it is still possible to use `copy()`. However, this behaviour is undocumented and might be changed by Telegram.

    Returns:

      On success, instance representing the message forwarded.

    Return type:

      `telegram.Message`

  property forward_date

    Optional. For forwarded messages, date the original message was sent in Unix time. Converted to `datetime.datetime`.

    > Changed in version 20.3: The default timezone of the bot is used for localization, which is UTC unless `telegram.ext.Defaults.tzinfo` is used.

    Deprecated since version 20.8: Bot API 7.0 deprecates `forward_date` in favor of `forward_origin`.

    Type:

      `datetime.datetime`

  property forward_from

    Optional. For forwarded messages, sender of the original message.

    Deprecated since version 20.8: Bot API 7.0 deprecates `forward_from` in favor of `forward_origin`.

    Type:

      `telegram.User`

  property forward_from_chat

    Optional. For messages forwarded from channels or from anonymous administrators, information about the original sender chat.

    Deprecated since version 20.8: Bot API 7.0 deprecates `forward_from_chat` in favor of `forward_origin`.

    Type:

      `telegram.Chat`

  property forward_from_message_id

    Optional. For forwarded channel posts, identifier of the original message in the channel.

    Deprecated since version 20.8: Bot API 7.0 deprecates `forward_from_message_id` in favor of `forward_origin`.

    Type:

      `int`

  property forward_sender_name

    Optional. Sender’s name for messages forwarded from users who disallow adding a link to their account in forwarded messages.

    Deprecated since version 20.8: Bot API 7.0 deprecates `forward_sender_name` in favor of `forward_origin`.

    Type:

      `telegram.User`

  property forward_signature

    Optional. For messages forwarded from channels, signature of the post author if present.

    Deprecated since version 20.8: Bot API 7.0 deprecates `forward_signature` in favor of `forward_origin`.

    Type:

      `str`

  async get_game_high_scores(user_id, *, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.get_game_high_scores(
            chat_id=message.chat_id, message_id=message.message_id, *args, **kwargs
        )

    For the documentation of the arguments, please see `telegram.Bot.get_game_high_scores()`.

    Note

    You can only edit messages that the bot sent itself (i.e. of the `bot.send_*` family of methods) or channel posts, if the bot is an admin in that channel. However, this behaviour is undocumented and might be changed by Telegram.

    Returns:

      Tuple[`telegram.GameHighScore`]

  property id

    Shortcut for `message_id`.

    New in version 20.0.

    Type:

      `int`

  property link

    Convenience property. If the chat of the message is not a private chat or normal group, returns a t.me link of the message.

    > Changed in version 20.3: For messages that are replies or part of a forum topic, the link now points to the corresponding thread view.

    Type:

      `str`

  parse_caption_entities(types=None)

    Returns a `dict` that maps `telegram.MessageEntity` to `str`. It contains entities from this message’s caption filtered by their `telegram.MessageEntity.type` attribute as the key, and the text that each entity belongs to as the value of the `dict`.

    Note

    This method should always be used instead of the `caption_entities` attribute, since it calculates the correct substring from the message text based on UTF-16 codepoints. See `parse_entity` for more info.

    Parameters:

      types (List[`str`], optional) – List of `telegram.MessageEntity` types as strings. If the `type` attribute of an entity is contained in this list, it will be returned. Defaults to a list of all types. All types can be found as constants in `telegram.MessageEntity`.

    Returns:

      A dictionary of entities mapped to the text that belongs to them, calculated based on UTF-16 codepoints.

    Return type:

      Dict[`telegram.MessageEntity`, `str`]

  parse_caption_entity(entity)

    Returns the text from a given `telegram.MessageEntity`.

    Note

    This method is present because Telegram calculates the offset and length in UTF-16 codepoint pairs, which some versions of Python don’t handle automatically. (That is, you can’t just slice `Message.caption` with the offset and length.)

    Parameters:

      entity (`telegram.MessageEntity`) – The entity to extract the text from. It must be an entity that belongs to this message.

    Returns:

      The text of the given entity.

    Return type:

      `str`

    Raises:

      RuntimeError – If the message has no caption.

  parse_entities(types=None)

    Returns a `dict` that maps `telegram.MessageEntity` to `str`. It contains entities from this message filtered by their `telegram.MessageEntity.type` attribute as the key, and the text that each entity belongs to as the value of the `dict`.

    Note

    This method should always be used instead of the `entities` attribute, since it calculates the correct substring from the message text based on UTF-16 codepoints. See `parse_entity` for more info.

    Parameters:

      types (List[`str`], optional) – List of `telegram.MessageEntity` types as strings. If the `type` attribute of an entity is contained in this list, it will be returned. Defaults to a list of all types. All types can be found as constants in `telegram.MessageEntity`.

    Returns:

      A dictionary of entities mapped to the text that belongs to them, calculated based on UTF-16 codepoints.

    Return type:

      Dict[`telegram.MessageEntity`, `str`]

  parse_entity(entity)

    Returns the text from a given `telegram.MessageEntity`.

    Note

    This method is present because Telegram calculates the offset and length in UTF-16 codepoint pairs, which some versions of Python don’t handle automatically. (That is, you can’t just slice `Message.text` with the offset and length.)

    Parameters:

      entity (`telegram.MessageEntity`) – The entity to extract the text from. It must be an entity that belongs to this message.

    Returns:

      The text of the given entity.

    Return type:

      `str`

    Raises:

      RuntimeError – If the message has no text.

  async pin(disable_notification=None, *, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.pin_chat_message(
            chat_id=message.chat_id, message_id=message.message_id, *args, **kwargs
        )

    For the documentation of the arguments, please see `telegram.Bot.pin_chat_message()`.

    Returns:

      On success, `True` is returned.

    Return type:

      `bool`

  async reopen_forum_topic(*, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.reopen_forum_topic(
            chat_id=message.chat_id, message_thread_id=message.message_thread_id, *args,
            **kwargs
         )

    For the documentation of the arguments, please see `telegram.Bot.reopen_forum_topic()`.

    New in version 20.0.

    Returns:

      On success, `True` is returned.

    Return type:

      `bool`

  async reply_animation(animation, duration=None, width=None, height=None, caption=None, parse_mode=None, disable_notification=None, reply_to_message_id=None, reply_markup=None, allow_sending_without_reply=None, caption_entities=None, protect_content=None, message_thread_id=None, has_spoiler=None, thumbnail=None, reply_parameters=None, *, filename=None, quote=None, do_quote=None, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.send_animation(update.effective_message.chat_id, *args, **kwargs)

    For the documentation of the arguments, please see `telegram.Bot.send_animation()`.

    Keyword Arguments:

      - quote (`bool`, optional) –

        If set to `True`, the reply is sent as an actual reply to this message. If `reply_to_message_id` is passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats.

        Deprecated since version 20.8: This argument is deprecated in favor of `do_quote`

      - do_quote (`bool` | `dict`, optional) –

        If set to `True`, the replied message is quoted. For a dict, it must be the output of `build_reply_arguments()` to specify exact `reply_parameters`. If `reply_to_message_id` or `reply_parameters` are passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats. Mutually exclusive with `quote`.

        New in version 20.8.

    Returns:

      On success, instance representing the message posted.

    Return type:

      `telegram.Message`

  async reply_audio(audio, duration=None, performer=None, title=None, caption=None, disable_notification=None, reply_to_message_id=None, reply_markup=None, parse_mode=None, allow_sending_without_reply=None, caption_entities=None, protect_content=None, message_thread_id=None, thumbnail=None, reply_parameters=None, *, filename=None, quote=None, do_quote=None, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.send_audio(update.effective_message.chat_id, *args, **kwargs)

    For the documentation of the arguments, please see `telegram.Bot.send_audio()`.

    Keyword Arguments:

      - quote (`bool`, optional) –

        If set to `True`, the reply is sent as an actual reply to this message. If `reply_to_message_id` is passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats.

        Deprecated since version 20.8: This argument is deprecated in favor of `do_quote`

      - do_quote (`bool` | `dict`, optional) –

        If set to `True`, the replied message is quoted. For a dict, it must be the output of `build_reply_arguments()` to specify exact `reply_parameters`. If `reply_to_message_id` or `reply_parameters` are passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats. Mutually exclusive with `quote`.

        New in version 20.8.

    Returns:

      On success, instance representing the message posted.

    Return type:

      `telegram.Message`

  async reply_chat_action(action, message_thread_id=None, *, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.send_chat_action(update.effective_message.chat_id, *args, **kwargs)

    For the documentation of the arguments, please see `telegram.Bot.send_chat_action()`.

    New in version 13.2.

    Returns:

      On success, `True` is returned.

    Return type:

      `bool`

  async reply_contact(phone_number=None, first_name=None, last_name=None, disable_notification=None, reply_to_message_id=None, reply_markup=None, vcard=None, allow_sending_without_reply=None, protect_content=None, message_thread_id=None, reply_parameters=None, *, contact=None, quote=None, do_quote=None, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.send_contact(update.effective_message.chat_id, *args, **kwargs)

    For the documentation of the arguments, please see `telegram.Bot.send_contact()`.

    Keyword Arguments:

      - quote (`bool`, optional) –

        If set to `True`, the reply is sent as an actual reply to this message. If `reply_to_message_id` is passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats.

        Deprecated since version 20.8: This argument is deprecated in favor of `do_quote`

      - do_quote (`bool` | `dict`, optional) –

        If set to `True`, the replied message is quoted. For a dict, it must be the output of `build_reply_arguments()` to specify exact `reply_parameters`. If `reply_to_message_id` or `reply_parameters` are passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats. Mutually exclusive with `quote`.

        New in version 20.8.

    Returns:

      On success, instance representing the message posted.

    Return type:

      `telegram.Message`

  async reply_copy(from_chat_id, message_id, caption=None, parse_mode=None, caption_entities=None, disable_notification=None, reply_to_message_id=None, allow_sending_without_reply=None, reply_markup=None, protect_content=None, message_thread_id=None, reply_parameters=None, *, quote=None, do_quote=None, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.copy_message(
            chat_id=message.chat.id,
            message_id=message_id,
            *args,
            **kwargs
        )

    For the documentation of the arguments, please see `telegram.Bot.copy_message()`.

    Keyword Arguments:

      - quote (`bool`, optional) –

        If set to `True`, the reply is sent as an actual reply to this message. If `reply_to_message_id` is passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats.

        New in version 13.1.

        Deprecated since version 20.8: This argument is deprecated in favor of `do_quote`

      - do_quote (`bool` | `dict`, optional) –

        If set to `True`, the replied message is quoted. For a dict, it must be the output of `build_reply_arguments()` to specify exact `reply_parameters`. If `reply_to_message_id` or `reply_parameters` are passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats. Mutually exclusive with `quote`.

        New in version 20.8.

    Returns:

      On success, returns the MessageId of the sent message.

    Return type:

      `telegram.MessageId`

  async reply_dice(disable_notification=None, reply_to_message_id=None, reply_markup=None, emoji=None, allow_sending_without_reply=None, protect_content=None, message_thread_id=None, reply_parameters=None, *, quote=None, do_quote=None, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.send_dice(update.effective_message.chat_id, *args, **kwargs)

    For the documentation of the arguments, please see `telegram.Bot.send_dice()`.

    Keyword Arguments:

      - quote (`bool`, optional) –

        If set to `True`, the reply is sent as an actual reply to this message. If `reply_to_message_id` is passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats.

        Deprecated since version 20.8: This argument is deprecated in favor of `do_quote`

      - do_quote (`bool` | `dict`, optional) –

        If set to `True`, the replied message is quoted. For a dict, it must be the output of `build_reply_arguments()` to specify exact `reply_parameters`. If `reply_to_message_id` or `reply_parameters` are passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats. Mutually exclusive with `quote`.

        New in version 20.8.

    Returns:

      On success, instance representing the message posted.

    Return type:

      `telegram.Message`

  async reply_document(document, caption=None, disable_notification=None, reply_to_message_id=None, reply_markup=None, parse_mode=None, disable_content_type_detection=None, allow_sending_without_reply=None, caption_entities=None, protect_content=None, message_thread_id=None, thumbnail=None, reply_parameters=None, *, filename=None, quote=None, do_quote=None, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.send_document(update.effective_message.chat_id, *args, **kwargs)

    For the documentation of the arguments, please see `telegram.Bot.send_document()`.

    Keyword Arguments:

      - quote (`bool`, optional) –

        If set to `True`, the reply is sent as an actual reply to this message. If `reply_to_message_id` is passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats.

        Deprecated since version 20.8: This argument is deprecated in favor of `do_quote`

      - do_quote (`bool` | `dict`, optional) –

        If set to `True`, the replied message is quoted. For a dict, it must be the output of `build_reply_arguments()` to specify exact `reply_parameters`. If `reply_to_message_id` or `reply_parameters` are passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats. Mutually exclusive with `quote`.

        New in version 20.8.

    Returns:

      On success, instance representing the message posted.

    Return type:

      `telegram.Message`

  async reply_game(game_short_name, disable_notification=None, reply_to_message_id=None, reply_markup=None, allow_sending_without_reply=None, protect_content=None, message_thread_id=None, reply_parameters=None, *, quote=None, do_quote=None, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.send_game(update.effective_message.chat_id, *args, **kwargs)

    For the documentation of the arguments, please see `telegram.Bot.send_game()`.

    Keyword Arguments:

      - quote (`bool`, optional) –

        If set to `True`, the reply is sent as an actual reply to this message. If `reply_to_message_id` is passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats.

        Deprecated since version 20.8: This argument is deprecated in favor of `do_quote`

      - do_quote (`bool` | `dict`, optional) –

        If set to `True`, the replied message is quoted. For a dict, it must be the output of `build_reply_arguments()` to specify exact `reply_parameters`. If `reply_to_message_id` or `reply_parameters` are passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats. Mutually exclusive with `quote`.

        New in version 20.8.

    New in version 13.2.

    Returns:

      On success, instance representing the message posted.

    Return type:

      `telegram.Message`

  async reply_html(text, disable_web_page_preview=None, disable_notification=None, reply_to_message_id=None, reply_markup=None, allow_sending_without_reply=None, entities=None, protect_content=None, message_thread_id=None, link_preview_options=None, reply_parameters=None, *, quote=None, do_quote=None, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.send_message(
            update.effective_message.chat_id,
            parse_mode=ParseMode.HTML,
            *args,
            **kwargs,
        )

    Sends a message with HTML formatting.

    For the documentation of the arguments, please see `telegram.Bot.send_message()`.

    Keyword Arguments:

      - quote (`bool`, optional) –

        If set to `True`, the reply is sent as an actual reply to this message. If `reply_to_message_id` is passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats.

        Deprecated since version 20.8: This argument is deprecated in favor of `do_quote`

      - do_quote (`bool` | `dict`, optional) –

        If set to `True`, the replied message is quoted. For a dict, it must be the output of `build_reply_arguments()` to specify exact `reply_parameters`. If `reply_to_message_id` or `reply_parameters` are passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats. Mutually exclusive with `quote`.

        New in version 20.8.

    Returns:

      On success, instance representing the message posted.

    Return type:

      `telegram.Message`

  async reply_invoice(title, description, payload, provider_token, currency, prices, start_parameter=None, photo_url=None, photo_size=None, photo_width=None, photo_height=None, need_name=None, need_phone_number=None, need_email=None, need_shipping_address=None, is_flexible=None, disable_notification=None, reply_to_message_id=None, reply_markup=None, provider_data=None, send_phone_number_to_provider=None, send_email_to_provider=None, allow_sending_without_reply=None, max_tip_amount=None, suggested_tip_amounts=None, protect_content=None, message_thread_id=None, reply_parameters=None, *, quote=None, do_quote=None, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.send_invoice(update.effective_message.chat_id, *args, **kwargs)

    For the documentation of the arguments, please see `telegram.Bot.send_invoice()`.

    Warning

    As of API 5.2 `start_parameter` is an optional argument and therefore the order of the arguments had to be changed. Use keyword arguments to make sure that the arguments are passed correctly.

    New in version 13.2.

    Changed in version 13.5: As of Bot API 5.2, the parameter `start_parameter` is optional.

    Keyword Arguments:

      - quote (`bool`, optional) –

        If set to `True`, the reply is sent as an actual reply to this message. If `reply_to_message_id` is passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats.

        Deprecated since version 20.8: This argument is deprecated in favor of `do_quote`

      - do_quote (`bool` | `dict`, optional) –

        If set to `True`, the replied message is quoted. For a dict, it must be the output of `build_reply_arguments()` to specify exact `reply_parameters`. If `reply_to_message_id` or `reply_parameters` are passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats. Mutually exclusive with `quote`.

        New in version 20.8.

    Returns:

      On success, instance representing the message posted.

    Return type:

      `telegram.Message`

  async reply_location(latitude=None, longitude=None, disable_notification=None, reply_to_message_id=None, reply_markup=None, live_period=None, horizontal_accuracy=None, heading=None, proximity_alert_radius=None, allow_sending_without_reply=None, protect_content=None, message_thread_id=None, reply_parameters=None, *, location=None, quote=None, do_quote=None, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.send_location(update.effective_message.chat_id, *args, **kwargs)

    For the documentation of the arguments, please see `telegram.Bot.send_location()`.

    Keyword Arguments:

      - quote (`bool`, optional) –

        If set to `True`, the reply is sent as an actual reply to this message. If `reply_to_message_id` is passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats.

        Deprecated since version 20.8: This argument is deprecated in favor of `do_quote`

      - do_quote (`bool` | `dict`, optional) –

        If set to `True`, the replied message is quoted. For a dict, it must be the output of `build_reply_arguments()` to specify exact `reply_parameters`. If `reply_to_message_id` or `reply_parameters` are passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats. Mutually exclusive with `quote`.

        New in version 20.8.

    Returns:

      On success, instance representing the message posted.

    Return type:

      `telegram.Message`

  async reply_markdown(text, disable_web_page_preview=None, disable_notification=None, reply_to_message_id=None, reply_markup=None, allow_sending_without_reply=None, entities=None, protect_content=None, message_thread_id=None, link_preview_options=None, reply_parameters=None, *, quote=None, do_quote=None, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.send_message(
            update.effective_message.chat_id,
            parse_mode=ParseMode.MARKDOWN,
            *args,
            **kwargs,
        )

    Sends a message with Markdown version 1 formatting.

    For the documentation of the arguments, please see `telegram.Bot.send_message()`.

    Note

    `'Markdown'` is a legacy mode, retained by Telegram for backward compatibility. You should use `reply_markdown_v2()` instead.

    Keyword Arguments:

      - quote (`bool`, optional) –

        If set to `True`, the reply is sent as an actual reply to this message. If `reply_to_message_id` is passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats.

        Deprecated since version 20.8: This argument is deprecated in favor of `do_quote`

      - do_quote (`bool` | `dict`, optional) –

        If set to `True`, the replied message is quoted. For a dict, it must be the output of `build_reply_arguments()` to specify exact `reply_parameters`. If `reply_to_message_id` or `reply_parameters` are passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats. Mutually exclusive with `quote`.

        New in version 20.8.

    Returns:

      On success, instance representing the message posted.

    Return type:

      `telegram.Message`

  async reply_markdown_v2(text, disable_web_page_preview=None, disable_notification=None, reply_to_message_id=None, reply_markup=None, allow_sending_without_reply=None, entities=None, protect_content=None, message_thread_id=None, link_preview_options=None, reply_parameters=None, *, quote=None, do_quote=None, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.send_message(
            update.effective_message.chat_id,
            parse_mode=ParseMode.MARKDOWN_V2,
            *args,
            **kwargs,
        )

    Sends a message with markdown version 2 formatting.

    For the documentation of the arguments, please see `telegram.Bot.send_message()`.

    Keyword Arguments:

      - quote (`bool`, optional) –

        If set to `True`, the reply is sent as an actual reply to this message. If `reply_to_message_id` is passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats.

        Deprecated since version 20.8: This argument is deprecated in favor of `do_quote`

      - do_quote (`bool` | `dict`, optional) –

        If set to `True`, the replied message is quoted. For a dict, it must be the output of `build_reply_arguments()` to specify exact `reply_parameters`. If `reply_to_message_id` or `reply_parameters` are passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats. Mutually exclusive with `quote`.

        New in version 20.8.

    Returns:

      On success, instance representing the message posted.

    Return type:

      `telegram.Message`

  async reply_media_group(media, disable_notification=None, reply_to_message_id=None, allow_sending_without_reply=None, protect_content=None, message_thread_id=None, reply_parameters=None, *, quote=None, do_quote=None, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None, caption=None, parse_mode=None, caption_entities=None)

    Shortcut for:

        await bot.send_media_group(update.effective_message.chat_id, *args, **kwargs)

    For the documentation of the arguments, please see `telegram.Bot.send_media_group()`.

    Keyword Arguments:

      - quote (`bool`, optional) –

        If set to `True`, the reply is sent as an actual reply to this message. If `reply_to_message_id` is passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats.

        Deprecated since version 20.8: This argument is deprecated in favor of `do_quote`

      - do_quote (`bool` | `dict`, optional) –

        If set to `True`, the replied message is quoted. For a dict, it must be the output of `build_reply_arguments()` to specify exact `reply_parameters`. If `reply_to_message_id` or `reply_parameters` are passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats. Mutually exclusive with `quote`.

        New in version 20.8.

    Returns:

      An array of the sent Messages.

    Return type:

      Tuple[`telegram.Message`]

    Raises:

      telegram.error.TelegramError –

  async reply_photo(photo, caption=None, disable_notification=None, reply_to_message_id=None, reply_markup=None, parse_mode=None, allow_sending_without_reply=None, caption_entities=None, protect_content=None, message_thread_id=None, has_spoiler=None, reply_parameters=None, *, filename=None, quote=None, do_quote=None, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.send_photo(update.effective_message.chat_id, *args, **kwargs)

    For the documentation of the arguments, please see `telegram.Bot.send_photo()`.

    Keyword Arguments:

      - quote (`bool`, optional) –

        If set to `True`, the reply is sent as an actual reply to this message. If `reply_to_message_id` is passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats.

        Deprecated since version 20.8: This argument is deprecated in favor of `do_quote`

      - do_quote (`bool` | `dict`, optional) –

        If set to `True`, the replied message is quoted. For a dict, it must be the output of `build_reply_arguments()` to specify exact `reply_parameters`. If `reply_to_message_id` or `reply_parameters` are passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats. Mutually exclusive with `quote`.

        New in version 20.8.

    Returns:

      On success, instance representing the message posted.

    Return type:

      `telegram.Message`

  async reply_poll(question, options, is_anonymous=None, type=None, allows_multiple_answers=None, correct_option_id=None, is_closed=None, disable_notification=None, reply_to_message_id=None, reply_markup=None, explanation=None, explanation_parse_mode=None, open_period=None, close_date=None, allow_sending_without_reply=None, explanation_entities=None, protect_content=None, message_thread_id=None, reply_parameters=None, *, quote=None, do_quote=None, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.send_poll(update.effective_message.chat_id, *args, **kwargs)

    For the documentation of the arguments, please see `telegram.Bot.send_poll()`.

    Keyword Arguments:

      - quote (`bool`, optional) –

        If set to `True`, the reply is sent as an actual reply to this message. If `reply_to_message_id` is passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats.

        Deprecated since version 20.8: This argument is deprecated in favor of `do_quote`

      - do_quote (`bool` | `dict`, optional) –

        If set to `True`, the replied message is quoted. For a dict, it must be the output of `build_reply_arguments()` to specify exact `reply_parameters`. If `reply_to_message_id` or `reply_parameters` are passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats. Mutually exclusive with `quote`.

        New in version 20.8.

    Returns:

      On success, instance representing the message posted.

    Return type:

      `telegram.Message`

  async reply_sticker(sticker, disable_notification=None, reply_to_message_id=None, reply_markup=None, allow_sending_without_reply=None, protect_content=None, message_thread_id=None, emoji=None, reply_parameters=None, *, quote=None, do_quote=None, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.send_sticker(update.effective_message.chat_id, *args, **kwargs)

    For the documentation of the arguments, please see `telegram.Bot.send_sticker()`.

    Keyword Arguments:

      - quote (`bool`, optional) –

        If set to `True`, the reply is sent as an actual reply to this message. If `reply_to_message_id` is passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats.

        Deprecated since version 20.8: This argument is deprecated in favor of `do_quote`

      - do_quote (`bool` | `dict`, optional) –

        If set to `True`, the replied message is quoted. For a dict, it must be the output of `build_reply_arguments()` to specify exact `reply_parameters`. If `reply_to_message_id` or `reply_parameters` are passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats. Mutually exclusive with `quote`.

        New in version 20.8.

    Returns:

      On success, instance representing the message posted.

    Return type:

      `telegram.Message`

  async reply_text(text, parse_mode=None, disable_web_page_preview=None, disable_notification=None, reply_to_message_id=None, reply_markup=None, allow_sending_without_reply=None, entities=None, protect_content=None, message_thread_id=None, link_preview_options=None, reply_parameters=None, *, quote=None, do_quote=None, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.send_message(update.effective_message.chat_id, *args, **kwargs)

    For the documentation of the arguments, please see `telegram.Bot.send_message()`.

    Keyword Arguments:

      - quote (`bool`, optional) –

        If set to `True`, the reply is sent as an actual reply to this message. If `reply_to_message_id` is passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats.

        Deprecated since version 20.8: This argument is deprecated in favor of `do_quote`

      - do_quote (`bool` | `dict`, optional) –

        If set to `True`, the replied message is quoted. For a dict, it must be the output of `build_reply_arguments()` to specify exact `reply_parameters`. If `reply_to_message_id` or `reply_parameters` are passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats. Mutually exclusive with `quote`.

        New in version 20.8.

    Returns:

      On success, instance representing the message posted.

    Return type:

      `telegram.Message`

  async reply_venue(latitude=None, longitude=None, title=None, address=None, foursquare_id=None, disable_notification=None, reply_to_message_id=None, reply_markup=None, foursquare_type=None, google_place_id=None, google_place_type=None, allow_sending_without_reply=None, protect_content=None, message_thread_id=None, reply_parameters=None, *, venue=None, quote=None, do_quote=None, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.send_venue(update.effective_message.chat_id, *args, **kwargs)

    For the documentation of the arguments, please see `telegram.Bot.send_venue()`.

    Keyword Arguments:

      - quote (`bool`, optional) –

        If set to `True`, the reply is sent as an actual reply to this message. If `reply_to_message_id` is passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats.

        Deprecated since version 20.8: This argument is deprecated in favor of `do_quote`

      - do_quote (`bool` | `dict`, optional) –

        If set to `True`, the replied message is quoted. For a dict, it must be the output of `build_reply_arguments()` to specify exact `reply_parameters`. If `reply_to_message_id` or `reply_parameters` are passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats. Mutually exclusive with `quote`.

        New in version 20.8.

    Returns:

      On success, instance representing the message posted.

    Return type:

      `telegram.Message`

  async reply_video(video, duration=None, caption=None, disable_notification=None, reply_to_message_id=None, reply_markup=None, width=None, height=None, parse_mode=None, supports_streaming=None, allow_sending_without_reply=None, caption_entities=None, protect_content=None, message_thread_id=None, has_spoiler=None, thumbnail=None, reply_parameters=None, *, filename=None, quote=None, do_quote=None, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.send_video(update.effective_message.chat_id, *args, **kwargs)

    For the documentation of the arguments, please see `telegram.Bot.send_video()`.

    Keyword Arguments:

      - quote (`bool`, optional) –

        If set to `True`, the reply is sent as an actual reply to this message. If `reply_to_message_id` is passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats.

        Deprecated since version 20.8: This argument is deprecated in favor of `do_quote`

      - do_quote (`bool` | `dict`, optional) –

        If set to `True`, the replied message is quoted. For a dict, it must be the output of `build_reply_arguments()` to specify exact `reply_parameters`. If `reply_to_message_id` or `reply_parameters` are passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats. Mutually exclusive with `quote`.

        New in version 20.8.

    Returns:

      On success, instance representing the message posted.

    Return type:

      `telegram.Message`

  async reply_video_note(video_note, duration=None, length=None, disable_notification=None, reply_to_message_id=None, reply_markup=None, allow_sending_without_reply=None, protect_content=None, message_thread_id=None, thumbnail=None, reply_parameters=None, *, filename=None, quote=None, do_quote=None, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.send_video_note(update.effective_message.chat_id, *args, **kwargs)

    For the documentation of the arguments, please see `telegram.Bot.send_video_note()`.

    Keyword Arguments:

      - quote (`bool`, optional) –

        If set to `True`, the reply is sent as an actual reply to this message. If `reply_to_message_id` is passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats.

        Deprecated since version 20.8: This argument is deprecated in favor of `do_quote`

      - do_quote (`bool` | `dict`, optional) –

        If set to `True`, the replied message is quoted. For a dict, it must be the output of `build_reply_arguments()` to specify exact `reply_parameters`. If `reply_to_message_id` or `reply_parameters` are passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats. Mutually exclusive with `quote`.

        New in version 20.8.

    Returns:

      On success, instance representing the message posted.

    Return type:

      `telegram.Message`

  async reply_voice(voice, duration=None, caption=None, disable_notification=None, reply_to_message_id=None, reply_markup=None, parse_mode=None, allow_sending_without_reply=None, caption_entities=None, protect_content=None, message_thread_id=None, reply_parameters=None, *, filename=None, quote=None, do_quote=None, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.send_voice(update.effective_message.chat_id, *args, **kwargs)

    For the documentation of the arguments, please see `telegram.Bot.send_voice()`.

    Keyword Arguments:

      - quote (`bool`, optional) –

        If set to `True`, the reply is sent as an actual reply to this message. If `reply_to_message_id` is passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats.

        Deprecated since version 20.8: This argument is deprecated in favor of `do_quote`

      - do_quote (`bool` | `dict`, optional) –

        If set to `True`, the replied message is quoted. For a dict, it must be the output of `build_reply_arguments()` to specify exact `reply_parameters`. If `reply_to_message_id` or `reply_parameters` are passed, this parameter will be ignored. Default: `True` in group chats and `False` in private chats. Mutually exclusive with `quote`.

        New in version 20.8.

    Returns:

      On success, instance representing the message posted.

    Return type:

      `telegram.Message`

  async set_game_score(user_id, score, force=None, disable_edit_message=None, *, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.set_game_score(
            chat_id=message.chat_id, message_id=message.message_id, *args, **kwargs
        )

    For the documentation of the arguments, please see `telegram.Bot.set_game_score()`.

    Note

    You can only edit messages that the bot sent itself (i.e. of the `bot.send_*` family of methods) or channel posts, if the bot is an admin in that channel. However, this behaviour is undocumented and might be changed by Telegram.

    Returns:

      On success, if edited message is sent by the bot, the edited Message is returned, otherwise `True` is returned.

    Return type:

      `telegram.Message`

  async set_reaction(reaction=None, is_big=None, *, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.set_message_reaction(chat_id=message.chat_id, message_id=message.message_id,
           *args, **kwargs)

    For the documentation of the arguments, please see `telegram.Bot.set_message_reaction()`.

    New in version 20.8.

    Returns:

      `bool` On success, `True` is returned.

  async stop_live_location(reply_markup=None, *, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.stop_message_live_location(
            chat_id=message.chat_id, message_id=message.message_id, *args, **kwargs
        )

    For the documentation of the arguments, please see `telegram.Bot.stop_message_live_location()`.

    Note

    You can only edit messages that the bot sent itself (i.e. of the `bot.send_*` family of methods) or channel posts, if the bot is an admin in that channel. However, this behaviour is undocumented and might be changed by Telegram.

    Returns:

      On success, if edited message is sent by the bot, the edited Message is returned, otherwise `True` is returned.

    Return type:

      `telegram.Message`

  async stop_poll(reply_markup=None, *, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.stop_poll(
            chat_id=message.chat_id, message_id=message.message_id, *args, **kwargs
        )

    For the documentation of the arguments, please see `telegram.Bot.stop_poll()`.

    Returns:

      On success, the stopped Poll with the final results is returned.

    Return type:

      `telegram.Poll`

  property text_html

    Creates an HTML-formatted string from the markup entities found in the message.

    Use this if you want to retrieve the message text with the entities formatted as HTML in the same way the original message was formatted.

    Warning

    The return value of this property is a best-effort approach. Unfortunately, it can not be guaranteed that sending a message with the returned string will render in the same way as the original message produces the same `entities`/`caption_entities` as the original message. For example, Telegram recommends that entities of type `BLOCKQUOTE` and `PRE` should start and end on a new line, but does not enforce this and leaves rendering decisions up to the clients.

    Changed in version 13.10: Spoiler entities are now formatted as HTML.

    Changed in version 20.3: Custom emoji entities are now supported.

    Changed in version 20.8: Blockquote entities are now supported.

    Returns:

      Message text with entities formatted as HTML.

    Return type:

      `str`

  property text_html_urled

    Creates an HTML-formatted string from the markup entities found in the message.

    Use this if you want to retrieve the message text with the entities formatted as HTML. This also formats `telegram.MessageEntity.URL` as a hyperlink.

    Warning

    The return value of this property is a best-effort approach. Unfortunately, it can not be guaranteed that sending a message with the returned string will render in the same way as the original message produces the same `entities`/`caption_entities` as the original message. For example, Telegram recommends that entities of type `BLOCKQUOTE` and `PRE` should start and end on a new line, but does not enforce this and leaves rendering decisions up to the clients.

    Changed in version 13.10: Spoiler entities are now formatted as HTML.

    Changed in version 20.3: Custom emoji entities are now supported.

    Changed in version 20.8: Blockquote entities are now supported.

    Returns:

      Message text with entities formatted as HTML.

    Return type:

      `str`

  property text_markdown

    Creates an Markdown-formatted string from the markup entities found in the message using `telegram.constants.ParseMode.MARKDOWN`.

    Use this if you want to retrieve the message text with the entities formatted as Markdown in the same way the original message was formatted.

    Warning

    The return value of this property is a best-effort approach. Unfortunately, it can not be guaranteed that sending a message with the returned string will render in the same way as the original message produces the same `entities`/`caption_entities` as the original message. For example, Telegram recommends that entities of type `BLOCKQUOTE` and `PRE` should start and end on a new line, but does not enforce this and leaves rendering decisions up to the clients. Moreover, markdown formatting is inherently less expressive than HTML, so some edge cases may not be coverable at all. For example, markdown formatting can not specify two consecutive block quotes without a blank line in between, but HTML can.

    Note

    `'Markdown'` is a legacy mode, retained by Telegram for backward compatibility. You should use `text_markdown_v2()` instead.

    Changed in version 20.5: Since custom emoji entities are not supported by `MARKDOWN`, this method now raises a `ValueError` when encountering a custom emoji.

    Changed in version 20.8: Since block quotation entities are not supported by `MARKDOWN`, this method now raises a `ValueError` when encountering a block quotation.

    Returns:

      Message text with entities formatted as Markdown.

    Return type:

      `str`

    Raises:

      ValueError – If the message contains underline, strikethrough, spoiler, blockquote or nested entities.

  property text_markdown_urled

    Creates an Markdown-formatted string from the markup entities found in the message using `telegram.constants.ParseMode.MARKDOWN`.

    Use this if you want to retrieve the message text with the entities formatted as Markdown. This also formats `telegram.MessageEntity.URL` as a hyperlink.

    Warning

    The return value of this property is a best-effort approach. Unfortunately, it can not be guaranteed that sending a message with the returned string will render in the same way as the original message produces the same `entities`/`caption_entities` as the original message. For example, Telegram recommends that entities of type `BLOCKQUOTE` and `PRE` should start and end on a new line, but does not enforce this and leaves rendering decisions up to the clients. Moreover, markdown formatting is inherently less expressive than HTML, so some edge cases may not be coverable at all. For example, markdown formatting can not specify two consecutive block quotes without a blank line in between, but HTML can.

    Note

    `'Markdown'` is a legacy mode, retained by Telegram for backward compatibility. You should use `text_markdown_v2_urled()` instead.

    Changed in version 20.5: Since custom emoji entities are not supported by `MARKDOWN`, this method now raises a `ValueError` when encountering a custom emoji.

    Changed in version 20.8: Since block quotation entities are not supported by `MARKDOWN`, this method now raises a `ValueError` when encountering a block quotation.

    Returns:

      Message text with entities formatted as Markdown.

    Return type:

      `str`

    Raises:

      ValueError – If the message contains underline, strikethrough, spoiler, blockquote or nested entities.

  property text_markdown_v2

    Creates an Markdown-formatted string from the markup entities found in the message using `telegram.constants.ParseMode.MARKDOWN_V2`.

    Use this if you want to retrieve the message text with the entities formatted as Markdown in the same way the original message was formatted.

    Warning

    The return value of this property is a best-effort approach. Unfortunately, it can not be guaranteed that sending a message with the returned string will render in the same way as the original message produces the same `entities`/`caption_entities` as the original message. For example, Telegram recommends that entities of type `BLOCKQUOTE` and `PRE` should start and end on a new line, but does not enforce this and leaves rendering decisions up to the clients. Moreover, markdown formatting is inherently less expressive than HTML, so some edge cases may not be coverable at all. For example, markdown formatting can not specify two consecutive block quotes without a blank line in between, but HTML can.

    Changed in version 13.10: Spoiler entities are now formatted as Markdown V2.

    Changed in version 20.3: Custom emoji entities are now supported.

    Changed in version 20.8: Blockquote entities are now supported.

    Returns:

      Message text with entities formatted as Markdown.

    Return type:

      `str`

  property text_markdown_v2_urled

    Creates an Markdown-formatted string from the markup entities found in the message using `telegram.constants.ParseMode.MARKDOWN_V2`.

    Use this if you want to retrieve the message text with the entities formatted as Markdown. This also formats `telegram.MessageEntity.URL` as a hyperlink.

    Warning

    The return value of this property is a best-effort approach. Unfortunately, it can not be guaranteed that sending a message with the returned string will render in the same way as the original message produces the same `entities`/`caption_entities` as the original message. For example, Telegram recommends that entities of type `BLOCKQUOTE` and `PRE` should start and end on a new line, but does not enforce this and leaves rendering decisions up to the clients. Moreover, markdown formatting is inherently less expressive than HTML, so some edge cases may not be coverable at all. For example, markdown formatting can not specify two consecutive block quotes without a blank line in between, but HTML can.

    Changed in version 13.10: Spoiler entities are now formatted as Markdown V2.

    Changed in version 20.3: Custom emoji entities are now supported.

    Changed in version 20.8: Blockquote entities are now supported.

    Returns:

      Message text with entities formatted as Markdown.

    Return type:

      `str`

  async unpin(*, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.unpin_chat_message(
            chat_id=message.chat_id, message_id=message.message_id, *args, **kwargs
        )

    For the documentation of the arguments, please see `telegram.Bot.unpin_chat_message()`.

    Returns:

      On success, `True` is returned.

    Return type:

      `bool`

  async unpin_all_forum_topic_messages(*, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.unpin_all_forum_topic_messages(
           chat_id=message.chat_id, message_thread_id=message.message_thread_id, *args,
           **kwargs
        )

    For the documentation of the arguments, please see `telegram.Bot.unpin_all_forum_topic_messages()`.

    New in version 20.0.

    Returns:

      On success, `True` is returned.

    Return type:

      `bool`

  property user_shared

    Optional. Service message. A user was shared with the bot.

    Hint

    In case a single user was shared, `user_shared` will be present in addition to `users_shared`. If multiple users where shared, only `users_shared` will be present. However, this behavior is not documented and may be changed by Telegram.

    New in version 20.1.

    Deprecated since version 20.8: Bot API 7.0 deprecates `user_shared` in favor of `users_shared`.

    Type:

      `telegram.UserShared`