Discord.py如何使用discord.ext.commands禁用命令

时间:2020-05-05 20:21:19

标签: python discord discord.py

我想禁用命令,但是我不知道它是如何工作的

这是我要禁用的命令

@client.command(description="Sends an random gif", aliases=['gifje', 'GIF', 'Gif'], brief="Sends an random gif (NO NSFW)")
discord.ext.commands.Command(name="gif", cls=None, enabled=False)
#@commands.cooldown(1, 10, commands.BucketType.user)
async def gif(ctx):
    links = ["https://gph.is/1N1s5AR",
             "https://gph.is/2nmNhuw",
             "https://gph.is/g/ajWp6mj",
             "https://gph.is/g/apbGw0O",
             "https://gph.is/g/Z5YMP9Q",
             "https://gph.is/g/aQOvqQ5",
             "https://gph.is/g/ajW9Nx8",
             "https://gph.is/2CF8W7r",
             "http://gph.is/17GL4ua",
             "https://gph.is/12kQg0y"]
    await ctx.send(random.choice(links))

我相信我必须使用discord.ext.commands来做,但是我不知道该怎么做(我不想使用齿轮)

3 个答案:

答案 0 :(得分:1)

.update(enabled=False)

您可以通过 Command 找到您要查找的命令来获取 Bot.commands 对象。找到正确的命令对象后,您可以使用其 update 方法来编辑 enabled 属性。

将此属性设置为 False 将导致在调用命令时引发 DisabledCommand 错误,您可以根据需要进行处理。

答案 1 :(得分:0)

client.remove_command(name)

您可以创建一个运行该命令的命令,直到添加回该命令或重新启动机器人后,该命令才可用。

https://discordpy.readthedocs.io/en/latest/ext/commands/api.html#discord.ext.commands.Bot.remove_command

答案 2 :(得分:0)

    @commands.command(name="toggle", description="Enable or disable a command!")
    @commands.is_owner()
    async def toggle(self, ctx, *, command):
        command = self.client.get_command(command)

        if command is None:
            embed = discord.Embed(title="ERROR", description="I can't find a command with that name!", color=0xff0000)
            await ctx.send(embed=embed)

        elif ctx.command == command:
            embed = discord.Embed(title="ERROR", description="You cannot disable this command.", color=0xff0000)
            await ctx.send(embed=embed)

        else:
            command.enabled = not command.enabled
            ternary = "enabled" if command.enabled else "disabled"
            embed = discord.Embed(title="Toggle", description=f"I have {ternary} {command.qualified_name} for you!", color=0xff00c8)
            await ctx.send(embed=embed)

这是我用来禁用/启用命令的最简单方法