Как отправить прикрепленный файл со вставкой Discord. net webhook c# - PullRequest
2 голосов
/ 21 июня 2020

Я пробовал все решения по добавлению встраивания на веб-крючок, но в моем случае ни одно из них не работает, или мне что-то не хватает?

вот часть моего кода

var DCW = new DiscordWebhookClient(DCWebhook)

using (var client = DCW)
{
    var eb = new EmbedBuilder();
        eb.WithDescription("some text")
      .Build();

    await client.SendFileAsync(filePath: "file.txt", text: null, embeds: eb);
}

этот код показывает ошибку

не удается преобразовать из Discord.Embed в System.Collections.Generi c .IEnumerable

Я попробовал этот код и исправил ошибку

await client.SendFileAsync(filePath: "file.txt", text: null, embeds: (IEnumerable<Embed>)eb);

Я создал и запустил файл .exe, и на консоли произошла ошибка

Необработанное исключение: System.InvalidCastException: невозможно привести объект типа Discord.EmbedBuilder к типу System.Collections.Generi c .IEnumerable 1 [Discord.Embed].

ссылки: Отправить вставку Discord через Webhook C#

Discord. net Встроенное сообщение бота

ModifyAsyn c Не работает

https://discord.foxbot.me/docs/api/Discord.EmbedBuilder.html

Я знаю, что большинство вышеперечисленных решений работают, но не в моем случае. Я был бы очень признателен за примеры того, как это решить. спасибо!

1 Ответ

2 голосов
/ 21 июня 2020

Итак, из того, что я вижу, вы пытаетесь передать IEnumerable<Embed> в SendFileAsync. Дело в том, что вы не можете преобразовать EmbedBuilder в IEnumerable<Embed>. Вам нужно передать ему IEnumerable<Embed>, которое вы можете получить с чем-то вроде массива (Embed[]).

// This creates the Embed builder
var eb = new EmbedBuilder();
    eb.AddField("RandomField", "Hello, my name is random Field"); 

// Here you make an array with 1 entry, which is the embed ( from EmbedBuilder.Build() )
Embed[] embedArray = new Embed[] { eb.Build() };

// Now you pass it into the method like this: 'embeds: embedArray'
await DCW.SendFileAsync(filePath: "C:\RandomFile.txt", text: "Embed", embeds: embedArray);
...