Discord.net 获取用户的角色列表

Discord.net get the list of roles for a user

我正在尝试通过写入 (message.Author as SocketGuildUser).Roles 获取 MessageReceived 中用户的角色列表。但是,强制转换总是 returns null。我也尝试使用 Context.User 代替,但 returns 也为空。我在这里错过了什么?

这是我在转换行放置断点时遇到的异常:

System.InvalidCastException: Unable to cast object of type 'Discord.WebSocket.SocketGlobalUser' to type 'Discord.WebSocket.SocketGuildUser'

你可以这样做:

foreach(SocketRole role in ((SocketGuildUser)message.Author).Roles)
{
    Console.WriteLine(role.Name);
}

我很笨。当角色仅属于特定服务器时,我试图在 DM 上下文中获取角色列表。当 运行 在 non-DM 上下文中时,代码本身没问题。