Discord 机器人不发送图像

Discord bot doesn't send an image

我希望我的机器人从给定的 url 发送一张图片,其中的标题来自 String(),但是使用 SendFileAsync() 它完全不起作用。是否有其他方法可以从互联网发送图像,或者我只是在这里搞砸了一些东西?

public class Task : ModuleBase
        {
            public Task()
            {
                Thread.Sleep(6000);
                IReadOnlyCollection<SocketGuild> guilds = CommandHandler._discord.Guilds;
                foreach (var guild in guilds)
                {
                    JobManager.AddJob(() => CommandHandler._discord.GetGuild(guild.Id).DefaultChannel.SendFileAsync("HERE_GOES_URL", String()), (s) => s.ToRunEvery(5).Seconds());
                }
            }
        }
        static void Initializer()
        {
            JobManager.Initialize(new MyRegistry());
        }

要使用 SendFileAsync,您需要在本地拥有该文件。 如果要发送 URL 而不下载,只需使用 SendMessageAsync。 Discord 将从 URL 预览图像(除非用户手动禁用它)。

否则,这会有所帮助:

using System.Net;
using System.IO;
...
byte[] buffer = (new WebClient().DownloadData("myurl"));
using (MemoryStream ms = new MemoryStream(buffer))
{
   await SendFileAsync(ms, ...);
}

我建议将其包装到一个函数中。

如果您仍然确信不处理下载,请查看 EmbedBuilder

与您的问题无关的注释

  • 您不应该循环向公会发送消息,这肯定会给您带来问题,例如速率限制。
  • 您应该等待异步函数。有关详细信息,请参阅 How and when to use ‘async’ and ‘await’