Как написать функцию обратного вызова бота телеграммы для очереди заданий?

Я в замешательстве из-за этой очереди на работу. В функции обратного вызова я хочу получить доступ к сообщению пользователя и работать над ним, но в статье говорится, что обратный вызов принимает только параметры бота и задания. с теми, кто в руках, я не могу получить доступ к 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,

Другие вопросы по тегам