コード例 #1
0
        public static void AddReminder(ulong user, string name, DateTime time, string desc)
        {
            if (string.IsNullOrWhiteSpace(name))
            {
                name = BotUtils.ZeroSpace;
            }
            if (string.IsNullOrWhiteSpace(desc))
            {
                desc = BotUtils.ZeroSpace;
            }

            ReminderNode node = new ReminderNode(name, desc);

            string dtime = time.ToString();

            if (!Reminders.ContainsKey(user))
            {
                Reminders.Add(user, new Dictionary <string, List <ReminderNode> >());
            }
            if (!Reminders[user].ContainsKey(dtime))
            {
                Reminders[user].Add(dtime, new List <ReminderNode>());
            }
            Reminders[user][dtime].Add(node);

            SaveReminders();
        }
コード例 #2
0
        public static async Task RemindUser(ReminderPointer rp)
        {
            ReminderNode node = GetReminder(rp);

            SocketGuildUser user = BotUtils.GetGUser(rp.User);

            IDMChannel channel = await user.GetOrCreateDMChannelAsync();

            await channel.SendMessageAsync(embed : new BasicEmbed("Reminder!", node.Description, node.Name, BotUtils.Kamtro).GetEmbed());
        }
コード例 #3
0
        public static void EditReminder(ReminderPointer rp, string newName = null, string newDesc = null, string newDate = null)
        {
            ReminderNode node = GetReminder(rp);

            node.Name        = newName ?? node.Name;
            node.Description = newDesc ?? node.Description;

            if (newDate != null)
            {
                Reminders[rp.User][rp.Date].RemoveAt(rp.Index);

                if (Reminders[rp.User][rp.Date].Count == 0)
                {
                    Reminders[rp.User].Remove(rp.Date);
                }

                Reminders[rp.User].Add(newDate, new List <ReminderNode>());
                Reminders[rp.User][newDate].Add(node);
            }

            SaveReminders();
        }
コード例 #4
0
ファイル: ReminderEmbed.cs プロジェクト: DavidXLiu/Kamtro-Bot
        public override Embed GetEmbed()
        {
            EmbedBuilder eb = new EmbedBuilder();

            eb.WithTitle("Reminders");
            eb.WithColor(BotUtils.Kamtro);

            switch (PageNum)
            {
            case 1:
                string names = "";
                string descs = "";
                string dates = "";

                for (int i = 0; i < ReminderList.Count; i++)
                {
                    ReminderPointer rp   = ReminderList[i];
                    ReminderNode    node = ReminderManager.GetReminder(rp);

                    names += $"{(CursorPos == i + 1 ? CustomEmotes.CursorAnimated:"")}{MakeBold(node.Name, CursorPos == i + 1)}\n";
                    descs += MakeBold(BotUtils.ShortenLongString(node.Description, 20), CursorPos == i + 1) + "\n";
                    dates += MakeBold(GetDateString(rp), CursorPos == i + 1) + "\n";
                }

                if (ReminderList.Count == 0)
                {
                    eb.AddField("Reminders", "You don't have any reminders set! Click the add reminder button to add one!");
                }
                else
                {
                    eb.AddField("Name", names, true);
                    eb.AddField("Description", descs, true);
                    eb.AddField("Date M/D/Y", dates, true);
                }

                break;

            case 2:
                string name, desc, dt;

                if (CurrentReminder == null)
                {
                    name = "ERROR";
                    desc = "Something went wrong! Please contact arcy or carbon!\nTry clicking the back button!";
                    dt   = "NONE";
                }
                else
                {
                    name = ReminderManager.GetReminder(CurrentReminder).Name;
                    desc = ReminderManager.GetReminder(CurrentReminder).Description;

                    DateTime     d    = DateTime.Parse(CurrentReminder.Date);
                    TimeZoneNode node = UserDataManager.GetUserData(BotUtils.GetGUser(CurrentReminder.User)).TimeZone;

                    d.AddHours(node.Hour);
                    d.AddMinutes(node.Minute);

                    dt = d.ToString("dd/MM/yyyy") + " at " + d.ToString("hh:mm tt");
                }

                eb.AddField("Name", name);
                eb.AddField("Time", dt);
                eb.AddField("Description", desc);
                break;

            case 3:
                eb.WithTitle("Add Reminder");
                eb.WithDescription("When adding a reminder, make sure that you add a space in between the time, and the AM/PM if you are using a 12 hour clock. AM/PM are not nessecary in a 24 hour clock.\nDates MUST be in MM/DD/YYYY format. Months are in number form, January is 1 (or 01, single digit numbers can have a single zero in front if you want), December is 12.");
                break;

            case 4:
                eb.WithTitle("Edit Remidner");

                string options = $"{(CursorPos == 1 ? CustomEmotes.CursorAnimated : CustomEmotes.CursorBlankSpace)}Edit Name\n";
                options += $"{(CursorPos == 2 ? CustomEmotes.CursorAnimated : CustomEmotes.CursorBlankSpace)}Edit Description\n";
                options += $"{(CursorPos == 3 ? CustomEmotes.CursorAnimated : CustomEmotes.CursorBlankSpace)}Edit Date/Time";

                eb.AddField("Options", options);
                break;

            case 5:
            case 6:
            case 7:
                eb.WithTitle("Edit Remidner");
                break;
            }

            AddEmbedFields(eb);
            AddMenu(eb);

            if (ModifySuccess)
            {
                eb.AddField("Success", SuccessMessage);

                ModifySuccess  = false;
                SuccessMessage = BotUtils.ZeroSpace;
            }

            if (ErrorHappened)
            {
                eb.AddField("ERROR", ErrorMessage);

                ErrorHappened = false;
                ErrorMessage  = BotUtils.ZeroSpace;
            }

            return(eb.Build());
        }