将字段添加到 c# 嵌入式不和谐消息

Posted

技术标签:

【中文标题】将字段添加到 c# 嵌入式不和谐消息【英文标题】:Add a field to a c# embedded discord message 【发布时间】:2020-04-12 05:36:50 【问题描述】:

在我的 Wpf C# 文档中,我需要找到一种将嵌入消息发送到 webhook 的方法,我在互联网上找到了一些示例并将它们放入我的文件中。尽管如此,我仍然找不到如何在嵌入消息中添加字段,这里是代码:

public class Json

    // 'Username' value
    [JsonProperty("username")]
    public string username  get; set; 
    // 'Avatar' value
    [JsonProperty("avatar_url")]
    // 'Content' value --> Always empty because we are using embed
    public string avatarurl  get; set; 
    [JsonProperty("content")]
    public string content  get; set; 
    // 'Embed' array value
    [JsonProperty("embeds")]
    public List<Embed> embeds  get; set; 


/*
   Json class to compile the single embed
   Action: n/a
*/
public class Embed

    [JsonProperty("author")]
    public Author author  get; set; 
    [JsonProperty("title")]
    public string title  get; set; 
    [JsonProperty("url")]
    public string url  get; set; 
    [JsonProperty("description")]
    public string description  get; set; 
    [JsonProperty("color")]
    public int color  get; set; 
    [JsonProperty("fields")]
    public List<Fields> fields  get; set; 
    [JsonProperty("thumbnail")]
    public Thumbnail thumbnail  get; set; 
    [JsonProperty("image")]
    public Image image  get; set; 
    [JsonProperty("footer")]
    public Footer footer  get; set; 



/*
   Json class to compile the author in an embed
   Action: n/a
*/
public class Author

    [JsonProperty("name")]
    public string name  get; set; 
    [JsonProperty("url")]
    public string url  get; set; 
    [JsonProperty("icon_url")]
    public string iconurl  get; set; 



/*
   Json class to compile the fields in an embed
   Action: n/a
*/


/*
   Json class to compile the thumbnail in an embed
   Action: n/a
*/
public class Thumbnail

    [JsonProperty("url")]
    public string url  get; set; 


/*
   Json class to compile the image in an embed
   Action: n/a
*/
public class Image

    [JsonProperty("url")]
    public string url  get; set; 


/*
   Json class to compile the footer in an embed
   Action: n/a
*/
public class Footer

    [JsonProperty("text")]
    public string text  get; set; 
    [JsonProperty("icon_url")]
    public string iconurl  get; set; 


/*
   Json class to compile the config
   Action: CONFIG
*/
public class Config

    [JsonProperty("webhook_url")]
    public string webhook  get; set; 
    [JsonProperty("json")]
    public Json json  get; set; 

public class Fields


然后,在 EmbedBuilder.cs 类中,我有:

public class EmbedBuilder

    /*
        Builds the JSON according to the local values
        Action: COMPILE/EXECUTE
    */
    public static void buildEmbed()
    
        Json json = new Json()
        
            embeds = new List<Embed>()
            
                new Embed
                
                    author = new Author
                    
                        name = "",
                        iconurl = "",
                    ,
                    title = "",
                    url = "",
                    color = 14957895,
                    description = "",
                    thumbnail = new Thumbnail
                    
                        url = "",
                    ,
                    image = new Image
                    
                        url = ""
                    ,
                    footer = new Footer
                    
                        text = "",
                        iconurl = "",
                    
                
            

        ;
        // Call the HTTP client and execute request
        HTTP.MakeRequest(Properties.Settings.Default.discordhook, Newtonsoft.Json.JsonConvert.SerializeObject(json));

    

    /*
        Compiles the local values into the format provided in Json.cs. Must have run the webhook once (soon will be dynamic)
        Action: COMPILE/SAVE
    */
    public static string saveEmbed()
    
        // Make a new config
        Config json = new Config()
        
            webhook = Properties.Settings.Default.discordhook,
            json = new Json
            
                embeds = new List<Embed>()
                
                    new Embed
                    
                        author = new Author
                        
                            name = "",
                            iconurl = "",
                        ,
                        title = "",
                        url = "",
                        color = ,
                        description = "",
                        thumbnail = new Thumbnail
                        
                            url = "",
                        ,
                        image = new Image
                        
                            url = ""
                        ,
                        footer = new Footer
                        
                            text = "",
                            iconurl = "",
                        
                    
                
            
        ;
        // Return a serialized value
        return JsonConvert.SerializeObject(json);

    

我怎样才能在我的消息中添加一个不和谐的嵌入字段,这是一张图片:

这只是我在互联网上找到的一个示例,我并不是专门寻找如何完全创建相同的东西,只是关于如何添加字段。

【问题讨论】:

【参考方案1】:

在对 discord 开发者门户网站进行了一些关于嵌入的研究 (https://birdie0.github.io/discord-webhooks-guide/structure/embed/fields.html) 之后,我设法做到了。主要问题是我没有将它设置为数组,这是正确的代码:

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WpfApp1


/*
   Json class to compile the full embed
   Action: n/a
*/
public class Json

    // 'Username' value
    [JsonProperty("username")]
    public string username  get; set; 
    // 'Avatar' value
    [JsonProperty("avatar_url")]
    // 'Content' value --> Always empty because we are using embed
    public string avatarurl  get; set; 
    [JsonProperty("content")]
    public string content  get; set; 
    // 'Embed' array value
    [JsonProperty("embeds")]
    public List<Embed> embeds  get; set; 


/*
   Json class to compile the single embed
   Action: n/a
*/
public class Embed

    [JsonProperty("author")]
    public Author author  get; set; 
    [JsonProperty("title")]
    public string title  get; set; 
    [JsonProperty("url")]
    public string url  get; set; 
    [JsonProperty("description")]
    public string description  get; set; 
    [JsonProperty("color")]
    public int color  get; set; 
    [JsonProperty("fields")]
    public List<Field> fields  get; set; 
    [JsonProperty("thumbnail")]
    public Thumbnail thumbnail  get; set; 
    [JsonProperty("image")]
    public Image image  get; set; 
    [JsonProperty("footer")]
    public Footer footer  get; set; 



/*
   Json class to compile the author in an embed
   Action: n/a
*/
public class Author

    [JsonProperty("name")]
    public string name  get; set; 
    [JsonProperty("url")]
    public string url  get; set; 
    [JsonProperty("icon_url")]
    public string iconurl  get; set; 



/*
   Json class to compile the fields in an embed
   Action: n/a
*/


/*
   Json class to compile the thumbnail in an embed
   Action: n/a
*/
public class Thumbnail

    [JsonProperty("url")]
    public string url  get; set; 


/*
   Json class to compile the image in an embed
   Action: n/a
*/
public class Image

    [JsonProperty("url")]
    public string url  get; set; 


/*
   Json class to compile the footer in an embed
   Action: n/a
*/
public class Footer

    [JsonProperty("text")]
    public string text  get; set; 
    [JsonProperty("icon_url")]
    public string iconurl  get; set; 


/*
   Json class to compile the config
   Action: CONFIG
*/
public class Config

    [JsonProperty("webhook_url")]
    public string webhook  get; set; 
    [JsonProperty("json")]
    public Json json  get; set; 

public class Field

    [JsonProperty("name")]
    public string name  get; set; 

    [JsonProperty("value")]
    public string value  get; set; 

    [JsonProperty("inline")]
    public bool inline  get; set; 


【讨论】:

以上是关于将字段添加到 c# 嵌入式不和谐消息的主要内容,如果未能解决你的问题,请参考以下文章

如何将许多不和谐嵌入附加到一条消息中?

如何让我的不和谐机器人检测嵌入的字段、标题字段和字段描述?

(discord.py) 向不和谐机器人发布的嵌入添加反应

嵌入消息(不和谐)

Discord.py 如何从不和谐消息中读取 int 并将其作为变量发送到嵌入中

不和谐.py |使用嵌入时,如何使用 for 循环生成变量的字段值?