python - Python Telegram Bot,无法通过作业队列?
问题描述
我按原样从另一个线程复制了这段代码,但无法让它工作......
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, InlineQueryHandler
def sayhi(bot, job):
job.context.message.reply_text("hi")
def time(bot, update,job_queue):
job = job_queue.run_repeating(sayhi, 5, context=update)
def main():
updater = Updater('BotKey')
dp = updater.dispatcher
dp.add_handler(MessageHandler(Filters.text , time,pass_job_queue=True))
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
我在命令终端中给出的错误是:
TypeError: time() missing 1 required positional argument: 'job_queue'
我觉得这很奇怪,因为我以为我已经设置了 pass_job_queue=True ...
(另外,我确实将 BotKey 更改为所需的密钥。我可以让我的机器人回复文本,但不能让它定期发送东西......)
解决方案
pass_job_queue
在 12.0.0 版本中已弃用,在此处切换版本的教程
您需要使用基于上下文的回调,就像在这个例子中一样。
这是您更改的代码:
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, InlineQueryHandler
def sayhi(context):
context.bot.send_message(context.job.context, text="hi")
def time(update, context):
context.job_queue.run_repeating(sayhi, 5, context=update.message.chat_id)
def main():
updater = Updater('Token', use_context=True)
dp = updater.dispatcher
dp.add_handler(MessageHandler(Filters.text , time))
updater.start_polling()
updater.idle()
main()
推荐阅读
- node.js - D3 Sankey节点颜色排列
- sql - SQL执行顺序:它是否存在?
- javascript - 图表 JS:无法使用 Jquery 将饼图重新初始化为甜甜圈或甜甜圈到饼图
- reactjs - 在 useEffect 中处理 forEach 后调用 setstate
- ethereum - 本地 FLuxMonitor:交易中的 FROM 地址错误
- python - Python 不知道俄语字母
- firebase - Flutter Firebase firestore 附加具有唯一 ID 的数据
- label - 使用 Pine 脚本在 TradingView 中标记位置
- python - 如何在 python 中编写一个函数来将目录的文件名与我的函数输出写入数据帧?
- angular - 如何以角度重置表单值?