예제 #1
0
        private void CopyTableEveryDay()
        {
#pragma warning disable CS1998 // Bei der asynchronen Methode fehlen "await"-Operatoren. Die Methode wird synchron ausgeführt.
            Task.Run(async() =>
#pragma warning restore CS1998 // Bei der asynchronen Methode fehlen "await"-Operatoren. Die Methode wird synchron ausgeführt.
            {
                while (true)
                {
                    #region set Trigger Time
                    DateTime aktuelleZeit = DateTime.Now;
                    DateTime triggerZeit  = new DateTime(aktuelleZeit.Year, aktuelleZeit.Month, aktuelleZeit.Day, 13, 36, 00, 000);
                    // get the time different to int in millisec
                    int iTriggerZeit = Convert.ToInt32(triggerZeit.Subtract(aktuelleZeit).TotalMilliseconds);
                    if (iTriggerZeit < 0)
                    {
                        triggerZeit  = new DateTime(aktuelleZeit.Year, aktuelleZeit.Month, aktuelleZeit.Day, 13, 36, 00, 000).AddDays(1);
                        iTriggerZeit = Convert.ToInt32(triggerZeit.Subtract(aktuelleZeit).TotalMilliseconds);
                    }
                    // sleep until the respons time is 13:38 each day
                    Thread.Sleep(iTriggerZeit);
                    #endregion

                    this.db = this.dbClass.connect();
                    TablesHeader dbTable = new TablesHeader(this.db);

                    #region Delete all Data in Table 1337_2 First
                    var table1337_2result = from table in dbTable.Table1337_2
                                            select table;

                    foreach (var item in table1337_2result)
                    {
                        dbTable.Table1337_2.DeleteOnSubmit(item);
                    }
                    try
                    {
                        dbTable.SubmitChanges();
                        LogMain("Daten in Tabelle 1337_2 erfolgreich gelöscht.", LogLevel.Dev);
                    }
                    catch (Exception e)
                    {
                        LogMain("Beim Löschen der Daten in Tabelle 1337_2 ist ein Fehler aufgetretten.\n" + e, LogLevel.Error);
                    }
                    #endregion

                    #region Copy Data from Table 1337 -> 1337_2
                    var table1337result = from table in dbTable.Table1337
                                          select table;

                    foreach (var item in table1337result)
                    {
                        Table1337_2 newList            = new Table1337_2();
                        newList.userid                 = item.userid;
                        newList.username               = item.username;
                        newList.counter_all            = item.counter_all;
                        newList.counter_streak         = item.counter_streak;
                        newList.counter_longest_streak = item.counter_longest_streak;
                        newList.date_begin             = item.date_begin;
                        newList.date_last              = item.date_last;
                        dbTable.Table1337_2.InsertOnSubmit(newList);
                    }
                    try
                    {
                        dbTable.SubmitChanges();
                        LogMain("Kopieren der Tabelle 1337 -> 1337_2 war erfolgreich.", LogLevel.Dev);
                    }
                    catch (Exception e)
                    {
                        LogMain("Beim Kopieren der Tabelle 1337 -> 1337_2 ist ein Fehler aufgetretten.\n" + e, LogLevel.Error);
                    }
                    #endregion
                    db.Close();
                }
            });
        }
예제 #2
0
#pragma warning disable CS1998 // Bei der asynchronen Methode fehlen "await"-Operatoren. Die Methode wird synchron ausgeführt.
        public async Task PostDaylieStats(SocketGuild guild)
#pragma warning restore CS1998 // Bei der asynchronen Methode fehlen "await"-Operatoren. Die Methode wird synchron ausgeführt.
        {
#pragma warning disable CS4014 // Da auf diesen Aufruf nicht gewartet wird, wird die Ausführung der aktuellen Methode vor Abschluss des Aufrufs fortgesetzt.
            if (initPostDaylieStatsOnes)
            {
                LogMain("PostDaylieStats returned.", LogLevel.Debug);
                return;
            }
            initPostDaylieStatsOnes = true;
            Task.Run(async() =>
            {
                while (true)
                {
                    #region send msg when event is over
                    CommandHeader _c2 = new CommandHeader();
                    SocketTextChannel textChannel;

                    // Get actual time and time for trigger
                    DateTime aktuelleZeit = DateTime.Now;
                    DateTime triggerZeit  = new DateTime(aktuelleZeit.Year, aktuelleZeit.Month, aktuelleZeit.Day, 13, 38, 00, 000);
                    // get the time different to int in millisec
                    int iTriggerZeit = Convert.ToInt32(triggerZeit.Subtract(aktuelleZeit).TotalMilliseconds);
                    if (iTriggerZeit < 0)
                    {
                        triggerZeit  = new DateTime(aktuelleZeit.Year, aktuelleZeit.Month, aktuelleZeit.Day, 13, 38, 00, 000).AddDays(1);
                        iTriggerZeit = Convert.ToInt32(triggerZeit.Subtract(aktuelleZeit).TotalMilliseconds);
                    }
                    // sleep until the respons time is 13:38 each day
                    Thread.Sleep(iTriggerZeit);

                    // If 1337ChannelID is set
                    if (_client.GetChannel(_c2.GetFeature1337ListenFromChannelID()) != null)
                    {
                        textChannel = (SocketTextChannel)_client.GetChannel(_c2.GetFeature1337ListenFromChannelID());
                        await textChannel.SendMessageAsync("Yaay <a:lilacxYayHyperGif:772468799454052392> Dankeschön fürs mitmachen! <a:lilacxHappyGIF:708754770008997968> Heute wurden ganze " + counterUserPerDay + " Meowies um 1337 gezählt. <a:poggers:684767963156709376>");
                    }
                    // If Channel doesn't exist or 0
                    else if (_c2.GetFeature1337ListenFromChannelID() == 0 || _client.GetChannel(_c2.GetFeature1337ListenFromChannelID()) == null)
                    {
                        await _client.GetGuild(guild.Id).SystemChannel.SendMessageAsync("Yaay <a:lilacxYayHyperGif:772468799454052392> Dankeschön fürs mitmachen! <a:lilacxHappyGIF:708754770008997968> Heute wurden ganze " + counterUserPerDay + " Meowies um 1337 gezählt. <:Pog:655898145963900948>");
                    }
                    counterUserPerDay = 0;
                    #endregion

                    #region Set Counter to 0 for ever User that fail on this day
                    this.db = this.dbClass.connect();
                    TablesHeader dbTable = new TablesHeader(this.db);

                    var table1337 = dbTable.Table1337;

                    var twoDaysBeforDateTime = DateTime.Today.AddDays(-1);

                    foreach (var item in table1337)
                    {
                        string[] lastDate     = item.date_last.Split(".");
                        DateTime lastDateTime = new DateTime(Convert.ToInt32(lastDate[2]), Convert.ToInt32(lastDate[1]), Convert.ToInt32(lastDate[0]));
                        if (lastDateTime.Ticks <= twoDaysBeforDateTime.Ticks)
                        {
                            item.counter_streak = 0;
                            LogMain("counter_streak für User " + item.username + " auf 0 gesetzt", LogLevel.Dev);
                        }
                    }
                    try
                    {
                        dbTable.SubmitChanges();
                        LogMain("counter_streak wurden für jeden betroffenen User in Tabelle 1337 erfolgreich auf 0 gesetzt.", LogLevel.Dev);
                    }
                    catch (Exception e)
                    {
                        LogMain("Beim setzen von counter_streak in Tabelle 1337 ist ein Fehler aufgetretten.\n" + e, LogLevel.Error);
                    }
                    db.Close();
                    #endregion
                }
            });
#pragma warning restore CS4014 // Da auf diesen Aufruf nicht gewartet wird, wird die Ausführung der aktuellen Methode vor Abschluss des Aufrufs fortgesetzt.
        }
예제 #3
0
        public async Task countuser(SocketGuildUser user)
        {
            if (!ReadChannelGeneralAdmin())
            {
                return;
            }

            if (ModRoleID == 0)
            {
                await SendToGeneralChannelAdminAsync("Die Mod rolle wurde noch nicht gesetzt, bitte dem SeverAdministrator bescheid geben!");

                return;
            }

            string           formatDate = "dd.MM.yyyy";
            SQLiteConnection db         = this.dbClass.connect();
            TablesHeader     dbTable    = new TablesHeader(db);

            // select the curent users userid from database
            var table1337 = dbTable.Table1337;
            var userID    = from table in table1337
                            where table.userid == user.Id
                            select table.userid;

            if (userID.Count() == 0)
            {
                // Add new User to Database if not exist
                Table1337 addNewUser = new Table1337()
                {
                    userid                 = user.Id,
                    username               = user.Username,
                    counter_all            = 1,
                    counter_streak         = 1,
                    counter_longest_streak = 1,
                    date_begin             = DateTime.Today.ToString(formatDate),
                    date_last              = DateTime.Today.ToString(formatDate)
                };

                dbTable.Table1337.InsertOnSubmit(addNewUser);
                dbTable.SubmitChanges();

                await SendToGeneralChannelAdminAsync(user.Username + " gezählt und neu in der Datenbank angelegt.");
            }
            else
            {
                var userID2 = from table in table1337
                              where table.userid == user.Id
                              select table;

                // temp variable for changes
                uint   counter_allQ           = 0;
                uint   counter_streakQ        = 0;
                uint   counter_logest_streakQ = 0;
                string date_lastQ             = " ";

                // get current data from user
                foreach (var item in userID2)
                {
                    counter_allQ           = item.counter_all;
                    counter_streakQ        = item.counter_streak + 1;
                    counter_logest_streakQ = item.counter_longest_streak;
                    date_lastQ             = item.date_last;
                }

                // update counter longest streak if user got higher streak
                if (counter_streakQ > counter_logest_streakQ)
                {
                    counter_logest_streakQ = counter_streakQ;
                }

                // get the user which should be updated by id
                var updateTable = dbTable.Table1337.Single((item) => item.userid == user.Id);

                // update values for user
                updateTable.username    = user.Username;
                updateTable.counter_all = counter_allQ + 1;
                if (date_lastQ != DateTime.Today.AddDays(-1).ToString(formatDate))
                {
                    updateTable.counter_streak = 1;
                }
                else
                {
                    updateTable.counter_streak = counter_streakQ;
                }
                // Muss noch angepasst werden | An Tag anpassen
                updateTable.counter_longest_streak = counter_logest_streakQ;
                updateTable.date_last = DateTime.Today.ToString(formatDate);

                // send data to database when SubmitChanges() is called.
                dbTable.SubmitChanges();
                await SendToGeneralChannelAdminAsync(user.Username + " gezählt.");
            }
            db.Close();
        }
예제 #4
0
        private async Task Message1337(SocketMessage rawMessage)
        {
            // Ignore system messages and messages from bots
            if (!(rawMessage is SocketUserMessage message))
            {
                return;
            }
            if (message.Source != MessageSource.User)
            {
                return;
            }

            var  context = new SocketCommandContext(this._client, message);
            bool check   = _c.ReadChannel1337Listen(context);

            if (!check)
            {
                return;
            }

            // Get Time to Check if we are on right time and prepare the string for it
            string timeNowAsString = DateTime.Now.ToString(formatTime);
            string result          = t.RemoveSpecificCharFromString(timeNowAsString, ':');
            int    timeNowAsInt    = Convert.ToInt32(result);

            // check if message contains a mention and get this mention as id to string
            string rolles = " ";

            if (message.MentionedRoles.Count == 1)
            {
                foreach (var item in message.MentionedRoles)
                {
                    if (item.Name == "1337")
                    {
                        rolles = item.Id.ToString();
                    }
                }
            }

            // Split Message and count every 1337 and @1337
            string[] userMessage  = message.Content.Split(' ');
            int      counter1337  = 0;
            int      counterM1337 = 0;

            // count
            foreach (var item in userMessage)
            {
                if (item == "1337")
                {
                    counter1337++;
                }
                else if (item == "<@&" + rolles + ">")
                {
                    counterM1337++;
                }
            }

            // check if message has 1337 or @1337 ones!
            if (counter1337 == 1 && counterM1337 != 1 || counter1337 != 1 && counterM1337 == 1)
            {
                //Check if it is the right time! 133700 - 133800 otherwise break
                if (!(133700 <= timeNowAsInt && 133800 >= timeNowAsInt))
                {
                    if (this._devMode)
                    {
                        await _c.SendTo1337ChannelAsync(context.Guild.GetUser(message.Author.Id).Mention +
                                                        " Nicht in der richtigen Zeit!", context);
                    }
                    LogMain("1 " + context.Guild.GetUser(message.Author.Id).Username + " Nicht in der richtigen Zeit!", LogLevel.Log);
                    return;
                }

                this.db = this.dbClass.connect();
                TablesHeader dbTable = new TablesHeader(this.db);

                // select the curent users userid from database
                var table1337 = dbTable.Table1337;
                var userID    = from table in table1337
                                where table.userid == message.Author.Id
                                select table.userid;

                // Check if this user is in Database
                if (userID.Count() == 0)
                {
                    // Add new User to Database if not exist
                    Table1337 addNewUser = new Table1337()
                    {
                        userid                 = message.Author.Id,
                        username               = context.Guild.GetUser(message.Author.Id).Username,
                        counter_all            = 1,
                        counter_streak         = 1,
                        counter_longest_streak = 1,
                        date_begin             = DateTime.Today.ToString(formatDate),
                        date_last              = DateTime.Today.ToString(formatDate)
                    };

                    dbTable.Table1337.InsertOnSubmit(addNewUser);
                    dbTable.SubmitChanges();
                    // Counts User for bot respons
                    counterUserPerDay++;
                    if (this._devMode)
                    {
                        await _c.SendTo1337ChannelAsync(context.Guild.GetUser(message.Author.Id).Mention +
                                                        " Hab dich gezählt :P", context);
                    }
                    LogMain("2 " + context.Guild.GetUser(message.Author.Id).Username + " Hab dich gezählt :P ", LogLevel.Log);
                }
                else // Update user if allready exist
                {
                    //get colum from current user by id
                    var userID2 = from table in table1337
                                  where table.userid == message.Author.Id
                                  select table;

                    // temp variable for changes
                    uint   counter_allQ           = 0;
                    uint   counter_streakQ        = 0;
                    uint   counter_logest_streakQ = 0;
                    string date_lastQ             = " ";

                    // get current data from user
                    foreach (var item in userID2)
                    {
                        counter_allQ           = item.counter_all;
                        counter_streakQ        = item.counter_streak + 1;
                        counter_logest_streakQ = item.counter_longest_streak;
                        date_lastQ             = item.date_last;
                    }

                    if (date_lastQ != DateTime.Today.ToString(formatDate))
                    {
                        // update counter longest streak if user got higher streak
                        if (counter_streakQ > counter_logest_streakQ)
                        {
                            counter_logest_streakQ = counter_streakQ;
                        }

                        // get the user which should be updated by id
                        var updateTable = dbTable.Table1337.Single((item) => item.userid == message.Author.Id);

                        // update values for user
                        updateTable.username    = context.Guild.GetUser(message.Author.Id).Username;
                        updateTable.counter_all = counter_allQ + 1;
                        if (date_lastQ != DateTime.Today.AddDays(-1).ToString(formatDate))
                        {
                            updateTable.counter_streak = 1;
                        }
                        else
                        {
                            updateTable.counter_streak = counter_streakQ;
                        }
                        // Muss noch angepasst werden | An Tag anpassen
                        updateTable.counter_longest_streak = counter_logest_streakQ;
                        updateTable.date_last = DateTime.Today.ToString(formatDate);

                        // send data to database when SubmitChanges() is called.
                        dbTable.SubmitChanges();
                        // Counts User for bot respons
                        counterUserPerDay++;
                        if (_devMode)
                        {
                            await _c.SendTo1337ChannelAsync(context.Guild.GetUser(message.Author.Id).Mention +
                                                            " Hab dich gezählt :P", context);
                        }
                        LogMain("3 " + context.Guild.GetUser(message.Author.Id).Username + " Hab dich gezählt :P ", LogLevel.Log);
                    }
                    else
                    {
                        if (this._devMode)
                        {
                            await _c.SendTo1337ChannelAsync(context.Guild.GetUser(message.Author.Id).Mention +
                                                            " Du wurdest heute schon gezählt. Schummeln gilt nicht!! <:pandabulle:327873024017563649>", context);
                        }
                        LogMain("4 " + context.Guild.GetUser(message.Author.Id).Username +
                                " Du wurdest heute schon gezählt. Schummeln gilt nicht!! <:pandabulle:327873024017563649> ", LogLevel.Log);
                    }
                }
                this.db.Close();
            }
        }
예제 #5
0
        public async Task ModulsAsync([Remainder] string args = null)
        {
            // Check if right Channel
            bool check = ReadChannelGeneralAdmin();

            if (!check)
            {
                return;
            }

            // If Mod Role not Set
            if (ModRoleID == 0)
            {
                await SendToGeneralChannelAdminAsync("Die Mod rolle wurde noch nicht gesetzt, bitte dem SeverAdministrator bescheid geben!");

                return;
            }

            if (args == null)
            {
                await SendToGeneralChannelAdminAsync(Context.User.Mention + " Du hast zu wenige Argumente angegeben. Bitte nutze den Befehl wie folgt:\n>>> `" +
                                                     Prefix + "edituser <UserID> <Counter_Streak> <Counter_Highest_Streak> <CounterAll> <Last_Date>` \n" +
                                                     "**BITTE BEACHTEN**: `<Last_Date>` **MUSS** im Format `DD.MM.YYYY` angegeben werden. Eine falsche Formation **WIRD** zu Fehlern bei den nächsten Zählungen führen!");

                return;
            }
            args = args.ToLower();
            string[] countArgs = args.Split(' ');

            // Check if to less or much Arguments
            if (countArgs.Length < 5)
            {
                await SendToGeneralChannelAdminAsync(Context.User.Mention + " Zu wenige Agumente!");
            }
            else if (countArgs.Length > 5)
            {
                await SendToGeneralChannelAdminAsync(Context.User.Mention + " Zu viele Agumente!");
            }
            else
            {
                // Check if Member has ModRole
                bool memberHasModRole = false;
                foreach (var item in Context.Guild.GetRole(ModRoleID).Members)
                {
                    if (item.Id == Context.User.Id)
                    {
                        memberHasModRole = true;
                    }
                }
                // User is Mod or Admin
                if (memberHasModRole || Context.Guild.GetUser(Context.User.Id).GuildPermissions.Administrator)
                {
                    var          db      = new DatabaseInit().connect();
                    TablesHeader dbTable = new TablesHeader(db);

                    var       table1337 = dbTable.Table1337;
                    Table1337 updateUser;
                    try
                    {
                        // Check if UserID is number
                        ulong userID = 0;
                        try
                        {
                            userID = Convert.ToUInt64(countArgs[0]);
                        }
                        catch (Exception)
                        {
                            await SendToGeneralChannelAdminAsync("<UserID> war keine Zahl!");

                            return;
                        }
                        // Get User from Database
                        updateUser = dbTable.Table1337.Single((item) => item.userid == userID);
                    }
                    catch (Exception)
                    {
                        await SendToGeneralChannelAdminAsync("Es wurde kein User mit der ID: " + countArgs[0] + " gefunden");

                        return;
                    }
                    // Check If args are Numbers
                    // <Counter_Streak>
                    try
                    {
                        updateUser.counter_streak = Convert.ToUInt32(countArgs[1]);
                    }
                    catch (Exception e)
                    {
                        await SendToGeneralChannelAdminAsync("Meow:\n" + e);
                        await SendToGeneralChannelAdminAsync("<Counter_Streak> war keine Positive Zahl!");

                        return;
                    }
                    // <Counter_Highest_Streak>
                    try
                    {
                        updateUser.counter_longest_streak = Convert.ToUInt32(countArgs[2]);
                    }
                    catch (Exception)
                    {
                        await SendToGeneralChannelAdminAsync("<Counter_Highest_Streak> war keine Positive Zahl!");

                        return;
                    }
                    try
                    {
                        updateUser.counter_all = Convert.ToUInt32(countArgs[3]);
                    }
                    catch (Exception)
                    {
                        await SendToGeneralChannelAdminAsync("<CounterAll> war keine Positive Zahl!");

                        return;
                    }

                    updateUser.date_last = countArgs[4];
                    dbTable.SubmitChanges();
                    db.Close();

                    await SendToGeneralChannelAdminAsync("User: "******" wurde erfolgreich Editiert\n" +
                                                         "Seine neuen Werte lauten wie Folgt:\n" +
                                                         ">>> Counter Streak: `" + countArgs[1] + "`\n" +
                                                         "Counter Longest Streak: `" + countArgs[2] + "`\n" +
                                                         "Counter Alltime: `" + countArgs[3] + "`\n" +
                                                         "Date Last: `" + countArgs[4] + "`");

                    LogMain("User: "******" wurde von " + Context.User.Username + " mit der ID " + Context.User.Id + " editiert.", LogLevel.Warning);
                }
                else
                {
                    await SendToGeneralChannelAdminAsync("Du hast keine Berechtigung. Du musst im besitz der `" + Context.Guild.GetRole(ModRoleID).Name + "` Rolle sein.");
                }
            }
        }