Пример #1
0
        public async Task Close([Remainder] DateTime closeDate)
        {
            if (closeDate.IsInPast())
            {
                await ReplyAsync(":warning: Podana data jest w przeszłości!");
            }
            else if (closeDate.IsNoLaterThanDays(1))
            {
                await ReplyAsync(":warning: Podana data jest za mniej niż 24 godziny!");
            }

            var mission = SignupsData.GetCurrentlyEditedMission(Context.User.Id);

            if (mission is null)
            {
                await ReplyAsync(":warning: Nie tworzysz ani nie edytujesz teraz żadnej misji.");

                return;
            }

            if (closeDate < mission.Date)
            {
                mission.CloseTime   = closeDate;
                mission.CustomClose = true;
                await ReplyAsync($"Data zamknięcia zapisów ustawiona na {closeDate}, za {closeDate.FromNow()}!");
            }
            else
            {
                await ReplyAsync(":warning: Zamknięcie zapisów musi być przed datą misji!");
            }
        }
Пример #2
0
        public async Task Date([Remainder] DateTime date)
        {
            if (date.IsInPast())
            {
                await ReplyAsync(":warning: Podana data jest w przeszłości!");
            }
            else if (date.IsNoLaterThanDays(1))
            {
                await ReplyAsync(":warning: Podana data jest za mniej niż 24 godziny!");
            }

            var mission = SignupsData.GetCurrentlyEditedMission(Context.User.Id);

            if (mission is null)
            {
                await ReplyAsync(":warning: Nie tworzysz ani nie edytujesz teraz żadnej misji.");

                return;
            }

            mission.Date = date;
            if (!mission.CustomClose)
            {
                mission.CloseTime = date.AddMinutes(-60);
            }

            await ReplyAsync($"Data misji ustawiona na {date}, za {date.FromNow()}.");
        }
Пример #3
0
        public async Task StartSignups([Remainder] string title)
        {
            var signups = _map.GetService <SignupsData>();

            if (SignupsData.GetCurrentlyEditedMission(Context.User.Id) != null)
            {
                await ReplyAsync("O ty luju, najpierw dokończ definiowanie poprzednich zapisów!");
            }
            else
            {
                if (_client.GetGuild(_config.AFGuild).GetUser(Context.User.Id).Roles.Any(x => x.Id == _config.MissionMakerRole))
                {
                    var mission = new Mission();

                    mission.Title   = title;
                    mission.Owner   = Context.User.Id;
                    mission.Date    = DateTime.Now;
                    mission.Editing = Mission.EditEnum.New;

                    SignupsData.Missions.Add(mission);

                    await ReplyAsync("Zdefiniuj reszte misji.");
                }
                else
                {
                    await ReplyAsync("Luju ty, nie jestes uprawniony do tworzenia misji!");
                }
            }
        }
Пример #4
0
        public async Task EditMission(IGuildChannel channel)
        {
            var currentlyEditedMission = SignupsData.GetCurrentlyEditedMission(Context.User.Id);

            if (currentlyEditedMission == null)
            {
                var missionToBeEdited = SignupsData.Missions.FirstOrDefault(x => x.SignupChannel == channel.Id);
                if (missionToBeEdited == null)
                {
                    await ReplyAsync("Nie ma misji o takiej nazwie.");

                    return;
                }

                if (missionToBeEdited.Owner != Context.User.Id)
                {
                    await ReplyAsync("Nie nauczyli żeby nie ruszać nie swojego?");

                    return;
                }

                var serialized = JsonConvert.SerializeObject(missionToBeEdited);
                SignupsData.BeforeEditMissions[Context.User.Id] = JsonConvert.DeserializeObject <ArmaforcesMissionBotSharedClasses.Mission>(serialized);
                missionToBeEdited.Editing = ArmaforcesMissionBotSharedClasses.Mission.EditEnum.Started;
                await ReplyAsync($"A więc `{missionToBeEdited.Title}`. Co chcesz zmienić?");
            }
            else
            {
                await ReplyAsync($"Hola hola, nie wszystko naraz. Skończ edytować `{currentlyEditedMission.Title}`.");
            }
        }
Пример #5
0
        public async Task EditMission(int missionNo)
        {
            var currentlyEditedMission = SignupsData.GetCurrentlyEditedMission(Context.User.Id);

            if (currentlyEditedMission == null)
            {
                var userMissions      = SignupsData.Missions.Where(x => x.Owner == Context.User.Id);
                var missionToBeEdited = userMissions.ElementAt(missionNo);

                // Don't want to write another function just to copy class, and performance isn't a problem here so just serialize it and deserialize
                var serialized = JsonConvert.SerializeObject(missionToBeEdited);
                SignupsData.BeforeEditMissions[Context.User.Id] = JsonConvert.DeserializeObject <ArmaforcesMissionBotSharedClasses.Mission>(serialized);
                missionToBeEdited.Editing = ArmaforcesMissionBotSharedClasses.Mission.EditEnum.Started;
                await ReplyAsync($"A więc `{missionToBeEdited.Title}`. Co chcesz zmienić?");
            }
            else
            {
                await ReplyAsync($"Hola hola, nie wszystko naraz. Skończ edytować `{currentlyEditedMission.Title}`.");
            }
        }
Пример #6
0
        public async Task Description([Remainder] string description)
        {
            var mission = SignupsData.GetCurrentlyEditedMission(Context.User.Id);

            if (mission != null)
            {
                mission.Description = description;

                if (Context.Message.Attachments.Count > 0)
                {
                    mission.Attachment = Context.Message.Attachments.ElementAt(0).Url;
                }

                await ReplyAsync("Teraz podaj nazwe modlisty.");
            }
            else
            {
                await ReplyAsync("Najpierw zdefiniuj nazwę misji cymbale.");
            }
        }
Пример #7
0
        public async Task ToggleMentionEveryone()
        {
            var mission = SignupsData.GetCurrentlyEditedMission(Context.User.Id);

            if (mission is null)
            {
                await ReplyAsync(":warning: Nie tworzysz ani nie edytujesz teraz żadnej misji.");

                return;
            }

            mission.MentionEveryone = !mission.MentionEveryone;
            if (mission.MentionEveryone)
            {
                await ReplyAsync("Wołanie wszystkich zostało włączone.");
            }
            else
            {
                await ReplyAsync("Wołanie wszystkich zostało wyłączone.");
            }
        }
Пример #8
0
        public async Task Modlist([Remainder] string modsetNameOrUrl)
        {
            var mission = SignupsData.GetCurrentlyEditedMission(Context.User.Id);

            if (mission != null)
            {
                var modsetName = ModsetProvider.GetModsetNameFromUrl(modsetNameOrUrl);
                await ModsetProvider.GetModsetDownloadUrl(modsetName).Match(
                    onSuccess: url =>
                {
                    mission.ModlistUrl  = mission.Modlist = url.Replace(" ", "%20");
                    mission.ModlistName = modsetName;
                    return(ReplyAsync($"Modset {modsetName} was found under {mission.ModlistUrl}."));
                },
                    onFailure: error => ReplyAsync(error));
            }
            else
            {
                await ReplyAsync("Najpierw zdefiniuj nazwę misji cymbale.");
            }
        }