如何在 C# Discord.net 中读取发布的文件?
How to read a posted file in C# Discord.net?
我想让我的 discord.net
机器人读取聊天中发布的文件。到目前为止,我似乎无法在 C# 中找到这个问题的答案。
有办法吗?
我正在寻找的答案似乎是这样一个事实,即我可以使用 Context.Message
访问用户的消息以及几乎所有关于它的详细信息,尤其是在继承自 [=] 的 class 中12=]。像这样,我可以使用 System.Net
模块从 URL 下载附件的内容,然后用它做任何我想做的事。
这是实现上述内容的示例命令。旁注:为简单起见,它没有实施任何安全措施。
[Command("printFile")]
public async Task PrintFile()
{
var attachments = Context.Message.Attachments;
// Create a new WebClient instance.
WebClient myWebClient = new WebClient();
string file = attachments.ElementAt(0).Filename;
string url = attachments.ElementAt(0).Url;
// Download the resource and load the bytes into a buffer.
byte[] buffer = myWebClient.DownloadData(url);
// Encode the buffer into UTF-8
string download = Encoding.UTF8.GetString(buffer);
Console.WriteLine("Download successful.");
// Place the contents as a message because the method said it should.
await ReplyAsync("Received attachment!\n\n" + download);
}
考虑到 discord bot API 的异步特性及其对任务的广泛使用,我建议您改用 HttpClient 并异步执行操作...
public class DebugModule : ModuleBase<SocketCommandContext>
{
[Command("read")]
[Summary("Reads the contents of a dropped file.")]
public async Task Read() {
using(var client = new HttpClient())
await ReplyAsync(await client.GetStringAsync(Context.Message.Attachments.First().Url));
}
}
因为我像许多其他人一样配置了我的机器人!作为前缀,这里的用法很简单...
将文件拖放到频道
输入评论为“!阅读”
这指示机器人以异步方式回复上传文件的内容。
我想让我的 discord.net
机器人读取聊天中发布的文件。到目前为止,我似乎无法在 C# 中找到这个问题的答案。
有办法吗?
我正在寻找的答案似乎是这样一个事实,即我可以使用 Context.Message
访问用户的消息以及几乎所有关于它的详细信息,尤其是在继承自 [=] 的 class 中12=]。像这样,我可以使用 System.Net
模块从 URL 下载附件的内容,然后用它做任何我想做的事。
这是实现上述内容的示例命令。旁注:为简单起见,它没有实施任何安全措施。
[Command("printFile")]
public async Task PrintFile()
{
var attachments = Context.Message.Attachments;
// Create a new WebClient instance.
WebClient myWebClient = new WebClient();
string file = attachments.ElementAt(0).Filename;
string url = attachments.ElementAt(0).Url;
// Download the resource and load the bytes into a buffer.
byte[] buffer = myWebClient.DownloadData(url);
// Encode the buffer into UTF-8
string download = Encoding.UTF8.GetString(buffer);
Console.WriteLine("Download successful.");
// Place the contents as a message because the method said it should.
await ReplyAsync("Received attachment!\n\n" + download);
}
考虑到 discord bot API 的异步特性及其对任务的广泛使用,我建议您改用 HttpClient 并异步执行操作...
public class DebugModule : ModuleBase<SocketCommandContext>
{
[Command("read")]
[Summary("Reads the contents of a dropped file.")]
public async Task Read() {
using(var client = new HttpClient())
await ReplyAsync(await client.GetStringAsync(Context.Message.Attachments.First().Url));
}
}
因为我像许多其他人一样配置了我的机器人!作为前缀,这里的用法很简单...
将文件拖放到频道 输入评论为“!阅读” 这指示机器人以异步方式回复上传文件的内容。