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

Discord.NET中SocketUser转SocketGuildUser返回null问题

Discord.Net机器人提及用户转换为SocketGuildUser返回null问题

问题现象

开发基于C#的Discord.Net机器人时,需要将消息内被提及的用户转换为SocketGuildUser类型:

  • 读取自身用户对象时转换可正常执行
  • 读取朋友的用户对象时转换失效:程序可获取到SocketUnknownUser类型对象,但无法转换得到SocketGuildUser,仅返回null

此前移除该朋友账号的某一角色后,机器人曾正常运行数日,但在相关业务代码未做任何修改的前提下,该问题突然复现。

复现代码

var userToModCheck = message.MentionedUsers.ElementAt(0);
var userToMod = message.MentionedUsers.ElementAt(0) as SocketGuildUser;

代码运行表现:

  • userToModCheck可返回正确的用户名与用户ID,但对象类型为SocketUnknownUser
  • userToMod返回值为null

已完成排查操作

  • 检查Discord开发者门户中机器人的Privileged Gateway Intents权限配置
  • 调用Context.Guild.GetUser方法,通过用户ID单独获取SocketGuildUser
  • 调整相关用户的角色配置
  • 重启机器人服务与本地设备
  • 检索互联网相关解决方案

特殊现象说明

  • 当被提及用户处于在线状态时,该异常不会出现
  • 将配置项AlwaysDownloadUsers设为true无法解决该问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 19:18:26