我有一个命令,可以禁用特定通道中的特定命令。 因此,我将其保存在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"
]
}
}
答案 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