Discord bot配置has_permissions时报ban_member无效错误如何修复
问题原因
报错是因为discord.ext.commands的has_permissions装饰器不识别你传入的ban_member权限字段,discord.py中所有权限字段均采用复数形式命名,封禁成员的正确权限字段为ban_members。
修复方案
将代码第42行的装饰器替换为正确的权限字段即可:
@commands.has_permissions(ban_members=True)
修复后的完整命令代码如下:
def write_json(data,filename="blacklistedWords.json"): with open(filename,"w") as f: json.dump(data,f,indent=4) @bot.command(aliases=['awb']) @commands.has_permissions(ban_members=True) async def addtoblacklist(ctx,*,word): with open("blacklistedWords.json") as json_file: data = json.load(json_file) temp = data["blacklistedWords"] temp.append(word) write_json(data) await ctx.send(f"已成功将 `{word}` 加入黑名单词库")
额外优化建议
- 你可以增加权限不足的错误捕获逻辑,避免无权限用户调用命令时直接抛出控制台报错:
@addtoblacklist.error async def addtoblacklist_error(ctx, error): if isinstance(error, commands.MissingPermissions): await ctx.send("你没有封禁成员权限,无法使用该命令", delete_after=5)
- 运行前确认你的bot本身已经被服务器授予了封禁成员权限,避免命令执行时出现权限冲突。
内容的提问来源于stack exchange,提问作者Soumyajoy Das
相关产品推荐
相关产品推荐

