-3

我知道如何使用 time.sleep() 命令在脚本中创建延迟,但我正在开发一个 chatango 机器人,我想通过在每个命令后放置 3 秒延迟来防止它淹没聊天。但是,我不确定如何做到这一点,而我目前的尝试只是让脚本本身延迟了 3 秒。这就是我的例子:

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

我不太确定从这里做什么,所以任何帮助将不胜感激,谢谢。

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

再次注意:人们一直暗示它与另一个问题相同,但事实并非如此。这是一个不同的问题。你们这些人怎么这么难把握?

4

3 回答 3

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
于 2015-04-10T05:01:03.683 回答
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.")
于 2015-04-19T01:30:27.207 回答
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()
于 2017-04-11T12:37:12.650 回答