求助:Discord机器人可识别成员但无法执行封禁功能
Discord机器人封禁功能无法执行的排查与解决方法
机器人角色层级不够
Discord的权限按角色位置优先级判定,要是机器人的角色排在被封禁用户的角色下面,就算给了封禁权限也没法执行操作。去服务器设置的「角色」页面,把机器人的角色拖到所有需要封禁的用户角色上方就行。换用服务器对象直接封禁
你当前用get(bot.get_all_members())获取成员对象的方式,可能遇到用户不在目标服务器的情况(比如用户退群但ID仍能查到)。直接用服务器的ban()方法通过ID封禁更可靠:# 先获取目标服务器对象(可用服务器ID,或从命令上下文提取) guild = bot.get_guild(你的服务器ID) # 直接用ID执行封禁 await guild.ban(int_offender_id, reason="Test")另外要注意:如果用的是discord.py v2.x及以上版本,所有异步操作必须加
await,你原代码里的banned_member.ban()要是没加await,这大概率就是功能失效的核心原因!核对权限配置细节
再确认机器人角色的「封禁成员」权限是否真的开启:进入服务器设置→角色→找到机器人角色→确保「封禁成员」选项处于勾选状态,且该角色没被服务器其他权限设置(比如频道覆盖权限)限制。
内容的提问来源于stack exchange,提问作者Alan Shiah
相关产品推荐
相关产品推荐

