discord.py开发机器人运行mute命令报get_role缺少必选位置参数如何解决
问题解决说明
报错原因
get_role()是discord.Guild类的实例方法,不能直接通过类名调用,必须绑定具体的服务器实例使用。你用discord.Guild.get_role(xxx)调用时,方法会把传入的角色ID识别为第一个必填的self参数,因此判定你缺少第二个role_id参数,触发对应报错。- 代码存在未定义变量:当前作用域没有声明
message变量,直接调用message.author会触发后续报错,需要用命令上下文对象的ctx.author获取命令触发者。 - 权限判断逻辑颠倒:现有逻辑是用户有
kick_members权限就直接退出,无权限才发提示,和预期功能完全相反。
修正后代码
@bot.command() async def mute(ctx): # 从当前触发命令的服务器实例获取对应静音角色 muteRole = ctx.guild.get_role(845612659940524032) # 校验用户权限 if not ctx.author.guild_permissions.kick_members: await ctx.send('You don\'t have the permission for that') return # 此处可补充给目标用户添加静音角色的逻辑
内容的提问来源于stack exchange,提问作者mangoeis
相关产品推荐
相关产品推荐

