Hide navigation sidebar
Hide table of contents sidebar
PTB has undergone significant changes in v20. Please read the documentation carefully and also check out the transition guide in the wiki.
Back to top
Toggle table of contents sidebar

# CallbackQuery

class telegram.CallbackQuery(id, from_user, chat_instance, message=None, data=None, inline_message_id=None, game_short_name=None, *, api_kwargs=None)

  Bases: `telegram.TelegramObject`

  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.

  Objects of this class are comparable in terms of equality. Two objects of this class are considered equal, if their `id` is equal.

  Note

  - In Python `from` is a reserved word. Use `from_user` instead.

  - Exactly one of the fields `data` or `game_short_name` will be present.

  - After the user presses an inline button, Telegram clients will display a progress bar until you call `answer`. It is, therefore, necessary to react by calling `telegram.Bot.answer_callback_query` even if no notification to the user is needed (e.g., without specifying any of the optional parameters).

  - If you’re using `telegram.ext.ExtBot.callback_data_cache`, `data` may be an instance of `telegram.ext.InvalidCallbackData`. This will be the case, if the data associated with the button triggering the `telegram.CallbackQuery` was already deleted or if `data` was manipulated by a malicious client.

    New in version 13.6.

  Parameters:

    - id (`str`) – Unique identifier for this query.

    - from_user (`telegram.User`) – Sender.

    - chat_instance (`str`) – Global identifier, uniquely corresponding to the chat to which the message with the callback button was sent. Useful for high scores in games.

    - message (`telegram.MaybeInaccessibleMessage`, optional) –

      Message sent by the bot with the callback button that originated the query.

      Changed in version 20.8: Accept objects of type `telegram.MaybeInaccessibleMessage` since Bot API 7.0.

    - data (`str`, optional) – Data associated with the callback button. Be aware that the message, which originated the query, can contain no callback buttons with this data.

    - inline_message_id (`str`, optional) – Identifier of the message sent via the bot in inline mode, that originated the query.

    - game_short_name (`str`, optional) – Short name of a Game to be returned, serves as the unique identifier for the game.

  id

    Unique identifier for this query.

    Type:

      `str`

  from_user

    Sender.

    Type:

      `telegram.User`

  chat_instance

    Global identifier, uniquely corresponding to the chat to which the message with the callback button was sent. Useful for high scores in games.

    Type:

      `str`

  message

    Optional. Message sent by the bot with the callback button that originated the query.

    Changed in version 20.8: Objects maybe be of type `telegram.MaybeInaccessibleMessage` since Bot API 7.0.

    Type:

      `telegram.MaybeInaccessibleMessage`

  data

    Optional. Data associated with the callback button. Be aware that the message, which originated the query, can contain no callback buttons with this data.

    Tip

    The value here is the same as the value passed in `telegram.InlineKeyboardButton.callback_data`.

    Type:

      `str` | `object`

  inline_message_id

    Optional. Identifier of the message sent via the bot in inline mode, that originated the query.

    Type:

      `str`

  game_short_name

    Optional. Short name of a Game to be returned, serves as the unique identifier for the game.

    Type:

      `str`

  Available In

  `telegram.Update.callback_query`

  MAX_ANSWER_TEXT_LENGTH = 200

    `telegram.constants.CallbackQueryLimit.ANSWER_CALLBACK_QUERY_TEXT_LENGTH`

    New in version 13.2.

  async answer(text=None, show_alert=None, url=None, cache_time=None, *, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await bot.answer_callback_query(update.callback_query.id, *args, **kwargs)

    For the documentation of the arguments, please see `telegram.Bot.answer_callback_query()`.

    Returns:

      On success, `True` is returned.

    Return type:

      `bool`

  async copy_message(chat_id, caption=None, parse_mode=None, caption_entities=None, disable_notification=None, reply_to_message_id=None, allow_sending_without_reply=None, reply_markup=None, protect_content=None, message_thread_id=None, reply_parameters=None, *, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await update.callback_query.message.copy(
            from_chat_id=update.message.chat_id,
            message_id=update.message.message_id,
            *args,
            **kwargs
        )

    For the documentation of the arguments, please see `telegram.Message.copy()`.

    Changed in version 20.8: Raises `TypeError` if `message` is not accessible.

    Returns:

      On success, returns the MessageId of the sent message.

    Return type:

      `telegram.MessageId`

    Raises:

      TypeError –

  classmethod de_json(data, bot)

    See `telegram.TelegramObject.de_json()`.

  async delete_message(*, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await update.callback_query.message.delete(*args, **kwargs)

    For the documentation of the arguments, please see `telegram.Message.delete()`.

    Changed in version 20.8: Raises `TypeError` if `message` is not accessible.

    Returns:

      On success, `True` is returned.

    Return type:

      `bool`

    Raises:

      TypeError –

  async edit_message_caption(caption=None, reply_markup=None, parse_mode=None, caption_entities=None, *, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for either:

        await update.callback_query.message.edit_caption(*args, **kwargs)

    or:

        await bot.edit_message_caption(
            inline_message_id=update.callback_query.inline_message_id, *args, **kwargs,
        )

    For the documentation of the arguments, please see `telegram.Bot.edit_message_caption()` and `telegram.Message.edit_caption()`.

    Changed in version 20.8: Raises `TypeError` if `message` is not accessible.

    Returns:

      On success, if edited message is sent by the bot, the edited Message is returned, otherwise `True` is returned.

    Return type:

      `telegram.Message`

    Raises:

      TypeError –

  async edit_message_live_location(latitude=None, longitude=None, reply_markup=None, horizontal_accuracy=None, heading=None, proximity_alert_radius=None, *, location=None, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for either:

        await update.callback_query.message.edit_live_location(*args, **kwargs)

    or:

        await bot.edit_message_live_location(
            inline_message_id=update.callback_query.inline_message_id, *args, **kwargs
        )

    For the documentation of the arguments, please see `telegram.Bot.edit_message_live_location()` and `telegram.Message.edit_live_location()`.

    Changed in version 20.8: Raises `TypeError` if `message` is not accessible.

    Returns:

      On success, if edited message is sent by the bot, the edited Message is returned, otherwise `True` is returned.

    Return type:

      `telegram.Message`

    Raises:

      TypeError –

  async edit_message_media(media, reply_markup=None, *, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for either:

        await update.callback_query.message.edit_media(*args, **kwargs)

    or:

        await bot.edit_message_media(
            inline_message_id=update.callback_query.inline_message_id, *args, **kwargs
        )

    For the documentation of the arguments, please see `telegram.Bot.edit_message_media()` and `telegram.Message.edit_media()`.

    Changed in version 20.8: Raises `TypeError` if `message` is not accessible.

    Returns:

      On success, if edited message is not an inline message, the edited Message is returned, otherwise `True` is returned.

    Return type:

      `telegram.Message`

    Raises:

      TypeError –

  async edit_message_reply_markup(reply_markup=None, *, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for either:

        await update.callback_query.message.edit_reply_markup(*args, **kwargs)

    or:

        await bot.edit_message_reply_markup(
            inline_message_id=update.callback_query.inline_message_id, *args, **kwargs
        )

    For the documentation of the arguments, please see `telegram.Bot.edit_message_reply_markup()` and `telegram.Message.edit_reply_markup()`.

    Changed in version 20.8: Raises `TypeError` if `message` is not accessible.

    Returns:

      On success, if edited message is sent by the bot, the edited Message is returned, otherwise `True` is returned.

    Return type:

      `telegram.Message`

    Raises:

      TypeError –

  async edit_message_text(text, parse_mode=None, disable_web_page_preview=None, reply_markup=None, entities=None, link_preview_options=None, *, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for either:

        await update.callback_query.message.edit_text(*args, **kwargs)

    or:

        await bot.edit_message_text(
            inline_message_id=update.callback_query.inline_message_id, *args, **kwargs,
        )

    For the documentation of the arguments, please see `telegram.Bot.edit_message_text()` and `telegram.Message.edit_text()`.

    Changed in version 20.8: Raises `TypeError` if `message` is not accessible.

    Returns:

      On success, if edited message is sent by the bot, the edited Message is returned, otherwise `True` is returned.

    Return type:

      `telegram.Message`

    Raises:

      TypeError –

  async get_game_high_scores(user_id, *, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for either:

        await update.callback_query.message.get_game_high_score(*args, **kwargs)

    or:

        await bot.get_game_high_scores(
            inline_message_id=update.callback_query.inline_message_id, *args, **kwargs
        )

    For the documentation of the arguments, please see `telegram.Bot.get_game_high_scores()` and `telegram.Message.get_game_high_scores()`.

    Changed in version 20.8: Raises `TypeError` if `message` is not accessible.

    Returns:

      Tuple[`telegram.GameHighScore`]

    Raises:

      TypeError –

  async pin_message(disable_notification=None, *, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await update.callback_query.message.pin(*args, **kwargs)

    For the documentation of the arguments, please see `telegram.Message.pin()`.

    Changed in version 20.8: Raises `TypeError` if `message` is not accessible.

    Returns:

      On success, `True` is returned.

    Return type:

      `bool`

    Raises:

      TypeError –

  async set_game_score(user_id, score, force=None, disable_edit_message=None, *, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for either:

        await update.callback_query.message.set_game_score(*args, **kwargs)

    or:

        await bot.set_game_score(
            inline_message_id=update.callback_query.inline_message_id, *args, **kwargs
        )

    For the documentation of the arguments, please see `telegram.Bot.set_game_score()` and `telegram.Message.set_game_score()`.

    Changed in version 20.8: Raises `TypeError` if `message` is not accessible.

    Returns:

      On success, if edited message is sent by the bot, the edited Message is returned, otherwise `True` is returned.

    Return type:

      `telegram.Message`

    Raises:

      TypeError –

  async stop_message_live_location(reply_markup=None, *, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for either:

        await update.callback_query.message.stop_live_location(*args, **kwargs)

    or:

        await bot.stop_message_live_location(
            inline_message_id=update.callback_query.inline_message_id, *args, **kwargs
        )

    For the documentation of the arguments, please see `telegram.Bot.stop_message_live_location()` and `telegram.Message.stop_live_location()`.

    Changed in version 20.8: Raises `TypeError` if `message` is not accessible.

    Returns:

      On success, if edited message is sent by the bot, the edited Message is returned, otherwise `True` is returned.

    Return type:

      `telegram.Message`

    Raises:

      TypeError –

  async unpin_message(*, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None, api_kwargs=None)

    Shortcut for:

        await update.callback_query.message.unpin(*args, **kwargs)

    For the documentation of the arguments, please see `telegram.Message.unpin()`.

    Changed in version 20.8: Raises `TypeError` if `message` is not accessible.

    Returns:

      On success, `True` is returned.

    Return type:

      `bool`

    Raises:

      TypeError –