Exemplo n.º 1
0
        public async Task map(params string[] mapName)
        {
            p.doAction(Context.User, Context.Guild.Id, Program.Module.Kancolle);
            if (mapName.Length != 2 || mapName[0].Length != 1 || mapName[1].Length != 1 ||
                mapName[0][0] <= '0' || mapName[0][0] > '6' || mapName[1][0] <= '0' || mapName[1][0] > '6' ||
                (mapName[0][0] != '1' && mapName[1][0] == '6'))
            {
                await ReplyAsync(Sentences.mapHelp(Context.Guild.Id));

                return;
            }
            using (WebClient wc = new WebClient())
            {
                string url  = "http://kancolle.wikia.com/wiki/World_" + mapName[0][0] + "/" + mapName[0][0] + "-" + mapName[1][0];
                string html = wc.DownloadString(url);
                wc.Encoding = Encoding.UTF8;
                string htmlRaw = wc.DownloadString(url + "?action=raw");
                html = html.Split(new string[] { "typography-xl-optout" }, StringSplitOptions.None)[1];
                string[] allLinks    = html.Split(new string[] { "href=" }, StringSplitOptions.None);
                int      currentTime = Convert.ToInt32(DateTime.Now.ToString("HHmmss"));
                wc.DownloadFile(Program.getElementXml("\"", allLinks[1], '"'), "kancolleMap" + currentTime + "1.png");
                wc.DownloadFile(Program.getElementXml("\"", allLinks[2], '"'), "kancolleMap" + currentTime + "2.png");
                await ReplyAsync(Program.getElementXml("|en = ", htmlRaw, '\n'));

                await Context.Channel.SendFileAsync("kancolleMap" + currentTime + "1.png");

                await Context.Channel.SendFileAsync("kancolleMap" + currentTime + "2.png");

                File.Delete("kancolleMap" + currentTime + "1.png");
                File.Delete("kancolleMap" + currentTime + "2.png");
                string branchingRules;
                if (htmlRaw.Contains("{{MapBranchingTable"))
                {
                    branchingRules = htmlRaw.Split(new string[] { "{{MapBranchingTable" }, StringSplitOptions.None)[1];
                }
                else
                {
                    branchingRules = htmlRaw.Split(new string[] { "{{Map/Branching" }, StringSplitOptions.None)[1];
                }
                string[] allBranches = branchingRules.Split(new string[] { "}}" }, StringSplitOptions.None)[0].Split('\n');
                string   finalStr    = "";
                foreach (string currBranch in allBranches)
                {
                    if (currBranch.Length == 0 || currBranch.StartsWith("|title") || currBranch.StartsWith("|id"))
                    {
                        continue;
                    }
                    string line = currBranch.Substring(1, currBranch.Length - 1);
                    finalStr += line + Environment.NewLine;
                }
                await ReplyAsync(finalStr);
            }
        }