Esempio n. 1
0
        public async Task CancelReminderAsync(string reminderId)
        {
            var reminders = ReminderService.GetRemindersForUser(Context.User.Id)
                            .Where(reminder =>
                                   reminder.UserId == Context.Member.Id.RawValue &&
                                   Context.Guild.Channels.ContainsKey(reminder.ChannelId) &&
                                   reminder.Id.StartsWith(reminderId, StringComparison.CurrentCultureIgnoreCase)
                                   )
                            .OrderBy(reminder => reminder.TriggerAt)
                            .ToList();

            switch (reminders.Count)
            {
            case 0:
                await ReplyAsync(NO_REMINDERS_FOUND);

                break;

            case 1:
                await ReminderService.CancelReminderAsync(DbContext, reminders[0]);
                await ReplyAsync(REMINDER_DELETED);

                break;

            default:
                await ReplyAsync(MULTIPLE_MATCHING_REMINDERS, reminderId);

                break;
            }
        }
Esempio n. 2
0
        public async Task ListRemindersAsync()
        {
            var reminders = ReminderService.GetRemindersForUser(Context.Member.Id)
                            .Where(reminder => reminder.UserId == Context.Member.Id.RawValue && Context.Guild.Channels.ContainsKey(reminder.ChannelId))
                            .OrderBy(reminder => reminder.TriggerAt)
                            .ToList();

            switch (reminders.Count)
            {
            case 0:
                await ReplyAsync(NO_REMINDERS_FOUND);

                return;

            case <= BatchSize:
                var embed = await CreateReminderEmbedAsync(reminders);
                await ReplyAsync(embed : embed.Build());

                return;
            }

            var numberOfPages   = MathEx.CeilingDivision(reminders.Count, BatchSize);
            var reminderBatches = reminders.Batch(BatchSize);
            var pageIndex       = 0;
            var reminderPages   = new List <Page>();

            foreach (var reminderBatch in reminderBatches)
            {
                var reminderEmbedBuilder = await CreateReminderEmbedAsync(reminderBatch);

                reminderEmbedBuilder.Footer = new LocalEmbedFooterBuilder {
                    Text = $"Page [{++pageIndex}/{numberOfPages}]"
                };
                reminderPages.Add(reminderEmbedBuilder.Build());
            }
            var pageProvider = new DefaultPageProvider(reminderPages);
            var menu         = new PagedMenu(Context.User.Id, pageProvider);
            await Context.Channel.StartMenuAsync(menu);
        }
Esempio n. 3
0
        public async Task CreateReminderAsync([Remainder] UserReminder reminder)
        {
            await ReminderService.CreateReminderAsync(reminder);

            await ReplyAsync(REMINDER_CREATED);
        }