由于我无法使用冷却时间装饰器,因此我想检查何时发送了通道中的最后一条消息,因为那是最后一次使用它,然后 如果时间在上次功能时间的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!")
答案 0 :(得分:0)
使用数据库并不是一个坏主意。您可以使用datetime.datetime.utcnow()
存储最后一次调用命令的UTC时间,然后将其值与通道ID一起保存为键(因为该命令是特定于通道的)。
然后,您可以添加一个if
条件,以检查现在正在调用的命令的UTC时间与数据库中保存的值之间的时差是否需要16小时。
编码愉快!