需要一个电报机器人的计时器。底线是,如果用户在 1 小时内没有发送消息,那么机器人必须给他写信,否则会中断循环。代码如下所示:
@bot.message_handler(content_typer=['text'])
def fio(message):
text = message.text
timing = time.time()
while True:
if message.text != text:
break
if time.time() - timing > 3600:
bot.send_message(message.chat.id,'ВНИМАНИЕ! Вы не ответили на вопросы!')
timing = time.time()
sleep(10)
问题是 message.text 不会改变,即使你给机器人写了一些东西。所以我不知道如何摆脱这个循环。帮助某人
python电报机器人
我会建议以下方法来解决这个问题。
你可以使用图书馆
schedule。文档在这里。机器人收到用户的消息后,您需要创建一个这样的作业:schedule.every(1).hours.do(send_warning).tag('CHAT-ID')CHAT-ID与用户聊天的 id 在哪里。在函数send_warning中,您需要实现发送带有警告文本的消息。如果仍然有来自用户的消息,那么您需要通过标签取消作业,如下所示:
schedule.clear('CHAT-ID')那么,您需要为调度创建一个后台线程。
UPD:我得到了这个代码:
我认为,进一步可以根据您的任务调整此示例。
您没有一段时间退出条件,因此它将是无限的
为循环指定一个条件,在该循环中,用户的响应或将随用户的每条消息更新的计数器“While 条件”循环在逻辑上如下所示:“直到条件为真”在您的情况下,条件始终为真
你那里的代码里
message_handler写的,content_typer但是有必要content_types,我想也正因为如此,message.text它才不会改变。