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’。
我希望我的机器人从给定的 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’。