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);
        }
示例#2
0
 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));
 }