CallbackQueryHandler¶
- class telegram.ext.CallbackQueryHandler(callback, pattern=None, game_pattern=None, block=True)[source]¶
Bases:
telegram.ext.BaseHandlerHandler class to handle Telegram
callback queries. Optionally based on a regex.Read the documentation of the
remodule for more information.Note
If your bot allows arbitrary objects as
callback_data, it may happen that the originalcallback_datafor the incomingtelegram.CallbackQuerycan not be found. This is the case when either a malicious client tempered with thetelegram.CallbackQuery.dataor the data was simply dropped from cache or not persisted. In these cases, an instance oftelegram.ext.InvalidCallbackDatawill be set astelegram.CallbackQuery.data.Added in version 13.6.
If neither
patternnorgame_patternis set, anyCallbackQuerywill be handled. If onlypatternis set, queries withgame_short_namewill not be considered and vice versa. If both patterns are set, queries with either :attr: ~telegram.CallbackQuery.game_short_name ordatamatching the defined pattern will be handledAdded in version 21.5.
Warning
When setting
blocktoFalse, you cannot rely on adding custom attributes totelegram.ext.CallbackContext. See its docs for more info.Use In
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.dataagainst. If a string or a regex pattern is passed,re.match()is used ontelegram.CallbackQuery.datato 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 returnTrueorFalse/Noneto indicate, whether the update should be handled.a
type. Iftelegram.CallbackQuery.datais an instance of that type (or a subclass), the update will be handled.
If
telegram.CallbackQuery.dataisNone, thetelegram.CallbackQueryupdate 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_nameagainst. If a string or a regex pattern is passed,re.match()is used ontelegram.CallbackQuery.game_short_nameto 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.dataagainst.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.matchesas list with one element.