Discord.net 打印所有用户角色
Discord.net print all user roles
所以我一直在研究 Discord 机器人,并试图打印用户拥有的每个角色。我不断收到 "Discord.CollectionWrapper`1[Discord.WebSocket.SocketRole]" 错误并且似乎无法修复它。有没有办法让它显示所有用户角色?
{
if (!Context.Message.MentionedUsers.Any())
{
await Context.Channel.SendMessageAsync("Can't give you any information if you don't specify a member");
}
var user = Context.Message.MentionedUsers.First();
SocketGuildUser U = (SocketGuildUser)Context.Message.MentionedUsers.First();
var GuildUser = Context.Guild.GetUser(Context.User.Id);
var typingChannel = Context.Channel;
await typingChannel.TriggerTypingAsync();
EmbedBuilder eb = new EmbedBuilder()
{
Title = "Hello world!",
Description = "I am a description set by initializer.",
};
eb.AddField("ID:", $"{user.Id}")
.WithAuthor(Context.Client.CurrentUser)
.WithColor(Color.DarkPurple)
.WithTitle($"***{user.Username}***")
.WithDescription($"{user.Username}#{user.Discriminator} \n status: {user.Status}\n Account created at date: {user.CreatedAt}\nJoined at: {U.JoinedAt}" +
$"\nRoles: {U.Roles.ToString()}\n Permissions: {U.GuildPermissions}\n")
.WithCurrentTimestamp()
.Build();
await Context.Channel.SendMessageAsync("", false, eb.Build());
}```
"Discord.CollectionWrapper`1[Discord.WebSocket.SocketRole]"
这不是错误 - 这是默认 ToString()
实现的输出。很少 类 实际上覆盖 Object.ToString()
.
改为使用 Linq 的 .Select
和 String.Join
获取每个值:
String.Join( separator: ", ", values: U.Roles.Select( r => r.ToString() ) )
像这样:
$"\nRoles: { String.Join( separator: ", ", values: U.Roles.Select( r => r.ToString() ) ) }"
所以我一直在研究 Discord 机器人,并试图打印用户拥有的每个角色。我不断收到 "Discord.CollectionWrapper`1[Discord.WebSocket.SocketRole]" 错误并且似乎无法修复它。有没有办法让它显示所有用户角色?
{
if (!Context.Message.MentionedUsers.Any())
{
await Context.Channel.SendMessageAsync("Can't give you any information if you don't specify a member");
}
var user = Context.Message.MentionedUsers.First();
SocketGuildUser U = (SocketGuildUser)Context.Message.MentionedUsers.First();
var GuildUser = Context.Guild.GetUser(Context.User.Id);
var typingChannel = Context.Channel;
await typingChannel.TriggerTypingAsync();
EmbedBuilder eb = new EmbedBuilder()
{
Title = "Hello world!",
Description = "I am a description set by initializer.",
};
eb.AddField("ID:", $"{user.Id}")
.WithAuthor(Context.Client.CurrentUser)
.WithColor(Color.DarkPurple)
.WithTitle($"***{user.Username}***")
.WithDescription($"{user.Username}#{user.Discriminator} \n status: {user.Status}\n Account created at date: {user.CreatedAt}\nJoined at: {U.JoinedAt}" +
$"\nRoles: {U.Roles.ToString()}\n Permissions: {U.GuildPermissions}\n")
.WithCurrentTimestamp()
.Build();
await Context.Channel.SendMessageAsync("", false, eb.Build());
}```
"Discord.CollectionWrapper`1[Discord.WebSocket.SocketRole]"
这不是错误 - 这是默认 ToString()
实现的输出。很少 类 实际上覆盖 Object.ToString()
.
改为使用 Linq 的 .Select
和 String.Join
获取每个值:
String.Join( separator: ", ", values: U.Roles.Select( r => r.ToString() ) )
像这样:
$"\nRoles: { String.Join( separator: ", ", values: U.Roles.Select( r => r.ToString() ) ) }"