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

discord.py commands扩展中Intents不生效、成员列表获取异常问题

错误1:NameError: name 'discord' is not defined 原因与修复

  • 原因:你仅导入了discord.ext.commands子模块,没有导入根级discord模块,因此调用discord.Intents时无法识别discord命名空间。其他用户的可运行代码通常默认包含import discord语句只是未在贴出的片段中体现。
  • 修复方案:在代码首行添加import discord即可,你已经完成了这步操作。

错误2:仅能获取机器人自身信息、其他成员返回None的修复方案

按优先级依次排查:

  1. 补全Intents配置
    你当前仅开启了messages和members Intent,还需要开启guilds(服务器基础信息必选)和message_content(v2.x版本强制要求的特权权限),同时开启启动时全量成员拉取配置,修改后的完整初始化代码如下:
import discord
from discord.ext import commands

# 基础intent配置
intents = discord.Intents.default()
intents.members = True # 你已经开启的成员权限
intents.message_content = True # 消息内容特权权限
intents.guilds = True # 服务器基础信息权限

bot = commands.Bot(
    command_prefix=',',
    intents=intents,
    chunk_guilds_at_startup=True # 启动时主动拉取全量服务器成员缓存
)
  1. 调整获取成员信息的时机
    不要在on_ready事件刚触发时立刻拉取成员列表,此时机器人还未完成全量成员缓存的加载,可以监听on_guild_available事件触发后再执行拉取操作,示例代码:
@bot.event
async def on_guild_available(guild):
    # 服务器加载完成后再遍历拉取成员
    print(f"服务器{guild.name}成员列表:")
    async for member in guild.fetch_members(limit=None):
        print(member.name, member.id)
  1. 确认开发者后台配置
    除了已经开启的Server Members Intent,还要确认Message Content Intent也处于开启状态,两个特权Intent都开启才能正常拉取非机器人用户的完整信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:15:03