在我的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);
}
}
那只是我在互联网上找到的一个示例,我并不是专门在寻找如何精确地创建相同的东西,而只是在如何添加字段。
答案 0 :(得分:0)
在不和谐的开发人员门户网站上对嵌入(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; }
}
}