c# - Discord.net 打印所有用户角色
问题描述
所以我一直在研究 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
andString.Join
来获取每个值:
String.Join( separator: ", ", values: U.Roles.Select( r => r.ToString() ) )
像这样:
$"\nRoles: { String.Join( separator: ", ", values: U.Roles.Select( r => r.ToString() ) ) }"
推荐阅读
- .net - 在不将证书安装到证书存储区的情况下执行 X509 证书吊销检查
- simulation - 如何在ARENA中找到实体进入传送带的具体时间?
- javascript - 如何使用回调函数
- architecture - 物联网项目架构
- python - python:导入不带分隔符的纯文本文件
- java - 有没有办法在不覆盖 toString 方法的情况下从 return 语句打印 toString?
- python - 使用 Python 规范化 JSON
- ruby - 导入数千条记录后无法推送到 Heroku
- android - Android APK 安装“包安装程序已停止”
- python - win32 excel复制除功能