コード例 #1
0
        public async Task AreaOption(string option, string areaname)
        {
            //サーバーID等の変数の宣言
            string serverfolder = $@"R:\Project\RUMM.warehouse\{Context.Guild.Id}";

            string datafolder      = $@"{serverfolder}\Data";
            string datafolder_area = $@"{datafolder}\Area";
            string area_datafolder = $@"{datafolder_area}\{areaname}";
            string area_text       = $@"{area_datafolder}\{areaname}.txt";

            string trimedfolder     = $@"{serverfolder}\Trimed";
            string trimedfolder_map = $@"{trimedfolder}\TrimedMap";

            string completedfolder          = $@"{serverfolder}\Completed";
            string areafolder               = $@"{completedfolder}\AreaMap\{areaname}";
            string areafolder_backup        = $@"{completedfolder}\AreaMap\{areaname}\{areaname}[Backup]";
            string area_completedmap        = $@"{areafolder}\{areaname}.png";
            string area_completedmap_backup = $@"{areafolder_backup}\{DateTime.Now.ToString("yyyyMMdd")}.png";

            switch (option)
            {
            case "add":
                if (!Directory.Exists(area_datafolder))
                {
                    Safe.CreateDirectory(area_datafolder);
                    Safe.CreateDirectory(areafolder);
                    Safe.CreateDirectory(areafolder_backup);

                    using (var file = File.Create(area_text))
                        file.Close();

                    await Context.Channel.SendSuccessAsync("完了", "エリアを追加したよ!");
                }
                else
                {
                    await Context.Channel.SendErrorAsync("エラー", "もうすでにこのエリアは追加されているよ!");
                }
                break;

            case "delete":
                if (File.Exists(area_text))
                {
                    var verification = await Context.Channel.SendVerifyAsync("確認", "本当にこのエリアの情報を削除しても大丈夫?`はい`か`いいえ`で答えてね!");

                    var answer = await NextMessageAsync();

                    switch (answer.Content)
                    {
                    case "はい":
                        await Context.Channel.DeleteMessageAsync(verification);

                        break;

                    case "いいえ":
                        await Context.Channel.DeleteMessageAsync(verification);

                        await Context.Channel.SendErrorAsync("エラー", "削除をやめたよ!本当に消したいときは`はい`を答えてね!");

                        return;

                    default:
                        await Context.Channel.DeleteMessageAsync(verification);

                        await Context.Channel.SendErrorAsync("エラー", "`はい`か`いいえ`で答えてね!");

                        return;
                    }

                    try
                    {
                        File.Delete(area_completedmap);
                        Directory.Delete(areafolder_backup);
                        Directory.Delete(areafolder);
                        File.Delete(area_text);
                    }
                    catch (Exception)
                    {
                    }

                    await Context.Channel.SendSuccessAsync("完了", $"{areaname}の情報を削除したよ!");
                }
                else
                {
                    await Context.Channel.SendErrorAsync("エラー", $"そんな名前のエリアはないよ...? \r\n `r.area add {areaname}`でエリアを追加してみよう!");
                }
                break;

            case "download":
                //特定のサーバーからこのコマンドが実行されないようにする
                if (Context.Guild.Id == 725704901652381718)
                {
                    await Context.Channel.SendErrorAsync("エラー", $"このコマンドは`{Context.Guild.Name}`では使えないよ!");

                    return;
                }

                if (File.Exists(area_text))
                {
                    Integrate.Original_Area(area_text, trimedfolder_map, area_completedmap);
                    Integrate.Original_Area(area_text, trimedfolder_map, area_completedmap_backup);

                    await Context.Channel.SendFileAsync(area_completedmap);

                    await Context.Channel.SendSuccessAsync("完了", $"これが{areaname}の地図だよ!");
                }
                else
                {
                    await Context.Channel.SendErrorAsync("エラー", $"そんな名前のエリアはないよ...? \r\n `r.area add {areaname}`でエリアを追加してみよ!");
                }
                break;

            //Realm3rd用引数
            case "rdownload":
                if (File.Exists(area_text))
                {
                    Integrate.Designed_Realm3rd_Area(area_text, trimedfolder_map, area_completedmap);
                    Integrate.Designed_Realm3rd_Area(area_text, trimedfolder_map, area_completedmap_backup);

                    await Context.Channel.SendFileAsync(area_completedmap);

                    await Context.Channel.SendSuccessAsync("完了", $"これが{areaname}の地図だよ!");
                }
                else
                {
                    await Context.Channel.SendErrorAsync("エラー", $"そんな名前のエリアはないよ...? \r\n `r.area add {areaname}`でエリアを追加してみよ!");
                }
                break;

            default:
                await Context.Channel.SendErrorAsync("エラー", "引数が間違ってるよ!`r.about area`で詳しい使い方を見てね!");

                return;
            }
        }