【发布时间】:2018-12-09 14:09:41
【问题描述】:
下面的代码为命令添加了冷却时间,但是当机器人重新启动时,冷却时间会重置。那么我怎样才能让机器人记住以前的用法呢?如果冷却时间限制是每天 5 次,并且如果成员使用了 3 次,并且如果机器人重新启动,它应该从所有成员离开的位置开始。
import discord
from discord.ext import commands
import random
from utils import Bot
from utils import CommandWithCooldown
class Members():
def __init__(self, bot):
self.bot = bot
@commands.command(pass_context=True, cls=CommandWithCooldown)
@commands.cooldown(1, 600, commands.BucketType.user)
async def ping(self, ctx):
msg = "Pong {0.author.mention}".format(ctx.message)
await self.bot.say(msg)
def setup(bot):
bot.add_cog(Members(bot))
【问题讨论】:
-
您必须保存
ping._buckets的状态,然后在您的on_ready事件中将该状态加载回ping._buckets。我会先尝试pickleing 该对象,如果这不起作用,您将不得不深入研究the code 以了解它是如何组合在一起的。看起来所有相关代码都在core.py和cooldowns.py之间拆分。
标签: python python-3.x discord discord.py