예제 #1
0
파일: Service.cs 프로젝트: PDFer/TGRaidBot
        public async Task ProcessCommand(ServiceChannel requestChannel, long userId, string command, params string[] parameters)
        {
            switch (command.ToLower())
            {
            case "start":
            case "help":

                await Send(requestChannel,
                           $@"Voit hallita haluamiasi hälytyksiä lähettällä yksityisviestillä minulle seuraavia komentoja: 
{Prefix}add Salin Nimi  - Lisää salin seurantaan.
{Prefix}remove Salin Nimi  - Poistaa salin seurannasta.
{Prefix}list  - Listaa seuratut salit.
{Prefix}set ProfiiliNimi aika - Asettaa profiilin, vapaaehtoiseen aikakentään voi määrittää kuinka monta {ServiceChannel.GetTimerUnit()} profiili pysyy päällä.
{Prefix}profiles - Listaa profiilit
{Prefix}save ProfiiliNimi - Tallentaa tämän hetkiset salit profiiliin
{Prefix}setdefault ProfiiliNimi - Asettaa halutun profiilin oletukseksi. Oletusprofiili ladataan aluksi ja kun asetetun profiilin aika umpeutuu.
{Prefix}removeprofile ProfiiliNimi - Poistaa profiilin.");

                break;

            case "list":

                if (requestChannel == null || !requestChannel.Gyms.Any())
                {
                    await Send(requestChannel, "Sinulla ei ole yhtään salia seurannassa.");
                }
                else
                {
                    string reply = requestChannel.Gyms.First();
                    foreach (var requestChannelGym in requestChannel.Gyms.Skip(1))
                    {
                        reply = $"{reply}, {requestChannelGym}";
                    }

                    await Send(requestChannel, reply);
                }
                break;

            case "add":
                if (parameters.Length != 1)
                {
                    break;
                }

                if (!Channels.Contains(requestChannel))
                {
                    requestChannel.Gyms.Add(parameters[0]);
                    Channels.Add(requestChannel);
                    await Send(requestChannel, $"{parameters[0]} lisätty.");

                    SaveGyms();
                }
                else
                {
                    if (requestChannel.Operators.Any() && !requestChannel.Operators.Contains(userId))
                    {
                        await Send(requestChannel, "Sinulla ei ole oikeuksia lisätä saleja.");

                        break;
                    }
                    if (!requestChannel.Gyms.Contains(parameters[0]))
                    {
                        requestChannel.Gyms.Add(parameters[0]);
                        await Send(requestChannel, $"{parameters[0]} lisätty.");

                        SaveGyms();
                    }
                }
                break;

            case "remove":

                if (requestChannel.Operators.Any() && !requestChannel.Operators.Contains(userId))
                {
                    await Send(requestChannel, "Sinulla ei ole oikeuksia poistaa saleja.");

                    break;
                }

                if (parameters.Length < 1)
                {
                    await Send(requestChannel, $"Anna poistettavan salin nimi komennon perään Esim. {Prefix}remove Esimerkkisali Numero 1");

                    break;
                }

                if (requestChannel.Gyms.Contains(parameters[0]))
                {
                    requestChannel.Gyms.Remove(parameters[0]);
                    SaveGyms();
                    await Send(requestChannel, $"Sali {parameters[0]} poistettu seurannasta.");
                }
                else
                {
                    await Send(requestChannel, $"Sinulla ei ole salia {parameters[0]} seurannassa. Tarkista kirjoititko salin nimen oikein.");

                    break;
                }
                break;

            case "set":
                if (parameters.Length < 1)
                {
                    await Send(requestChannel, $"Anna profiilin nimi. Esim: {Prefix}Set Työ");
                }
                var splitMessageText = parameters[0].Split(" ", 2);
                int duration         = 0;
                if (splitMessageText.Length > 1 && int.TryParse(splitMessageText[1], out duration))
                {
                }
                if (!requestChannel.SetProfile(splitMessageText[0], duration))
                {
                    await Send(requestChannel, $"Profiilia {splitMessageText[0]} ei löydy.");
                }
                else
                {
                    await Send(requestChannel, $"Profiili {splitMessageText[0]} asetettu aktiiviseksi.");

                    if (duration > 0)
                    {
                        await Send(requestChannel, $"Vakioprofiili asetetaan takaisin {duration} {ServiceChannel.GetTimerUnit()} päästä.");
                    }
                }

                break;

            case "profiles":
                if (!requestChannel.Profiles.Any())
                {
                    await Send(requestChannel, "Sinulla ei ole profiileja.");

                    break;
                }
                string profiilit = "";
                foreach (var profiili in requestChannel.Profiles)
                {
                    profiilit += $"{profiili.Name} ";
                }
                await Send(requestChannel, profiilit);

                break;

            case "save":
                if (parameters.Length < 1)
                {
                    await Send(requestChannel, $"Anna tallennettavan profiilin nimi. Esim: {Prefix}save Koti");

                    break;
                }
                if (parameters[0].Contains(" "))
                {
                    await Send(requestChannel, "Profiilin nimessä ei saa olla välilyöntejä.");

                    break;
                }
                requestChannel.SaveProfile(parameters[0]);
                SaveGyms();
                await Send(requestChannel, $"Profiili {parameters[0]} tallennettu");

                break;

            case "setdefault":
                if (parameters.Length < 1)
                {
                    await Send(requestChannel, $"Anna profiilin nimi. Esim: {Prefix}SetDefault Koti");
                }
                if (requestChannel.SetDefault(parameters[0]))
                {
                    await Send(requestChannel, $"Profiili {parameters[0]} asetettu oletukseksi.");
                }
                else
                {
                    await Send(requestChannel, $"Profiilia {parameters[0]} ei löytynyt. Tarkista kirjoititko nimen oikein.");
                }
                break;

            case "removeprofile":
                if (parameters.Length < 1)
                {
                    await Send(requestChannel, $"Anna profiilin nimi. Esim: {Prefix}removeprofile Koti");
                }
                if (requestChannel.RemoveProfile(parameters[0]))
                {
                    await Send(requestChannel, $"Profiili {parameters[0]} poistettu.");
                }
                else
                {
                    await Send(requestChannel, $"Profiilia {parameters[0]} ei löytynyt. Tarkista kirjoititko nimen oikein.");
                }
                break;

            case "addoperator":
                if (userId != Master)
                {
                    break;
                }

                if (parameters.Length < 1)
                {
                    await Send(requestChannel, $"Anna käyttäjän nimi");
                }

                break;
            }
        }