public async Task RequestSpawnAsync() { if (Context.Message.Attachments.Count == 0) { await ReplyAsync("No items requested; silly goose. Attach an `nhi` file next time, or request specific items.").ConfigureAwait(false); return; } var att1 = Context.Message.Attachments.ElementAt(0); var fn = att1.Filename; if (!fn.EndsWith(".nhi")) { await ReplyAsync("I only accept `nhi` files.").ConfigureAwait(false); return; } var size = att1.Size; if (size % Item.SIZE != 0 || size == 0) { await ReplyAsync("That `nhi` does not appear to be a valid size.").ConfigureAwait(false); return; } var max = Globals.Bot.FieldItemState.Config.MaxSpawnCount * 10; if (size > Item.SIZE * max) { await ReplyAsync($"That `nhi` file is way too big. I only allow at most {max} items from an `nhi` file.").ConfigureAwait(false); return; } var data = await NetUtil.DownloadFromUrlAsync(att1.Url).ConfigureAwait(false); var items = Item.GetArray(data); await SpawnItems(items).ConfigureAwait(false); }
public static async Task <(DownloadResult Code, Item[] Items)> TryDownloadItems(Attachment att1, int maxCount) { return(await NetUtil.GetItemArrayFromLink(att1.Filename, att1.Size, att1.Url, maxCount).ConfigureAwait(false)); }