如何垂直格式化嵌入字段

How to vertically format embedded fields

Current Formatting For Embed Fields

这是我目前用于半 public 方舟服务器的嵌入。
第一个字段是地图名称,
第二个字段是直接连接 IP 地址,
第三个字段是 if/where 该地图上有一个社区基地。
如您所见,它按预期工作,但如果字段中的一行中有太多信息,则格式会搞砸。有办法解决这个问题吗?
我正在使用 3 个独立的流构建器来构建不同的字段,然后将它们添加到嵌入中。如果需要代码,我可以 post 一个“精简版”,这样它就不会占用整个页面。

        var linkHeading = "steam://connect/";
        var sb = new StringBuilder();
        var sb2 = new StringBuilder();
        var sb3 = new StringBuilder();
        var embed = new EmbedBuilder();
        embed.WithColor(new Color(0, 255, 0));
        embed.Title = "List of Server Ips";
        JObject o1;
        using (StreamReader file = File.OpenText("serverips.json"))
        using (JsonTextReader reader = new JsonTextReader(file))
        {
            o1 = (JObject)JToken.ReadFrom(reader);
        }

        var ipsObject = JsonConvert.DeserializeObject<Rootobject>(o1.ToString());

        sb.AppendLine("The Island: ");
        sb2.AppendLine($"{linkHeading}{ipsObject.TheIsland.ip}:{ipsObject.TheIsland.port}/");
        if(ipsObject.TheIsland.comm != "")
        {
            sb3.AppendLine($"Comm: {ipsObject.TheIsland.comm}");
        } else { sb3.AppendLine($"No Comm Info Available"); };
        sb.AppendLine("Aberration: ");
        sb2.AppendLine($"{linkHeading}{ipsObject.Aberration.ip}:{ipsObject.Aberration.port}/");
        if (ipsObject.Aberration.comm != "")
        {
            sb3.AppendLine($"Comm: {ipsObject.Aberration.comm}");
        } else { sb3.AppendLine($"No Comm Info Available"); };
        embed.WithDescription($"Cluster Ip and Comm Information");
        embed.AddField(x =>
        {
            x.Name = "Map";
            x.Value = sb.ToString();
            x.IsInline = true;
        });
        embed.AddField(x =>
        {
            x.Name = "IP";
            x.Value = sb2.ToString();
            x.IsInline = true;
        });
        embed.AddField(x =>
        {
            x.Name = "Comm?";
            x.Value = sb3.ToString();
            x.IsInline = true;
        });

        await Context.User.SendMessageAsync(null, false, embed.Build());
        await ReplyAsync("Server Ip List was sent directly to your inbox! :)");

您无法控制嵌入字段的显示方式。关于字段,您唯一可以控制的是它们是否 inline 。渲染完全取决于 Discord 和最终用户的屏幕尺寸。例如,您当前在移动设备上的输出将忽略 inline 设置并将字段逐个列出,而不是并排列出。

除非您的字段始终包含少量文本,否则您无法保证最终用户将如何看到输出。如果您需要在所有设备上保证某种一致的结构化显示,最好的办法是使用图片。