首页 > 解决方案 > 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());
        }```

标签: c#discorddiscord.net

解决方案


“Discord.CollectionWrapper`1[Discord.WebSocket.SocketRole]”

这不是错误 - 这是默认ToString()实现的输出。很少有类实际上会覆盖Object.ToString().

使用 Linq 的.SelectandString.Join来获取每个值:

String.Join( separator: ", ", values: U.Roles.Select( r => r.ToString() ) )

像这样:

$"\nRoles: { String.Join( separator: ", ", values: U.Roles.Select( r => r.ToString() ) ) }"


推荐阅读