我希望为某个功能在on_raw_reaction内进行冷却

时间:2019-07-21 23:23:55

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

由于我无法使用冷却时间装饰器,因此我想检查何时发送了通道中的最后一条消息,因为那是最后一次使用它,然后 如果时间在上次功能时间的16小时之内,则无法再次执行该功能;如果已超过16小时,则无法再次执行该命令

ive尝试了下面的代码,但我遇到了问题,所以现在我只是直接寻求帮助

          `` if charmnorm in member.roles:
                   print("right role")
                   if female in member.roles:
                       print("female role")
                       async for message in femchan.history(limit=3000):
                           print("works")
                           limittime = datetime.timedelta(hours=16)
                           createdate = message.created_at.date()
                           timenow = datetime.datetime.now().hour
                           sub = createdate.hour + limittime
                           print(f"createdate is {createdate}")
                           print(sub)
                           print(timenow)
                           print(limittime)

                           if f"{user.id}" in message.embeds[0].title:
                               limittime = datetime.timedelta(hour=16)
                               createdate = message.created_at
                               timenow = datetime.datetime.now().hour
                               sub = createdate.hour + limittime
                               print(f"createdate is {createdate}")
                               print(sub)    
                               print(timenow)
                               print(limittime)

                               if sub >= timenow:
                                   await user.send("Beginning Bump Now!")

1 个答案:

答案 0 :(得分:0)

使用数据库并不是一个坏主意。您可以使用datetime.datetime.utcnow()存储最后一次调用命令的UTC时间,然后将其值与通道ID一起保存为键(因为该命令是特定于通道的)。

然后,您可以添加一个if条件,以检查现在正在调用的命令的UTC时间与数据库中保存的值之间的时差是否需要16小时。

编码愉快!