因此,基本上,我有这样的代码,我的机器人程序可以下载与命令一起发送的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。
抓取第一个附件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);
}
}