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

使用discord.py获取Discord服务器成员列表失败,报AttributeError错误求助

解决discord.py中guild.members报AttributeError的问题

问题原因

你在创建bot实例后立刻调用bot.get_guild(guildID),此时bot还未完成Discord登录流程,内部缓存尚未填充公会数据,导致guild变量为None,后续访问guild.members自然触发AttributeError。

解决方案

方案1:在命令内部获取公会(推荐)

直接从命令上下文ctx中获取当前公会,或者在命令执行时调用bot.get_guild(此时bot已登录,缓存已就绪):

@bot.command()
async def getMemberList(ctx):
    # 方式1:从命令上下文获取当前公会
    guild = ctx.guild
    # 方式2:通过公会ID获取(确保guildID是正确的整数)
    # guild = bot.get_guild(guildID)
    
    membersList = guild.members
    print(membersList)

方案2:在bot初始化完成后加载公会

利用on_ready事件(bot登录成功后触发)初始化guild变量,确保缓存已填充:

guild = None  # 声明全局变量

@bot.event
async def on_ready():
    global guild
    guild = bot.get_guild(guildID)
    print(f"Bot已登录,成功获取公会:{guild.name if guild else '未找到'}")

@bot.command()
async def getMemberList(ctx):
    if not guild:
        await ctx.send("公会数据未加载完成,请稍后重试")
        return
    membersList = guild.members
    print(membersList)

额外注意事项

  • 确认guildID是整数类型,不要传入字符串(比如123456789而非"123456789")
  • 确保Bot已加入目标公会,并且拥有查看成员的权限
  • 已正确开启SERVER MEMBERS INTENT等必要权限(你已完成这步,无需重复操作)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:35:05