async def edit_message_caption(self, chat_id: typing.Union[base.Integer, base.String, None] = None,
                                   message_id: typing.Union[base.Integer, None] = None,
                                   inline_message_id: typing.Union[base.String, None] = None,
                                   caption: typing.Union[base.String, None] = None,
                                   parse_mode: typing.Union[base.String, None] = None,
                                   reply_markup: typing.Union[types.InlineKeyboardMarkup,
                                                              None] = None) -> types.Message or base.Boolean:
        """
        Use this method to edit captions of messages sent by the bot or via the bot (for inline bots).

        Source: https://core.telegram.org/bots/api#editmessagecaption

        :param chat_id: Required if inline_message_id is not specified
            Unique identifier for the target chat or username of the target channel
        :type chat_id: :obj:`typing.Union[base.Integer, base.String, None]`
        :param message_id: Required if inline_message_id is not specified. Identifier of the sent message
        :type message_id: :obj:`typing.Union[base.Integer, None]`
        :param inline_message_id: Required if chat_id and message_id are not specified. Identifier of the inline message
        :type inline_message_id: :obj:`typing.Union[base.String, None]`
        :param caption: New caption of the message
        :type caption: :obj:`typing.Union[base.String, None]`
        :param parse_mode: Send Markdown or HTML, if you want Telegram apps to show bold, italic,
            fixed-width text or inline URLs in your bot's message.
        :type parse_mode: :obj:`typing.Union[base.String, None]`
        :param reply_markup: A JSON-serialized object for an inline keyboard
        :type reply_markup: :obj:`typing.Union[types.InlineKeyboardMarkup, None]`
        :return: On success, if edited message is sent by the bot, the edited Message is returned,
            otherwise True is returned.
        :rtype: :obj:`typing.Union[types.Message, base.Boolean]`
        """
        reply_markup = prepare_arg(reply_markup)
        payload = generate_payload(**locals())
        if self.parse_mode:
            payload.setdefault('parse_mode', self.parse_mode)

        result = await self.request(api.Methods.EDIT_MESSAGE_CAPTION, payload)
        if isinstance(result, bool):
            return result
        return types.Message(**result)
Use this method to edit captions of messages sent by the bot or via the bot (for inline bots).

        Source: https://core.telegram.org/bots/api#editmessagecaption

        :param chat_id: Required if inline_message_id is not specified
            Unique identifier for the target chat or username of the target channel
        :type chat_id: :obj:`typing.Union[base.Integer, base.String, None]`
        :param message_id: Required if inline_message_id is not specified. Identifier of the sent message
        :type message_id: :obj:`typing.Union[base.Integer, None]`
        :param inline_message_id: Required if chat_id and message_id are not specified. Identifier of the inline message
        :type inline_message_id: :obj:`typing.Union[base.String, None]`
        :param caption: New caption of the message
        :type caption: :obj:`typing.Union[base.String, None]`
        :param parse_mode: Send Markdown or HTML, if you want Telegram apps to show bold, italic,
            fixed-width text or inline URLs in your bot's message.
        :type parse_mode: :obj:`typing.Union[base.String, None]`
        :param reply_markup: A JSON-serialized object for an inline keyboard
        :type reply_markup: :obj:`typing.Union[types.InlineKeyboardMarkup, None]`
        :return: On success, if edited message is sent by the bot, the edited Message is returned,
            otherwise True is returned.
        :rtype: :obj:`typing.Union[types.Message, base.Boolean]`