0

我想怎么做:动作被调度,它如何结束文件被发送。但事实证明,该动作持续了 5 秒,然后又需要 5 秒发送文件,而这一次用户不明白是机器人被冻结还是文件仍在发送中。如何在直接发送文件之前增加操作的持续时间?

import telebot
...
def send_file(m: Message, file):
    bot.send_chat_action(m.chat.id, action='upload_document')
    bot.send_document(m.chat.id, file)
4

1 回答 1

1

就像提伯斯一样。M说这是不可能的,因为所有动作都是通过 API 发送的。但是线程帮助我解决了这个问题。解决方案如下所示:

from threading import Thread
def send_action(id, ac):
    bot.send_chat_action(id, action=ac)

def send_doc(id, f):
    bot.send_document(id, f)

def send_file(m: Message):
    file = open(...)
    Thread(target=send_action, args=(m.chat.id, 'upload_document')).start()
    Thread(target=send_doc, args=(m.chat.id, file)).start()
...
send_file(m)

因此,可以做到这一点,一旦动作结束,文件就会立即发送而没有时间间隔

于 2020-10-08T09:23:23.123 回答