我知道如何使用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中延迟时间?”问题不同。这个问题没有任何答案对我有任何帮助,这是我要求的另一件事。
再次注意:人们一直暗示这个问题与另一个问题相同,而不是。这是一个不同的问题。为什么人们如此难以掌握?
答案 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()