public static XenforceGroupConfiguration getGroupConfiguration(TGChat chat)
        {
            SQLQueryInstance QueryInst;
            MySqlDataReader  cur;
            var ok = SQL.Query(string.Format("SELECT * FROM xenf_groupconfigs WHERE `group`={0}", chat.id), out QueryInst);

            if (!ok)
            {
                Console.WriteLine("[!] Error reading chat information for {0} -- {1}", chat.id, SQL.getLastError());
                Console.WriteLine(Environment.StackTrace);
                return(null);
            }
            else
            {
                cur = QueryInst.reader;
                if (cur.HasRows)
                {
                    cur.Read();
                    XenforceGroupConfiguration b = new XenforceGroupConfiguration()
                    {
                        group             = (long)cur["group"],
                        kicktime          = (int)cur["kicktime"],
                        message           = (string)cur["message"],
                        autoban           = (int)cur["autoban"],
                        muteuntilverified = (int)cur["muteuntilverified"],
                        announcekicks     = (int)cur["announcekicks"],
                        activationmode    = ((int)cur["activationmode"])
                    };

                    QueryInst.Finish();
                    return(b);
                }
                else
                {
                    QueryInst.Finish();
                    InitializeGroupConfiguration(chat);
                    return(new XenforceGroupConfiguration());
                }
            }
        }
Exemple #2
0
        public static void Start()
        {
            long last_update = 0;

            XenforceCommandInterpreter.LoadCommands();
            backgroundTasks = new Thread(new ThreadStart(backgroundTasksThread));
            backgroundTasks.Start();
            lazyBackgroundTaskTime = Helpers.getUnixTime();
            while (true)
            {
                if (lazyBackgroundTaskTime < Helpers.getUnixTime() - 3)
                {
                    // backgroundTasksThread();
                    lazyBackgroundTaskTime = Helpers.getUnixTime();
                }

                var b = Telegram.getUpdates(last_update + 1, 30);
                if (b == null)
                {
                    Console.WriteLine("NULL Update Array:", Telegram.lastError);
                    Thread.Sleep(250);
                    continue;
                }

                Console.WriteLine("Grabbed {0} updates.", b.Length);
                for (int i = 0; i < b.Length; i++)
                {
                    var CurrentUpdate = b[i];
                    if (CurrentUpdate.update_id > last_update)
                    {
                        last_update = CurrentUpdate.update_id;
                    }
                    if (CurrentUpdate.edited_message != null)
                    {
                        CurrentUpdate.message = CurrentUpdate.edited_message;
                    }

                    if (CurrentUpdate.message != null)
                    {
                        var message = CurrentUpdate.message;

                        if (message.from.is_bot)
                        {
                            continue; // don't need to process these
                        }

                        CurrentGroupConfig = getGroupConfiguration(message.chat);


                        if (message.photo != null)
                        {
                            try
                            {
                                XENFCoreSharp.Bot.Filters.XESFilter.doURLMediaFilter(message, message.from);
                            }
                            catch (Exception E)
                            {
                                var file = Helpers.writeStack(E.ToString());
                                //message.replySendMessage("Hello -- Something terrible went wrong with XenfBot, please report this, and reference XES_STK_" + file);
                                Console.WriteLine(E.ToString());
                            }
                        }

                        if (message.text != null)
                        {
                            try
                            {
                                XENFCoreSharp.Bot.Filters.XESFilter.doURLFilter(message, message.from);
                            } catch (Exception E)
                            {
                                var file = Helpers.writeStack(E.ToString());
                                // message.replySendMessage("Hello -- Something terrible went wrong with XenfBot, please report this, and reference XES_STK_" + file);
                                Console.WriteLine(E.ToString());
                            }


                            var varg_1 = message.text.Split((char)0x20);
                            if (varg_1.Length > 0)
                            {
                                if (varg_1[0] == "/xen")
                                {
                                    if (varg_1.Length > 1)
                                    {
                                        var VARGUMENTS = new string[varg_1.Length - 2];
                                        for (int ix = 2; ix < varg_1.Length; ix++)
                                        {
                                            VARGUMENTS[ix - 2] = varg_1[ix]; // Move only string argument into argument table.
                                        }
                                        var success = XenforceCommandInterpreter.ExecuteCommand(varg_1[1], message, VARGUMENTS);
                                        if (!success)
                                        {
                                            message.replySendMessage(XenforceCommandInterpreter.TRESULT);
                                        }
                                        continue;
                                    }
                                    var successx = XenforceCommandInterpreter.ExecuteCommand("help", message, new string[0]);
                                    if (!successx)
                                    {
                                        //message.replySendMessage(XenforceCommandInterpreter.TRESULT);
                                    }
                                    continue;
                                }
                            }
                        }

                        if (message.new_chat_members != null && message.new_chat_members.Length > 0)
                        {
                            for (int bq = 0; bq < message.new_chat_members.Length; bq++)
                            {
                                XenforceUserFilter.doFilterUser(message, message.new_chat_members[bq]);
                            }
                        }
                    }
                }
            }
        }