Как написать функцию обратного вызова бота телеграммы для очереди заданий?
Я в замешательстве из-за этой очереди на работу. В функции обратного вызова я хочу получить доступ к сообщению пользователя и работать над ним, но в статье говорится, что обратный вызов принимает только параметры бота и задания. с теми, кто в руках, я не могу получить доступ к update.message.text
, Например, я хочу переписать следующую функцию как функцию обратного вызова, которую я не могу понять:
def echo(bot,update):
if tldextract.extract(update.message.text).registered_domain:
bot.send_message(chat_id= update.message.chat_id, text="OK")
Что мне здесь не хватает?
1 ответ
Вы должны передать контекст, когда создаете работу.
Вы можете прочитать из примера здесь внизу страницы:
>>> from telegram.ext import CommandHandler
>>> def callback_alarm(bot, job):
... bot.send_message(chat_id=job.context, text='BEEP')
...
>>> def callback_timer(bot, update, job_queue):
... bot.send_message(chat_id=update.message.chat_id,
... text='Setting a timer for 1 minute!')
...
... job_queue.run_once(callback_alarm, 60, context=update.message.chat_id)
...
>>> timer_handler = CommandHandler('timer', callback_timer, pass_job_queue=True)
>>> u.dispatcher.add_handler(timer_handler)
Вы можете передать что угодно (включая объекты телеграммы, список / дикты и т. Д.) В работу context
когда вы используете run_once
, run_daily
а также run_repeating
функции. Затем в функции обратного вызова вы должны передать 2 параметра, как вы сказали, bot
а также job
, а затем получить необходимые данные, открыв job.context
,