CallbackQueryHandler¶
- class telegram.ext.CallbackQueryHandler(callback, pattern=None, game_pattern=None, block=True)[source]¶
Bases:
telegram.ext.BaseHandler
Handler class to handle Telegram
callback queries
. Optionally based on a regex.Read the documentation of the
re
module for more information.Note
If your bot allows arbitrary objects as
callback_data
, it may happen that the originalcallback_data
for the incomingtelegram.CallbackQuery
can not be found. This is the case when either a malicious client tempered with thetelegram.CallbackQuery.data
or the data was simply dropped from cache or not persisted. In these cases, an instance oftelegram.ext.InvalidCallbackData
will be set astelegram.CallbackQuery.data
.Added in version 13.6.
If neither
pattern
norgame_pattern
is set, anyCallbackQuery
will be handled. If onlypattern
is set, queries withgame_short_name
will not be considered and vice versa. If both patterns are set, queries with either :attr: ~telegram.CallbackQuery.game_short_name ordata
matching the defined pattern will be handledAdded in version 21.5.
Warning
When setting
block
toFalse
, you cannot rely on adding custom attributes totelegram.ext.CallbackContext
. See its docs for more info.Available In
- Parameters:
callback (coroutine function) –
The callback function for this handler. Will be called when
check_update()
has determined that an update should be processed by this handler. Callback signature:async def callback(update: Update, context: CallbackContext)
The return value of the callback is usually ignored except for the special case of
telegram.ext.ConversationHandler
.pattern (
str
|re.Pattern
|callable
|type
, optional) –Pattern to test
telegram.CallbackQuery.data
against. If a string or a regex pattern is passed,re.match()
is used ontelegram.CallbackQuery.data
to determine if an update should be handled by this handler. If your bot allows arbitrary objects ascallback_data
, non-strings will be accepted. To filter arbitrary objects you may pass:a callable, accepting exactly one argument, namely the
telegram.CallbackQuery.data
. It must returnTrue
orFalse
/None
to indicate, whether the update should be handled.a
type
. Iftelegram.CallbackQuery.data
is an instance of that type (or a subclass), the update will be handled.
If
telegram.CallbackQuery.data
isNone
, thetelegram.CallbackQuery
update will not be handled.See also
Changed in version 13.6: Added support for arbitrary callback data.
game_pattern (
str
|re.Pattern
| optional) –Pattern to test
telegram.CallbackQuery.game_short_name
against. If a string or a regex pattern is passed,re.match()
is used ontelegram.CallbackQuery.game_short_name
to determine if an update should be handled by this handler.Added in version 21.5.
Determines whether the return value of the callback should be awaited before processing the next handler in
telegram.ext.Application.process_update()
. Defaults toTrue
.See also
- pattern[source]¶
Optional. Regex pattern, callback or type to test
telegram.CallbackQuery.data
against.Changed in version 13.6: Added support for arbitrary callback data.
- Type:
re.Pattern
|callable
|type
- game_pattern[source]¶
Optional. Regex pattern to test
telegram.CallbackQuery.game_short_name
- Type:
- block[source]¶
Determines whether the return value of the callback should be awaited before processing the next handler in
telegram.ext.Application.process_update()
.- Type:
- check_update(update)[source]¶
Determines whether an update should be passed to this handler’s
callback
.- Parameters:
update (
telegram.Update
|object
) – Incoming update.- Returns:
- collect_additional_context(context, update, application, check_result)[source]¶
Add the result of
re.match(pattern, update.callback_query.data)
toCallbackContext.matches
as list with one element.