EditMessageCaption
extends TelegramMethod
in package
Use this method to edit captions of messages. On success, if the edited message is not an inline message, the edited Message is returned, otherwise True is returned. Note that business messages that were not sent by the bot and do not contain an inline keyboard can only be edited within 48 hours from the time they were sent.
Source: https://core.telegram.org/bots/api#editmessagecaption
Tags
Table of Contents
Constants
- ApiMethod : string = 'editMessageCaption'
- ReturnsType : string = 'union:Message|bool'
- Subclasses override with either: - a `class-string<TelegramObject>` (e.g. Message::class) for object returns - a scalar type name ('bool', 'int', 'string') for primitive returns - 'list:<inner>' for array returns
Properties
- $bot : Bot|null
- $businessConnectionId : string|null
- $caption : string|null
- $captionEntities : array<int, MessageEntity>
- $chatId : int|string|null
- $inlineMessageId : string|null
- $messageId : int|null
- $parseMode : BotDefault|string|null
- $replyMarkup : InlineKeyboardMarkup|null
- $showCaptionAboveMedia : bool|BotDefault|null
Methods
- __construct() : mixed
- as_() : static
- Alias of withBot() for grep-translating aiogram code that uses obj.as_(bot).
- bindBot() : static
- Returns a clone bound to $bot. Used by hand-authored shortcut methods (Message::answer, etc.) so the chained ->emit() picks up the bot without an explicit argument.
- emit() : TReturn
- Emit this method via the bound bot (or the explicitly-passed bot).
- withBot() : static
- Returns a clone of $this with $bot rebound recursively. Walks every public property; nested `BotContextController` instances are rebound via their own `withBot`, arrays (including nested arrays of arbitrary depth — e.g.
Constants
ApiMethod
public
string
ApiMethod
= 'editMessageCaption'
ReturnsType
Subclasses override with either: - a `class-string<TelegramObject>` (e.g. Message::class) for object returns - a scalar type name ('bool', 'int', 'string') for primitive returns - 'list:<inner>' for array returns
public
string
ReturnsType
= 'union:Message|bool'
Stays '' on the abstract base — Phase 2 codegen sets it per concrete method.
Properties
$bot read-only
public
Bot|null
$bot
= null
$businessConnectionId read-only
public
string|null
$businessConnectionId
= null
$caption read-only
public
string|null
$caption
= null
$captionEntities read-only
public
array<int, MessageEntity>
$captionEntities
= null
$chatId read-only
public
int|string|null
$chatId
= null
$inlineMessageId read-only
public
string|null
$inlineMessageId
= null
$messageId read-only
public
int|null
$messageId
= null
$parseMode read-only
public
BotDefault|string|null
$parseMode
= new BotDefault('parse_mode')
$replyMarkup read-only
public
InlineKeyboardMarkup|null
$replyMarkup
= null
$showCaptionAboveMedia read-only
public
bool|BotDefault|null
$showCaptionAboveMedia
= new BotDefault('show_caption_above_media')
Methods
__construct()
public
__construct([string|null $businessConnectionId = null ][, int|string|null $chatId = null ][, int|null $messageId = null ][, string|null $inlineMessageId = null ][, string|null $caption = null ][, BotDefault|string|null $parseMode = new BotDefault('parse_mode') ][, array<string|int, mixed>|null $captionEntities = null ][, bool|BotDefault|null $showCaptionAboveMedia = new BotDefault('show_caption_above_media') ][, InlineKeyboardMarkup|null $replyMarkup = null ][, Bot|null $bot = null ]) : mixed
Parameters
- $businessConnectionId : string|null = null
- $chatId : int|string|null = null
- $messageId : int|null = null
- $inlineMessageId : string|null = null
- $caption : string|null = null
- $parseMode : BotDefault|string|null = new BotDefault('parse_mode')
- $captionEntities : array<string|int, mixed>|null = null
- $showCaptionAboveMedia : bool|BotDefault|null = new BotDefault('show_caption_above_media')
- $replyMarkup : InlineKeyboardMarkup|null = null
- $bot : Bot|null = null
as_()
Alias of withBot() for grep-translating aiogram code that uses obj.as_(bot).
public
as_(Bot|null $bot) : static
IMPORTANT: behaves DIFFERENTLY from upstream — upstream mutates self.bot in place and returns self. The PHP port can't mutate readonly, so this returns a clone. Callers must reassign: $msg = $msg->as($bot).
Parameters
- $bot : Bot|null
Return values
staticbindBot()
Returns a clone bound to $bot. Used by hand-authored shortcut methods (Message::answer, etc.) so the chained ->emit() picks up the bot without an explicit argument.
public
bindBot(Bot|null $bot) : static
Parameters
- $bot : Bot|null
Return values
staticemit()
Emit this method via the bound bot (or the explicitly-passed bot).
public
emit([Bot|null $bot = null ]) : TReturn
Mirrors upstream methods/base.py:81-93 (await + emit).
Parameters
- $bot : Bot|null = null
Return values
TReturnwithBot()
Returns a clone of $this with $bot rebound recursively. Walks every public property; nested `BotContextController` instances are rebound via their own `withBot`, arrays (including nested arrays of arbitrary depth — e.g.
public
withBot(Bot|null $bot) : static
list<list<KeyboardButton>>) are walked element-wise. Plain values
(scalars, DateTime, enums, InputFile etc.) pass through untouched.
Mirrors upstream pydantic model_validate(context={"bot": bot}) (aiogram
ContextController.as_/model_dump_json+model_validate).
Scope note: PHP 8.5 treats public readonly as effectively
public protected(set) readonly for clone-with — only code running with
a scope in the property's declaring class hierarchy (declaring class plus
its ancestors and descendants) can use clone($obj, ['x' => ...]) against
it. Because this method lives on BotContextController and every
TelegramObject/TelegramMethod subclass extends it, the walker's
clone($this, [...]) call legally rewrites subclass-declared readonly
slots like Message::$chat. External callers cannot use the same syntax
— they must funnel through this method.
Parameters
- $bot : Bot|null