Python Telebot如果用户什么都不做怎么发送消息?

问题描述

我是电报机器人构建的新手,问题是,如果用户在12个小时内不执行任何操作,怎么可能向用户发送消息,而在用户继续不执行操作时又发送一条消息给用户?但是,例如,如果他单击消息4中的按钮,则会跳过消息5。

if call.data == 'GetLesson1':
        bot.send_message(call.message.chat.id,mg.third_message,reply_markup=kb.check_exercise())
        push_data.append(call.data)
if call.data == 'Exercise':
        bot.send_message(call.message.chat.id,mg.sixth_message,reply_markup=kb.check_exercise())

time.sleep(54000)

if call.data is None:
        bot.send_message(call.message.chat.id,mg.fourth_message,mg.fives_message,reply_markup=kb.check_exercise())






解决方法

您需要阅读JobQueue中可用的python-telegram-bot

这是一个示例,如何在一分钟内发送消息:

def callback_minute(context: telegram.ext.CallbackContext):
    context.bot.send_message(chat_id='@examplechannel',text='One message every minute')

job_minute = j.run_repeating(callback_minute,interval=60,first=0)

在该回调中,您可以检查用户从那时开始是否发送任何消息,或者甚至在收到新消息时完全删除此作业(因此无需检查)。

job_minute.schedule_removal()

请参阅文档中的more examples

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...