telegram.ext.CallbackQueryHandler¶
-
class
telegram.ext.
CallbackQueryHandler
(callback, pass_update_queue=False, pass_job_queue=False, pattern=None, pass_groups=False, pass_groupdict=False, pass_user_data=False, pass_chat_data=False, run_async=False)¶ Bases:
telegram.ext.handler.Handler
[telegram.update.Update
,telegram.ext.utils.types.CCT
]Handler class to handle Telegram callback queries. Optionally based on a regex.
Read the documentation of the
re
module for more information.Note
pass_user_data
andpass_chat_data
determine whether adict
you can use to keep any data in will be sent to thecallback
function. Related to either the user or the chat that the update was sent in. For each update from the same user or in the same chat, it will be the samedict
.Note that this is DEPRECATED, and you should use context based callbacks. See https://git.io/fxJuV for more info.
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 thecallback_data
or the data was simply dropped from cache or not persisted. In these cases, an instance oftelegram.ext.InvalidCallbackData
will be set ascallback_data
.New in version 13.6.
Warning
When setting
run_async
toTrue
, you cannot rely on adding custom attributes totelegram.ext.CallbackContext
. See its docs for more info.- Parameters
callback (
callable
) –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 for context based API:def callback(update: Update, context: CallbackContext)
The return value of the callback is usually ignored except for the special case of
telegram.ext.ConversationHandler
.pass_update_queue (
bool
, optional) – If set toTrue
, a keyword argument calledupdate_queue
will be passed to the callback function. It will be theQueue
instance used by thetelegram.ext.Updater
andtelegram.ext.Dispatcher
that contains new updates which can be used to insert updates. Default isFalse
. DEPRECATED: Please switch to context based callbacks.pass_job_queue (
bool
, optional) – If set toTrue
, a keyword argument calledjob_queue
will be passed to the callback function. It will be atelegram.ext.JobQueue
instance created by thetelegram.ext.Updater
which can be used to schedule new jobs. Default isFalse
. DEPRECATED: Please switch to context based callbacks.pattern (
str
| 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 passa 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.Changed in version 13.6: Added support for arbitrary callback data.
pass_groups (
bool
, optional) – If the callback should be passed the result ofre.match(pattern, data).groups()
as a keyword argument calledgroups
. Default isFalse
DEPRECATED: Please switch to context based callbacks.pass_groupdict (
bool
, optional) – If the callback should be passed the result ofre.match(pattern, data).groupdict()
as a keyword argument calledgroupdict
. Default isFalse
DEPRECATED: Please switch to context based callbacks.pass_user_data (
bool
, optional) – If set toTrue
, a keyword argument calleduser_data
will be passed to the callback function. Default isFalse
. DEPRECATED: Please switch to context based callbacks.pass_chat_data (
bool
, optional) – If set toTrue
, a keyword argument calledchat_data
will be passed to the callback function. Default isFalse
. DEPRECATED: Please switch to context based callbacks.run_async (
bool
) – Determines whether the callback will run asynchronously. Defaults toFalse
.
-
callback
¶ The callback function for this handler.
- Type
callable
-
pass_update_queue
¶ Determines whether
update_queue
will be passed to the callback function.- Type
bool
-
pass_job_queue
¶ Determines whether
job_queue
will be passed to the callback function.- Type
bool
-
pattern
¶ Optional. Regex pattern, callback or type to test
telegram.CallbackQuery.data
against.Changed in version 13.6: Added support for arbitrary callback data.
- Type
Pattern |
callable
|type
-
pass_groups
¶ Determines whether
groups
will be passed to the callback function.- Type
bool
-
pass_groupdict
¶ Determines whether
groupdict
. will be passed to the callback function.- Type
bool
-
pass_user_data
¶ Determines whether
user_data
will be passed to the callback function.- Type
bool
-
pass_chat_data
¶ Determines whether
chat_data
will be passed to the callback function.- Type
bool
-
run_async
¶ Determines whether the callback will run asynchronously.
- Type
bool
-
check_update
(update)¶ Determines whether an update should be passed to this handlers
callback
.- Parameters
update (
telegram.Update
|object
) – Incoming update.- Returns
bool
-
collect_additional_context
(context, update, dispatcher, check_result)¶ Add the result of
re.match(pattern, update.callback_query.data)
toCallbackContext.matches
as list with one element.
-
collect_optional_args
(dispatcher, update=None, check_result=None)¶ Pass the results of
re.match(pattern, data).{groups(), groupdict()}
to the callback as a keyword arguments calledgroups
andgroupdict
, respectively, if needed.