我对这个job queue事情感到困惑。在回调函数中,我希望能够访问用户消息并对其进行处理,但在文章中说回调只接受机器人和作业参数。有了手中的人我无法访问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")
我在这里缺少什么?
答案 0 :(得分:0)
您必须在创建作业时传递上下文。
您可以阅读页面底部附近的示例here:
>>> 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
和{{1}时,您可以将任何内容(包括电报对象,列表/词组等)传递到作业run_daily
中} 功能。然后在您的回调函数中,您必须按照您所说的run_repeating
和bot
传递2个参数,然后通过访问job
获取所需的数据。