You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发Discord按角色批量封禁机器人时报Member不可迭代错误如何解决

错误产生原因
  • 报错由代码中的if role in user:语句触发:user是discord.Member类的实例,不属于可迭代对象,无法直接使用in关键字判断角色是否存在。
  • 成员的所属角色统一存储在user.roles属性中,该属性是可迭代的角色列表,你实际需要判断的是目标角色是否在这个列表内。
修复方案

将判断语句中的user替换为user.roles即可解决报错,同时可补充必要的权限校验避免普通用户滥用该高危命令,修复后代码如下:

# 仅服务器管理员可调用该命令的校验装饰器,可根据需求调整
@commands.has_permissions(administrator=True)
@client.command()
async def roleban(ctx, role:discord.Role):
    for user in ctx.guild.members:
        if role in user.roles:
            try:
                await user.ban()
            except:
                pass
额外注意事项
  • 运行该功能前需要确保你的机器人开启了服务器成员权限(Server Members Intent),否则ctx.guild.members无法获取到完整的成员列表,该开关可在Discord开发者后台的机器人设置页开启。
  • 机器人自身的角色等级需要高于目标封禁成员的角色等级,且拥有封禁成员的权限,否则对应封禁操作会静默失败。

内容的提问来源于stack exchange,提问作者Tamong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 13:30:04