Discord.NET c# SocketUser 返回 null

Posted

技术标签:

【中文标题】Discord.NET c# SocketUser 返回 null【英文标题】:Discord.NET c# SocketUser is returning null 【发布时间】:2021-05-04 08:28:26 【问题描述】:

我正在编写一个 c# 机器人并尝试执行一个 !user @ 命令,该命令提供有关已标记用户的信息。

这就是我获取用户ID的方式

public async Task Info(string user)

这就是我将其转换为数字的方式

user = user.Substring(3);
int k = user.Length;
user = user.Substring(0, k - 1);

例如:!user 转换为 749020331187896410

这就是我为获取用户所做的事情,就像我为 Context.Message.Author 所做的那样

var client = Context.Client;
ulong id = Convert.ToUInt64(user);
var socketUser = client.GetUser(id);

我尝试在最后一行添加 as SocketUseras SocketGuildUser 但仍然返回 null 帮助:/

【问题讨论】:

您的机器人中是否启用了Server Members Intent 是的,成功了,谢谢 我将其发布为答案,以便可以接受。 【参考方案1】:

这应该可以工作

   [Command("user")]
    public async Task blizz_con(IGuildUser user)
    
        await ReplyAsync(user.Id.ToString());
    

或者如果您直接处理消息:

message.Author.id

【讨论】:

【参考方案2】:

您应该在Discord Developer Console 中启用Server Members Intent

【讨论】:

以上是关于Discord.NET c# SocketUser 返回 null的主要内容,如果未能解决你的问题,请参考以下文章

Discord.NET '对象引用未设置为对象的实例。 C# [重复]

Discord.NET C# MessageReceived 被调用太多次

C# Discord.Net“上下文”

对于 AddModulesAsync (C# Discord.Net),我没有正确的论据

C# Discord.NET 加入语音频道时出错

如何使用嵌入discord.net webhook c#发送文件附件