gpt4 book ai didi

python-3.x - 不和谐 Python : How to add cooldown command under an event

转载 作者:行者123 更新时间:2023-12-04 13:43:54 26 4
gpt4 key购买 nike

我已经看过其他关于如何制作冷却命令的帖子。一个答案完全符合我的要求,但这只是因为我完全按照他们所做的去做。现在我想将命令正式实现到我的 Discord 机器人中。我注意到我测试的冷却命令只能在 @client.command 而不是 @client.event (客户端是对象)下工作。 我在事件事件 下列出了我的所有命令,所以我需要关于如何添加冷却命令而不必重写很多东西的帮助。到目前为止,这就是我对冷却命令的了解。

from discord.ext.commands import Bot
from discord.ext import commands

client = Bot(command_prefix="?")

@client.event
@command.cooldown(5, 30, commands.BucketType.user)
async def on_message(message):
if message.content.upper().startswith("?HELLO"):
msg = 'Hello {0.author.mention} :banana:'.format(message)
await client.send_message(message.channel, msg)

@on_message.error
async def on_message_error(self, error, ctx):
if isinstance(error, commands.CommandOnCooldown):
msg = ':exclamation: This command is on cooldown, please try again in {:.2f}s :exclamation:'.format(error.retry_after)
await self.send_message(ctx.message.channel, msg)

我只是用一个命令作为例子来展示我有什么样的格式。我收到了@on_message.error 的错误(这是一个尝试错误的事情,所以我没想到它会起作用)。我想在连续 5 次尝试相同命令后设置 30 秒的冷却时间,以及机器人响应计时器的错误消息。考虑到我制作这个机器人已经走了多远,我真的不想为了让一个命令起作用而重写整个事情:/

最佳答案

你应该添加:

@commands.cooldown(1, 30, commands.BucketType.user)

这将增加每位用户每 30 秒使用 1 次的速率限制。

您可以将 BucketType 更改为 default , channelserver改为创建全局、 channel 或服务器速率限制,但您只能在一个命令上有 1 个冷却时间。

这也会导致 CommandOnCooldown on_command_error 中的异常

关于python-3.x - 不和谐 Python : How to add cooldown command under an event,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52340610/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com