【问题标题】:Discord.NET c# getting the roles of a specific userDiscord.NET c#获取特定用户的角色
【发布时间】:2021-05-05 23:17:31
【问题描述】:

我正在执行一个 !user @ 命令,它提供了有关提到的用户的信息,但是在获取角色时我收到此错误 无法将“Discord.WebSocket.SocketGlobalUser”类型的对象转换为“Discord.WebSocket.SocketGuildUser”类型'。

这就是我的做法:

[Command("user")]
public async Task Info(string user)
var client = Context.Client;
ulong id = Convert.ToUInt64(user);
var socketUser = client.GetUser(id);

string a = string.Empty;
foreach (SocketRole role in ((SocketGuildUser)socketUser).Roles) //Problem is on this line
{
   a += role.Mention + " ";
}

但它似乎不起作用。我试过 SocketUser 而不是 SocketGuildUser 但没有。 帮助

【问题讨论】:

  • 你为什么不简单地接受 SocketGuildUser 作为你的命令参数?
  • 你能显示你的 SocketGlobalUser 和 SocketGuildUser

标签: c# discord discord.net


【解决方案1】:

试试这个:

[Command("user")]
public async Task Info(IGuildUser user)
{
   string a = "";

   foreach (IRole role in user.Roles)
   {
      a += role.Mention + " ";
   }
}

这是获取公会用户的一种更简单的方法,并且还可以防止您在获取角色时遇到问题。您的问题是您正在获得一个全球 Discord 用户,并试图转换为公会用户。另一种选择是Context.Guild.GetUserAsync(userId),而不是Context.Client.GetUser(id);

【讨论】:

    猜你喜欢
    • 2021-03-16
    • 2014-08-31
    • 2019-05-31
    • 2021-12-11
    • 2017-05-31
    • 2016-12-03
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    相关资源
    最近更新 更多