2

我正在制作一个有冷却时间的不和谐机器人,并且我正在尝试制作一个事件,当CommandOnCooldown错误发生时,机器人会告诉他们他们需要等待多长时间。这是我的代码,看起来一切正常,但它不知道 retry_after 是什么意思:

@bot.event
async def on_CommandOnCooldown():
    await bot.send_message(ctx.message.channel, 'You are on cooldown. Try again in {:.2f}s'.format(retry_after))

@bot.command(pass_context = True)
@commands.cooldown(1, 30, commands.BucketType.user)
async def getalt(ctx):
    msg = ["a list of stuff"]
    await bot.send_message(ctx.message.author, random.choice(msg))
    await bot.send_message(ctx.message.channel, "Alt Has Been Seen To Your DMs")
    await bot.purge_from(ctx.message.channel, limit=2)
    await bot.send_message(ctx.message.author, "Please Wait 30 Seconds Before Using This Command Again. If you do not wait the full time then you won't be sent an alt.")

我正在使用来自https://git.radiobrony.fr/MKody/discord.py/commit/cd0de57d13b15f709aaacf78ce611dd87e0784ce的参考资料

4

1 回答 1

4

这是使用 discord.py 时捕获异常的一般格式:

from discord.ext import commands

bot = commands.Bot('$')

@bot.event
async def on_command_error(ctx, error):
    if isinstance(error, commands.CommandOnCooldown):
        await ctx.send('This command is on a %.2fs cooldown' % error.retry_after)
    raise error  # re-raise the error so all the errors will still show up in console
  

@commands.cooldown(1, 30)
@bot.command()
async def getalt(ctx):
    await ctx.send('in getalt')

bot.run('token')

getalt命令,有 30 秒的冷却时间,被on_command_error事件捕获,依次向频道发送消息。如果您还有其他不清楚的地方,请参阅此处的详细文档。

于 2017-10-04T01:38:13.020 回答