仅每5秒触发一次聊天聊天机器人的问题

时间:2019-04-12 17:33:30

标签: python-3.x discord discord.py

对于我的不和谐机器人,我希望每5秒钟根据最近是否在聊天室中键入一些内容,发送一条消息,说“你已经说了”。 例如,如果我发送了这些消息(如下) 嗨(消息#1,已经过去了一秒钟) 嗨(消息#2,已经过了两秒钟) 嗨(消息#3,已经过去了三秒钟) 嗨(消息#4,已过去5秒) (机器人说):您已经说过了(记住,机器人只说了一次,而不是说四次)

但是,到目前为止,它是空闲的并且不发送任何消息。我没有收到任何错误,该机器人本身可以运行并处于在线状态。我想知道是否有人可以帮助我编辑我的代码,以便如果我说了什么,则在5秒钟后,机器人只会说一次“您已经说了话”。该代码之前的先前问题包括漫游器向“您说过的内容”发送垃圾邮件,这就是为什么我希望它只说一次“您说过的内容”。

(下)我希望它能使它说话,以便每当我讲话时,如果5秒钟过去了,机器人就会说您已经讲话(仅一次)

异步定义on_message(message):       如果message.author.id =='XXXXXXXXXXXXXXX':

    mins = 0 #mins standing for minutes#
    num = 0 #var for counting how many times bot has sent msg#
    if "" in message.content.lower(): #means if I say anything#
      if mins % 5 == 0: #if seconds past is divisible by 5 (meaning 5 seconds have past)
        num +=1
        if num == 1:
          msg = 'You have spoken!'
          await client.send_message(message.channel,msg)
          num -=1 #make num 0 again so bot does not repeatedly send msg#
          time.sleep(5)
          mins +=1
        if (mins % 5)>0:
          time.sleep(5)
          mins +=1 #do nothing if not divisible#

我希望机器人每5秒钟讲一次,说一次“您说过话”。

1 个答案:

答案 0 :(得分:3)

每当漫游器看到一条消息时,请将该消息的时间戳记与漫游器最后响应的消息的时间戳进行比较。如果超过五秒钟,请记录该时间戳记并发送一条消息:

cols = list(df.columns.values)
cols.pop(cols.index(val))
df = df[[val] + cols]