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

Discord开发:状态查询命令始终返回用户为'offline'问题求助

问题根本原因

Discord平台出于用户隐私保护规则,用户在线状态、成员列表等数据属于特权网关数据,默认不对机器人开放。未获取对应权限的机器人调用用户状态相关属性时,无论用户实际状态如何,都会统一返回offline,和代码逻辑无关。

修复方案

需按以下两个步骤配置即可正常拉取用户状态:

1. Discord开发者后台开启特权意图

  • 进入Discord开发者平台的当前机器人应用管理页面,切换到「Bot」配置栏
  • 找到Privileged Gateway Intents(特权网关意图)分区
  • 手动开启SERVER MEMBERS INTENT和PRESENCE INTENT两个开关,保存更改

2. 代码中显式声明启用对应意图

初始化机器人客户端时需要传入启用了对应权限的意图配置,完整参考代码如下:

import discord
from discord.ext import commands

# 初始化意图对象,启用基础默认权限
intents = discord.Intents.default()
# 开启成员列表权限(对应后台SERVER MEMBERS INTENT配置)
intents.members = True
# 开启用户状态权限(对应后台PRESENCE INTENT配置)
intents.presences = True

# 初始化Bot实例时传入intents参数
client = commands.Bot(command_prefix="你自己设置的命令前缀", intents=intents)

# 原有status命令逻辑无需修改
@client.command(name="status")
async def status(ctx, user: discord.Member=None):
    if not user:
        user = ctx.message.author
    print(user)
    print(user.raw_status)

注意:如果你的机器人加入的服务器数量超过100个,需要向Discord官方提交特权意图使用申请,审核通过后才能正常开启上述两个开关。个人使用、服务器数量不足100的机器人直接开启即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:48:03