CallbackQuery
extends TelegramObject
in package
uses
CallbackQueryShortcuts
This object represents an incoming callback query from a callback button in an inline keyboard. If the button that originated the query was attached to a message sent by the bot, the field message will be present. If the button was attached to a message sent via the bot (in inline mode), the field inline_message_id will be present. Exactly one of the fields data or game_short_name will be present.
NOTE: After the user presses a callback button, Telegram clients will display a progress bar until you call answerCallbackQuery. It is, therefore, necessary to react by calling answerCallbackQuery even if no notification to the user is needed (e.g., without specifying any of the optional parameters).
Source: https://core.telegram.org/bots/api#callbackquery
Table of Contents
Constants
- WireNames : array<string|int, mixed> = ['fromUser' => 'from']
Properties
- $bot : Bot|null
- $chatInstance : string
- $data : string|null
- $fromUser : User
- $gameShortName : string|null
- $id : string
- $inlineMessageId : string|null
- $message : MaybeInaccessibleMessage|null
Methods
- __construct() : mixed
- answer() : AnswerCallbackQuery
- as_() : static
- Alias of withBot() for grep-translating aiogram code that uses obj.as_(bot).
- messageId() : int|null
- 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
WireNames
public
array<string|int, mixed>
WireNames
= ['fromUser' => 'from']
Properties
$bot read-only
public
Bot|null
$bot
= null
$chatInstance read-only
public
string
$chatInstance
$data read-only
public
string|null
$data
= null
$fromUser read-only
public
User
$fromUser
$gameShortName read-only
public
string|null
$gameShortName
= null
$id read-only
public
string
$id
$inlineMessageId read-only
public
string|null
$inlineMessageId
= null
$message read-only
public
MaybeInaccessibleMessage|null
$message
= null
Methods
__construct()
public
__construct(string $id, User $fromUser, string $chatInstance[, MaybeInaccessibleMessage|null $message = null ][, string|null $inlineMessageId = null ][, string|null $data = null ][, string|null $gameShortName = null ][, Bot|null $bot = null ]) : mixed
Parameters
- $id : string
- $fromUser : User
- $chatInstance : string
- $message : MaybeInaccessibleMessage|null = null
- $inlineMessageId : string|null = null
- $data : string|null = null
- $gameShortName : string|null = null
- $bot : Bot|null = null
answer()
public
answer([string|null $text = null ][, bool|null $showAlert = null ][, string|null $url = null ][, int|null $cacheTime = null ]) : AnswerCallbackQuery
Parameters
- $text : string|null = null
- $showAlert : bool|null = null
- $url : string|null = null
- $cacheTime : int|null = null
Return values
AnswerCallbackQueryas_()
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
staticmessageId()
public
messageId() : int|null
Return values
int|nullwithBot()
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