Похоже, что ответ, который я искал, состоял в том, что я могу получить доступ к сообщению пользователя и почти любой информации о нем, используя Context.Message
, особенно в классе, который наследуется от ModuleBase<SocketCommandContext>
.Таким образом, я могу использовать модуль 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);
}