2020-11-16 03:59:35 +02:00
from __future__ import annotations
from typing import TYPE_CHECKING , Any , Dict , List , Optional , Union
from . . types import (
UNSET ,
ForceReply ,
InlineKeyboardMarkup ,
MessageEntity ,
MessageId ,
ReplyKeyboardMarkup ,
ReplyKeyboardRemove ,
)
from . base import Request , TelegramMethod , prepare_parse_mode
if TYPE_CHECKING : # pragma: no cover
from . . client . bot import Bot
class CopyMessage ( TelegramMethod [ MessageId ] ) :
"""
2021-01-24 20:54:38 +02:00
Use this method to copy messages of any kind . The method is analogous to the method : class : ` aiogram . methods . forward_messages . ForwardMessages ` , but the copied message doesn ' t have a link to the original message. Returns the :class:`aiogram.types.message_id.MessageId` of the sent message on success.
2020-11-16 03:59:35 +02:00
Source : https : / / core . telegram . org / bots / api #copymessage
"""
__returning__ = MessageId
chat_id : Union [ int , str ]
2021-01-24 01:31:05 +02:00
""" Unique identifier for the target chat or username of the target channel (in the format :code:`@channelusername`) """
2020-11-16 03:59:35 +02:00
from_chat_id : Union [ int , str ]
2021-01-24 01:31:05 +02:00
""" Unique identifier for the chat where the original message was sent (or channel username in the format :code:`@channelusername`) """
2020-11-16 03:59:35 +02:00
message_id : int
2021-01-24 01:31:05 +02:00
""" Message identifier in the chat specified in *from_chat_id* """
2020-11-16 03:59:35 +02:00
caption : Optional [ str ] = None
2021-01-24 01:31:05 +02:00
""" New caption for media, 0-1024 characters after entities parsing. If not specified, the original caption is kept """
2020-11-16 03:59:35 +02:00
parse_mode : Optional [ str ] = UNSET
2021-01-24 01:31:05 +02:00
""" Mode for parsing entities in the new caption. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details. """
2020-11-16 03:59:35 +02:00
caption_entities : Optional [ List [ MessageEntity ] ] = None
2021-01-24 01:31:05 +02:00
""" List of special entities that appear in the new caption, which can be specified instead of *parse_mode* """
2020-11-16 03:59:35 +02:00
disable_notification : Optional [ bool ] = None
2021-01-24 01:31:05 +02:00
""" Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound. """
2020-11-16 03:59:35 +02:00
reply_to_message_id : Optional [ int ] = None
""" If the message is a reply, ID of the original message """
allow_sending_without_reply : Optional [ bool ] = None
2021-01-24 20:54:38 +02:00
""" Pass :code:`True`, if the message should be sent even if the specified replied-to message is not found """
2020-11-16 03:59:35 +02:00
reply_markup : Optional [
Union [ InlineKeyboardMarkup , ReplyKeyboardMarkup , ReplyKeyboardRemove , ForceReply ]
] = None
2021-01-24 01:31:05 +02:00
""" Additional interface options. A JSON-serialized object for an `inline keyboard <https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating>`_, `custom reply keyboard <https://core.telegram.org/bots#keyboards>`_, instructions to remove reply keyboard or to force a reply from the user. """
2020-11-16 03:59:35 +02:00
def build_request ( self , bot : Bot ) - > Request :
data : Dict [ str , Any ] = self . dict ( )
prepare_parse_mode (
bot , data , parse_mode_property = " parse_mode " , entities_property = " caption_entities "
)
return Request ( method = " copyMessage " , data = data )