我正在使用python Telegram bot开发一个电报机器人,我想停止运行Telegram.job对象。
例如,我想在while循环中停止运行这个函数
def hello(context):
while True:
context.bot.send_message(chat_id=context.job.context, text="Hi!")
我正在使用start命令调用hello函数并运行作业:
def start(update,context):
context.job_queue.run_once(hello, 10, context=update.message.chat_id, name=update.effective_chat.id)
使用end命令,我将作业从作业队列中删除:
def end(update,context):
for job in context.job_queue._queue.queue:
if job[1].name == update.effective_chat.id:
context.job_queue._queue.queue.remove(job)
问题是,当我在作业开始之前(在前10秒)使用end命令时,它工作正常并停止作业,但当我在运行作业时使用end命令时,它不会执行任何操作,因为正在运行的作业不在作业队列中
你知道吗?如何停止正在运行的作业
我不认为有一种直接的方法可以通过PTB本身来实现,但是自己编程很容易。您始终可以访问
context.bot_data
字典因此,在那里存储一个变量,如
run_job_a = True
,并在循环的每次迭代中检查它。然后,您可以通过将作业的值更改为False来停止作业相关问题 更多 >
编程相关推荐