コード例 #1
0
        public static async Task HandleRemindersAsync(DiscordSocketClient _client)
        {
            using (var db = new DiscordBotEntities())
            {
                var dtNow            = DateTime.Now;
                var elapsedReminders = db.Reminders.Where(x => x.ReminderDate < dtNow && (x.Status == 10 || x.Status == 20)).ToList();

                if (elapsedReminders.Any())
                {
                    foreach (var reminder in elapsedReminders)
                    {
                        if (reminder.Status == 10)
                        {
                            reminder.Status = 100;
                        }
                        else if (reminder.Status == 20)
                        {
                            reminder.ReminderDate = reminder.ReminderDate.AddDays(1);
                        }

                        await SendReminder(reminder, _client);
                    }
                }
                db.SaveChanges();
            }
        }
コード例 #2
0
ファイル: StatusCommand.cs プロジェクト: ATKelman/DiscordBot
 private void UpdateStatus(string name, string status)
 {
     using (var db = new DiscordBotEntities())
     {
         var userStatus = db.UserStatus.Where(x => x.User == name).SingleOrDefault();
         userStatus.Status = status;
         db.SaveChanges();
     }
 }
コード例 #3
0
ファイル: StatusCommand.cs プロジェクト: ATKelman/DiscordBot
        private void CreateUser(string name, string status)
        {
            using (var db = new DiscordBotEntities())
            {
                var userStatus = new UserStatu();
                userStatus.User   = name;
                userStatus.Status = status;

                db.UserStatus.Add(userStatus);
                db.SaveChanges();
            }
        }
コード例 #4
0
ファイル: StatusCommand.cs プロジェクト: ATKelman/DiscordBot
 private bool UserAlreadyExists(string name)
 {
     using (var db = new DiscordBotEntities())
     {
         var userCheck = db.UserStatus.Where(x => x.User == name).SingleOrDefault();
         if (userCheck != null)
         {
             return(true);
         }
         else
         {
             return(false);
         }
     }
 }
コード例 #5
0
        private void SetReminder(string user, string channel, DateTime time, string message)
        {
            using (var database = new DiscordBotEntities())
            {
                var reminder = new Reminder
                {
                    Username     = user,
                    Message      = message,
                    ReminderDate = time,
                    Channel      = channel,
                    Status       = 10
                };

                database.Reminders.Add(reminder);

                try
                {
                    database.SaveChanges();
                }
                catch (DbEntityValidationException ex)
                {
                    // Retrieve the error messages as a list of strings.
                    var errorMessages = ex.EntityValidationErrors
                                        .SelectMany(x => x.ValidationErrors)
                                        .Select(x => x.ErrorMessage);

                    // Join the list to a single string.
                    var fullErrorMessage = string.Join("; ", errorMessages);

                    // Combine the original exception message with the new one.
                    var exceptionMessage = string.Concat(ex.Message, " The validation errors are: ", fullErrorMessage);

                    // Throw a new DbEntityValidationException with the improved exception message.
                    throw new DbEntityValidationException(exceptionMessage, ex.EntityValidationErrors);
                }
            }
        }
コード例 #6
0
        public async Task HandleMention(SocketMessage e)
        {
            SocketUserMessage msg = e as SocketUserMessage;

            if (msg == null)
            {
                return;
            }
            CommandContext context = new CommandContext(_client, msg);

            if (IsBot(context))
            {
                return;
            }

            var users = msg.MentionedUsers;

            if (users.Count > 0)
            {
                foreach (var user in users)
                {
                    using (var db = new DiscordBotEntities())
                    {
                        var status = db.UserStatus.Where(x => x.User == user.Mention).Select(x => x.Status).SingleOrDefault();
                        if (status != null)
                        {
                            if (!status.ToLower().Equals("none"))
                            {
                                var message = string.Format("{0} is currently {1}", user.Username, status);
                                await context.Channel.SendMessageAsync(message);
                            }
                        }
                    }
                }
            }
        }
コード例 #7
0
 public Repository()
 {
     context = new DiscordBotEntities();
 }