首页 > 解决方案 > C# foreach 列表元素在列表中添加一个 AddField

问题描述

我正在尝试创建一个使用 discord.net 包发送嵌入消息的不和谐机器人。

这个 discord 包带来了一个名为 EmbedBuilder 的创建嵌入的功能,可以在这里看到:https ://docs.stillu.cc/api/Discord.EmbedBuilder.html

以下功能效果很好。代码如下所示:

public async Task ExampleAsync()
{
    var embedElement = new EmbedBuilder()
        .WithTitle("Example Name")
        .AddField("Working", "Example")
        .Build();

    var chnl = BotClient.GetChannel(123) as IMessageChannel;
    await chnl.SendMessageAsync(embed: embedElement);
}

但是,假设我有一个包含用户的列表,我想为列表中AddField("Working", "Example")的每个用户添加一个,我该怎么做?

因为像下面这样的事情显然不起作用,我找不到任何关于此的信息。

public List<UserObject> Users;

public async Task ExampleAsync()
{
    var embedElement = new EmbedBuilder()
        .WithTitle("Example Name")
        foreach(UserObject user in Users) 
        {
            .AddField("Working", "Example")
        }
        .Build();

    var chnl = BotClient.GetChannel(123) as IMessageChannel;
    await chnl.SendMessageAsync(embed: embedElement);
}

我将不胜感激任何帮助和建议。

标签: c#foreachembeddiscord.net

解决方案


尝试这个:

public List<UserObject> Users;

public async Task ExampleAsync()
{
    var embedElement = new EmbedBuilder().WithTitle("Example Name");
    foreach(UserObject user in Users) 
    {
        embedElement.AddField("Working", "Example");
    }
    embedElement.Build();

    var chnl = BotClient.GetChannel(123) as IMessageChannel;
    await chnl.SendMessageAsync(embed: embedElement);
}

推荐阅读