discord.py:如何阻止命令执行?

时间:2020-07-27 16:49:23

标签: python discord discord.py

我有一个命令,可以禁用特定通道中的特定命令。 因此,我将其保存在json文件中。然后,我想检查是否执行了命令以及该命令是否在json文件中。如果此命令位于json文件中,则应打印一条消息。否则,它应该执行命令。

我的代码:

@bot.event
async def on_command(ctx):
    with open('commandchannels.json', 'r') as fcheck:
        check = json.load(fcheck)
    if f'{ctx.guild.id}' in check.keys():
        if f'{ctx.channel.id}' in check[f'{ctx.guild.id}']:
            if f'{ctx.command}' in check[f'{ctx.guild.id}'][f'{ctx.channel.id}']:

                print('command disabled')

            else:
                exec(ctx.command)

        else:
            exec(ctx.command)

    else:
        exec(ctx.command)

但是机器人会打印“命令已禁用”并执行命令。

我的Json文件:

{
    "673600173615611913": {
        "722467477031878716": [
            "kick"
        ]
    }
}

1 个答案:

答案 0 :(得分:0)

您应该做的是将命令添加到json时,只需使用command.update()即可禁用该命令。这使得没有人可以运行该命令。从json中删除命令后,请使用相同的功能启用该命令。为此:

#first get the command instance
command = bot.get_command('COMMAND NAME')


#to disable the command
command.update(enabled=False)

#to enable the command
command.update(enabled=True)

discord.py command.update()参考:https://discordpy.readthedocs.io/en/latest/ext/commands/api.html?highlight=disable#discord.ext.commands.Command.update