Exemple #1
0
        public static int Add(Channel_Event channel_event)
        {
            const string query = "INSERT INTO channel_event(aktiv, channel, event, when, type) VALUES(@aktiv, @channel, @event, @when, @type)";

            var args = new Dictionary <string, object>
            {
                { "@aktiv", channel_event.aktiv },
                { "@channel", channel_event.channel },
                { "@event", channel_event.Event },
                { "@when", channel_event.when },
                { "@type", channel_event.type }
            };

            return(Data.ExecuteWrite(query, args));
        }
Exemple #2
0
        public static int Edit(Channel_Event channel_event)
        {
            const string query = "UPDATE channel_event SET aktiv = @aktiv, channel = @channel, event = @event, when = @when, type = @type WHERE id = @id";

            var args = new Dictionary <string, object>
            {
                { "@id", channel_event.id },
                { "@aktiv", channel_event.aktiv },
                { "@channel", channel_event.channel },
                { "@event", channel_event.Event },
                { "@when", channel_event.when },
                { "@type", channel_event.type }
            };

            return(Data.ExecuteWrite(query, args));
        }
        //hourly_timer event
        public static async void Hourly_timer_Elapsed(object sender, ElapsedEventArgs eArgs)
        {
            try
            {
                Console.WriteLine(DateTime.Now.TimeOfDay + "hourly_timer event");
                Log.Information("system - hourly_timer event - start");

                //karma reminder event
                var channel_event_list = Channel_Event.GetAllByType('k');

                foreach (var channel_event in channel_event_list)
                {
                    if (channel_event.aktiv == 1)
                    {
                        var user = User.GetById((ulong)Convert.ToInt64(channel_event.when));
                        var e    = Event.GetById(channel_event.Event);

                        if (e.what == "say")
                        {
                            if (e.how == "remind")
                            {
                                if (user.karma < Convert.ToInt32(Global.GetByName("karma_threshold_to_remind").value))
                                {
                                    var message  = Event.GetRandomByWhat("reminder");
                                    var channel  = Program.Client.GetChannel(channel_event.channel) as ISocketMessageChannel;
                                    var reminder = await channel.SendMessageAsync(embed : Embed.New(Program.Client.GetUser(user.id), Field.CreateFieldBuilder("warning", $"Your karma is {user.karma}.\n{message.how}"), Colors.warning, "friendly reminder"));

                                    Message.Add(new Message(user.id, reminder.Id, channel.Id, 'k'));
                                }
                            }
                        }
                    }
                }

                //renew event
                channel_event_list = Channel_Event.GetAllByType('r');

                foreach (var channel_event in channel_event_list)
                {
                    if (channel_event.aktiv == 1)
                    {
                        var channel = Program.Client.GetChannel(channel_event.channel) as ISocketMessageChannel;
                        var e       = Event.GetById(channel_event.Event);

                        if (e.what == "renew")
                        {
                            if (e.how == "leaderboard")
                            {
                                var message = await channel.GetMessageAsync((ulong)Convert.ToInt64(channel_event.when)) as IUserMessage;

                                try
                                {
                                    await message.ModifyAsync(x => { x.Embed = Embed.GetLeaderboard(); });
                                }
                                catch (Exception ex)
                                {
                                    Console.WriteLine(ex.Message);
                                }
                            }
                            else if (e.how == "nextBirthday")
                            {
                                var message = await channel.GetMessageAsync((ulong)Convert.ToInt64(channel_event.when)) as IUserMessage;

                                try
                                {
                                    var items = Birthday.GetNextBirthday();

                                    string content = "";

                                    foreach (var item in items)
                                    {
                                        if (items[0].Start.Date == item.Start.Date)
                                        {
                                            var user = Program.Client.GetUser((ulong)Convert.ToInt64(item.Description));

                                            if (user != null)
                                            {
                                                content = content + user.Username + "\n";
                                            }
                                            else
                                            {
                                                content = content + item.Summary + "\n";
                                            }
                                        }
                                    }

                                    await message.ModifyAsync(x => { x.Embed = Embed.New(Program.Client.CurrentUser, Field.CreateFieldBuilder(Birthday.DateToSting(items[0].Start.Date), content), Colors.information, "next birthday"); });
                                }
                                catch (Exception ex)
                                {
                                    Console.WriteLine(ex.Message);
                                }
                            }
                        }
                    }
                }

                SetUpHourlyTimer(new TimeSpan(DateTime.Now.Hour + 1, 0, 0));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Log.Error($"system - hourly_timer event - error:{ex.Message}");
            }
        }
        //daily_timer event
        public static async void Daily_timer_Elapsed(object sender, ElapsedEventArgs eArgs)
        {
            try
            {
                Console.WriteLine(DateTime.Now.TimeOfDay + "daily_timer event");
                Log.Information("system - daily_timer event - start");

                //Karma event

                var user_list = User.GetAllWithKarma();

                if (user_list != null)
                {
                    foreach (var user in user_list)
                    {
                        user.karma -= Convert.ToInt32(Global.GetByName("karma_daily_loss").value);
                        int karma_minimum = Convert.ToInt32(Global.GetByName("karma_minimum").value);

                        if (user.karma < karma_minimum)
                        {
                            user.karma = karma_minimum;
                        }

                        User.Edit(user);
                    }
                }

                //todays birthday event

                var channel_event_list = Channel_Event.GetAllByType('s');

                foreach (var channel_event in channel_event_list)
                {
                    if (channel_event.aktiv == 1)
                    {
                        var channel = Program.Client.GetChannel(channel_event.channel) as ISocketMessageChannel;
                        var e       = Event.GetById(channel_event.Event);

                        if (e.what == "say")
                        {
                            if (e.how == "todays_birthday")
                            {
                                var message_list = Message.GetAllByChannelAndType(channel.Id, 't');

                                if (message_list != null)
                                {
                                    foreach (var message in message_list)
                                    {
                                        await channel.DeleteMessageAsync(message.message);

                                        Message.DeleteById(message.id);
                                    }
                                }

                                var items = Birthday.GetNextBirthday();

                                if (items != null)
                                {
                                    string content = "";

                                    foreach (var item in items)
                                    {
                                        if (item.Start.Date == DateTime.Now.Date.ToString("yyyy-MM-dd"))
                                        {
                                            var user = Program.Client.GetUser((ulong)Convert.ToInt64(item.Description));

                                            if (user != null)
                                            {
                                                content = content + user.Mention + "\n";
                                            }
                                            else
                                            {
                                                content = content + item.Summary + "\n";
                                            }
                                        }
                                    }

                                    if (content != "")
                                    {
                                        content = content + "\nHappy Birthday!";

                                        var message = await channel.SendMessageAsync(embed : Embed.New(Program.Client.CurrentUser, Field.CreateFieldBuilder(Birthday.DateToSting(items[0].Start.Date), content), Colors.information, "todays birthday"));

                                        Message.Add(new Message(Program.Client.CurrentUser.Id, message.Id, channel.Id, 't'));
                                    }
                                }
                            }
                        }
                    }
                }

                SetUpDailyTimer(new TimeSpan(Convert.ToInt32(Global.GetByName("daily_timer_hour").value), 0, 0));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Log.Error($"system - daily_timer event - error:{ex.Message}");
            }
        }