如何在Python中执行命令后延迟时间?

时间:2015-04-10 04:50:36

标签: python chatbot

我知道如何使用time.sleep()命令在脚本中创建延迟,但我正在开发一个chatango bot,我想通过在每个命令后放置3秒延迟来防止它充斥聊天。但是,我不确定如何使这种情况发生,我当前的尝试只会使脚本本身延迟3秒。这就是我的例子:

    s = message.body
    if 'test' in s:
        print(room.message("This is a sample."))
        import time
        time.sleep(3)

我不太确定该怎么做,所以任何帮助都会受到赞赏,谢谢。

注意:这与“如何在Python中延迟时间?”问题不同。这个问题没有任何答案对我有任何帮助,这是我要求的另一件事。

再次注意:人们一直暗示这个问题与另一个问题相同,而不是。这是一个不同的问题。为什么人们如此难以掌握?

3 个答案:

答案 0 :(得分:1)

将最后一个回复的时间保存到onMessage()内的实例变量中。每次打印消息进入房间时都要更新它。然后只回复:

import time
class Bot(ch.RoomManager):
    def onMessage(self, room, user, message):
        NOW = time.time()
        s = message.body
        if 'test' in s AND NOW - 3 > self._last_sent:
            print(room.message("This is a sample."))
            self._last_sent = NOW

答案 1 :(得分:0)

这是我用于机器人游戏命令的方法,可以对命令进行延时。

import time
time_dict = dict()
class Bot(ch.RoomManager)
      def onMessage(self, room, user, message):  
          s = message.body
          if 'test' in s:   
            try:
             if room in time_dict:
                timeset = time_dict[room]
             else:
                timeset = time.time()-3
                time_dict[room] = timeset
                if time.time() - float(timeset) < 150:
                   return
                else:
                    room.message("This is a sample.")

答案 2 :(得分:0)

试试这个:

import ch
import time

z = dict()

class bot(ch.RoomManager):
    def onMessage(self, room, user, message):
        s = message.body
        if 'test' in s:
            if room.name in z:
                if time.time() < z[room.name]:
                    return
                else:
                    z[room.name] = time.time()+3
                    print(room.message("This is a sample."))
            else:
                z[room.name] = time.time()+3
                print(room.message("This is a sample."))

if __name__ == "__main__":
    bot.easy_start()