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);
}
}
所以基本上,我有这段代码,我的机器人下载随命令发送的 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);
}
}