Discord.Net - C# 下载附件

Discord.Net - C# Downloading An Attachment

所以基本上,我有这段代码,我的机器人下载随命令发送的 URL。

    [Command("jpg")]
    private async Task Jpg([Remainder] string text)
    {
        string filetype = Path.GetExtension(text);
        if (!text.StartsWith("http") || !text.StartsWith("https"))
        {
            return;
        }
        using (var client = new WebClient())
        {
            client.DownloadFileAsync(new Uri(text), "img\a" + filetype);
        }
/* Image stuff etc */
    }

我想让它从邮件中获取图像附件而不是依赖 URL,但尝试使用 Context.Message.Attachments 时出现错误。

Context.Message.Attachments 是附件的集合,您可以获取每个附件的 URL(这些在上传图片的 discord 服务器上)并使用此 URL 而不是基于消息的一个。

您可以遍历附件或只获取第一个附件的 URL。

抓取第一个附件URL(考虑到它有附件):

string URL = Context.Message.Attachments.ElementAt(0).Url;

正在循环获取 URL 的完整列表:

string[] urlArray = {};
foreach(IAttachment attachment in Context.Message.Attachments){
    urlArray.Append(attachment.Url);
}
// Handle the URLs as you did before.

或者您可以通过在 foreach 中下载它们的方式实现循环(使用您的 DownloadFileAsync,因为我认为它对您有用 - 如果不考虑我之前对此消息的编辑)

using (var client = new WebClient()) {
  foreach(IAttachment attachment in Context.Message.Attachments){
    string filetype = Path.GetExtension(attachment.Url);
    client.DownloadFileAsync(new Uri(attachment.Url), "img\a" + filetype);
  }
}