phpbotgram

CopyMessage extends TelegramMethod
in package

FinalYes

Use this method to copy messages of any kind. Service messages, paid media messages, giveaway messages, giveaway winners messages, and invoice messages can't be copied. A quiz poll can be copied only if the value of the field correct_option_id is known to the bot. The method is analogous to the method forwardMessage, but the copied message doesn't have a link to the original message. Returns the MessageId of the sent message on success.

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

Tags
extends

Table of Contents

Constants

ApiMethod  : string = 'copyMessage'
ReturnsType  : string = \Gruven\PhpBotGram\Types\MessageId::class
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

$allowPaidBroadcast  : bool|null
$bot  : Bot|null
$caption  : string|null
$captionEntities  : array<int, MessageEntity>
$chatId  : int|string
$directMessagesTopicId  : int|null
$disableNotification  : bool|null
$fromChatId  : int|string
$messageEffectId  : string|null
$messageId  : int
$messageThreadId  : int|null
$parseMode  : BotDefault|string|null
$protectContent  : bool|BotDefault|null
$replyMarkup  : ForceReply|InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|null
$replyParameters  : ReplyParameters|null
$showCaptionAboveMedia  : bool|BotDefault|null
$suggestedPostParameters  : SuggestedPostParameters|null
$videoStartTimestamp  : DateInterval|DateTime|int|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

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 = \Gruven\PhpBotGram\Types\MessageId::class

Stays '' on the abstract base — Phase 2 codegen sets it per concrete method.

Properties

$allowPaidBroadcast read-only

public bool|null $allowPaidBroadcast = null

$caption read-only

public string|null $caption = null

$directMessagesTopicId read-only

public int|null $directMessagesTopicId = null

$disableNotification read-only

public bool|null $disableNotification = null

$messageEffectId read-only

public string|null $messageEffectId = null

$messageThreadId read-only

public int|null $messageThreadId = null

$protectContent read-only

public bool|BotDefault|null $protectContent = new BotDefault('protect_content')

$showCaptionAboveMedia read-only

public bool|BotDefault|null $showCaptionAboveMedia = new BotDefault('show_caption_above_media')

$videoStartTimestamp read-only

public DateInterval|DateTime|int|null $videoStartTimestamp = null

Methods

__construct()

public __construct(int|string $chatId, int|string $fromChatId, int $messageId[, int|null $messageThreadId = null ][, int|null $directMessagesTopicId = null ][, DateInterval|DateTime|int|null $videoStartTimestamp = 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') ][, bool|null $disableNotification = null ][, bool|BotDefault|null $protectContent = new BotDefault('protect_content') ][, bool|null $allowPaidBroadcast = null ][, string|null $messageEffectId = null ][, SuggestedPostParameters|null $suggestedPostParameters = null ][, ReplyParameters|null $replyParameters = null ][, ForceReply|InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|null $replyMarkup = null ][, Bot|null $bot = null ]) : mixed
Parameters
$chatId : int|string
$fromChatId : int|string
$messageId : int
$messageThreadId : int|null = null
$directMessagesTopicId : int|null = null
$videoStartTimestamp : DateInterval|DateTime|int|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')
$disableNotification : bool|null = null
$protectContent : bool|BotDefault|null = new BotDefault('protect_content')
$allowPaidBroadcast : bool|null = null
$messageEffectId : string|null = null
$suggestedPostParameters : SuggestedPostParameters|null = null
$replyParameters : ReplyParameters|null = null
$replyMarkup : ForceReply|InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|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
static

bindBot()

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
static

emit()

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
TReturn

withBot()

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
Return values
static
On this page

Search results