public static void setActivationMessage(TGMessage data, string[] arguments)
        {
            if (arguments.Length < 2)
            {
                data.replySendMessage("Failed to set activation message.  It may optionally include the object %NAME, and must be two words long.");
                return;
            }
            var str = "";

            for (int i = 0; i < arguments.Length; i++)
            {
                str += arguments[i] + " "; // Combine wordsssss
            }

            var success = XenforceRoot.writeGroupConfiguration(data.chat, "activationmessage", str);

            if (!success)
            {
                data.replySendMessage("Sorry, something went wrong when setting this option. I'd recommend contacting my creator, @xayrga -- I'm sure he can help you.");
                return;
            }
            var msg = data.replySendMessage("OK. Successfully set the activation message. I will now print an example, these messages will be cleaned up in 45 seconds -- so please get a good look at them before you walk away.");

            XenforceRoot.AddCleanupMessage(data.chat.id, msg.message_id, 45);
            str = str.Replace("%NAME", "@xenfbot");
            msg = data.replySendMessage(str);
        }
Beispiel #2
0
 public static void doFilterUser(TGMessage msg, TGUser user)
 {
     if (!user.is_bot)
     {
         try
         {
             bool b = false;
             b = Filters.XESFilter.autorem(msg, user);
             if (b == true)
             {
                 return;
             }
             b = Filters.XESFilter.namefilter(msg, user);
             if (b == true)
             {
                 return;
             }
             b = Filters.XESFilter.captcha(msg, user);
             if (b == true)
             {
                 return;
             }
         } catch (Exception E)
         {
             Console.WriteLine("F*****g seriously?\n{0}", E.ToString());
         }
     }
 }
Beispiel #3
0
        public static async Task <bool> Execute(TGMessage message, TGUser ncm, GroupConfigurationObject gco, string langcode)
        {
            if (gco.useBotScreen != true)   // Skipping because disabled.
            {
                return(true);
            }

            var query = "SELECT * FROM xenf_autokick WHERE `group`={0} AND `user`={1}";
            var fQry  = string.Format(query, message.chat.id, ncm.id);
            var w     = await SQL.QueryAsync(fQry);

            if (w.Count > 0)
            {
                return(true);
            }

            var UserScore = 500;

            if (ncm.username != null)
            {
                UserScore -= 50;
            }



            return(true);
        }
        public static void setWelcomeMessage(TGMessage data, string[] arguments)
        {
            if (arguments.Length < 2)
            {
                data.replySendMessage("Failed to set welcome message. The message must include the object %ACTURL in it. It may optionally include the object %NAME, or %DURATION (Amount of time they have to verify) -- oh, and it needs to be at least two words.");
                return;
            }
            var str = "";

            for (int i = 0; i < arguments.Length; i++)
            {
                str += arguments[i] + " ";     // Combine wordsssss
            }
            if (!str.Contains("%ACTURL"))
            {
                data.replySendMessage(string.Format("Failed to set welcome message. The message must include the object %ACTURL in it. It may optionally include the object %NAME."));
                return;
            }
            var success = XenforceRoot.writeGroupConfiguration(data.chat, "message", str);

            if (!success)
            {
                data.replySendMessage("Sorry, something went wrong when setting this option. I'd recommend contacting my creator, @xayrga -- I'm sure he can help you.");
                return;
            }
            var msg = data.replySendMessage("OK. Successfully set the welcome message. I will now print an example, these messages will be cleaned up in 45 seconds -- so please get a good look at them before you walk away.");

            XenforceRoot.AddCleanupMessage(data.chat.id, msg.message_id, 45);
            str = str.Replace("%ACTURL", "http://xayr.ga/xenf2/iamabotandidontneedtoverify");
            str = str.Replace("%DURATION", "30");
            str = str.Replace("%NAME", "@xenfbot");
            msg = data.replySendMessage(str);
            XenforceRoot.AddCleanupMessage(data.chat.id, msg.message_id, 45);
        }
        public static void setValuebool(TGMessage data, string[] arguments)
        {
            if (arguments.Length > 1)
            {
                var before = arguments[1];
                var after  = before == "true";

                if (before == "true" || before == "false")
                {
                    var success = XenforceRoot.writeGroupConfiguration(data.chat, arguments[0], after);
                    if (!success)
                    {
                        data.replySendMessage(string.Format("That didn't work. The configuration item {0} might not exist or is already this value.", arguments[0]));
                    }
                    else
                    {
                        data.replySendMessage(string.Format("Success, set {0} to {1}", arguments[0], before));
                    }
                }
                else
                {
                    data.replySendMessage(string.Format("Sorry, I couldn't understand the value '{0}', you need to use a boolean (true/false).", before));
                }
            }
            else
            {
                data.replySendMessage("The usage of this command is: setint <valname> <value>");
            }
        }
        public static bool ExecuteCommand(string command, TGMessage metadata, string[] arguments)
        {
            Action <TGMessage, string[]> currentCommand;
            var Success = AllCommands.TryGetValue(command, out currentCommand);

            if (currentCommand == null || Success == false)
            {
                TRESULT = "No such command.";
                BRESULT = false;
                return(false);
            }
            try
            { if (metadata.isSenderAdmin())
              {
                  currentCommand.Invoke(metadata, arguments);
              }
            } catch (Exception E)
            {
                var file = Helpers.writeStack(E.ToString());
                BRESULT = false;
                TRESULT = "Something terrible happened while running this. If you need support with this, please reference this XEN_STACK_" + file;
                return(false);
            }

            return(true);
        }
        public static void doURLMediaFilter(TGMessage msg, TGUser usr)
        {
            var chat = msg.chat;                                                                      // grab chat.

            var enabled = XenforceRoot.getGroupConfigurationValue(chat, "kickurlunactivated", false); // Check configuration value.

            if (!enabled)                                                                             // return if not enabled.
            {
                return;
            }

            var qsc = "SELECT * FROM xen_activations WHERE activated=0 AND `group`={0} AND `forwho`={1}"; //

            var rqry = string.Format(qsc, chat.id, usr.id);

            SQLQueryInstance QueryInst;
            var  queryok = SQL.Query(rqry, out QueryInst);
            bool onerow  = false;

            if (QueryInst != null && QueryInst.reader.HasRows) // They've already been kicked before. If we return at least one row, then its valid to assume they havent activated
            {                                                  // There can only be one activation index per user per group.
                onerow = true;
            }

            if (QueryInst != null)
            {
                QueryInst.Finish();
            }

            if (!onerow)
            {
                return; // There was no activation
            }
            var wtf = msg.replySendMessage(usr.first_name + " was removed from the chat for sending URL/Media before activating!");

            XenforceRoot.AddCleanupMessage(msg.chat.id, wtf.message_id, 30);
            Telegram.kickChatMember(msg.chat, msg.from, 30);
            msg.delete();

            var statement =
                string.Format("INSERT INTO xenf_autokick (`group`,`user`,`when`,`why`) VALUES ({0},{1},{2},'{3}')",
                              msg.chat.id,
                              msg.from.id,
                              Helpers.getUnixTime(),
                              "URLMedia_Picture"
                              );
            int ra = 0;

            SQL.NonQuery(statement, out ra);
            if (ra < 1)
            {
                Console.WriteLine("Creating autorem incident failed failed. No SQL rows affected.");
                var cmsg = msg.replySendMessage("AutoremAddIncident() FAILED:\n\n Info:\n\n" + SQL.getLastError());
                XenforceRoot.AddCleanupMessage(chat.id, cmsg.message_id, 120);
            }
        }
        public static void getValueBool(TGMessage data, string[] arguments)
        {
            if (arguments.Length > 0)
            {
                //data.replySendMessage("Xen Enforce Bot V3.1.4.5 (Serg--- Circle?)\n\nDocumentation on commands is available at http://www.xayr.ga/xenforce/");
                // throw new Exception("fuuuuck");
                var ok   = XenforceRoot.getGroupConfigurationValue(data.chat, arguments[0], false);
                var repl = "The current value of {0} is {1}";

                data.replySendMessage(string.Format(repl, arguments[0], ok));
            }
            else
            {
                data.replySendMessage("The usage of this command is: getbool <valname>");
            }
        }
        public static void getValueInt(TGMessage data, string[] arguments)
        {
            if (arguments.Length > 0)
            {
                var ok = XenforceRoot.getGroupConfigurationValue(data.chat, arguments[0], -999912);
                if (ok == -999912)
                {
                    data.replySendMessage(string.Format("The configuration attribute {0} doesn't exist.", arguments[0]));
                }

                var repl = "The current value of {0} is {1}";
                data.replySendMessage(string.Format(repl, arguments[0], ok));
            }
            else
            {
                data.replySendMessage("The usage of this command is: getint <valname>");
            }
        }
Beispiel #10
0
        public static bool captcha(TGMessage msg, TGUser usr)
        {
            var UserID         = usr.id;
            var GroupID        = msg.chat.id;
            var ActivationID   = Helpers.Base64Encode(UserID.ToString() + GroupID.ToString());
            var q              = usr.username;
            var user_name_full = usr.first_name + " " + usr.last_name;
            var ko             = 0;

            var ok = SQL.NonQuery(string.Format("DELETE FROM xen_activations WHERE activation_id='{0}'", ActivationID), out ko); // Remove the current activation ID.


            if (q != null)
            {
                user_name_full = "@" + q; // okay okay fine jeez.
            }


            var muteUntilVerified = XenforceRoot.getGroupConfigurationValue(msg.chat, "muteuntilverified", false);
            var kicktime          = XenforceRoot.getGroupConfigurationValue(msg.chat, "kicktime", 30);
            var instance_time     = Helpers.getUnixTime();

            var FullMessageOld = string.Format(
                "Welcome, %NAME. \n" +
                "Please complete a quick captcha within %DURATION minutes to verify you're not a bot: \n\n" +
                "%ACTURL"
                );

            var FullMessage = XenforceRoot.getGroupConfigurationValue(msg.chat, "message", FullMessageOld);


            if (FullMessage == null || FullMessage.Length < 10)
            {
                FullMessage = FullMessageOld;
            }

            FullMessage = FullMessage.Replace("%ACTURL", "http://www.xayr.ga/xenf2/?actid=" + ActivationID);
            FullMessage = FullMessage.Replace("%DURATION", kicktime.ToString());
            FullMessage = FullMessage.Replace("%NAME", user_name_full);

            if (muteUntilVerified == true)
            {
                Telegram.restrictChatMember(msg.chat, usr, 0, false, false, false, false); // Restrict until they verify.
                FullMessage += "\n\nYou will not be able to send any messages until you've verified.";
            }

            var message = msg.replySendMessage(FullMessage);

            // INSERT INTO xen_activations (activation_id,group,forwho,whencreated,actmessage,username) VALUES ('{0}',{1},{2},{3},{4},'{5}');

            if (message == null || GroupID == null || instance_time == null || user_name_full == null || ActivationID == null)
            {
                try
                {
                    Console.WriteLine("MESSAGE IS NULL OR SOMETHING");
                    Console.WriteLine("PROBLEM: {0} {1}", message, user_name_full);
                }
                catch { }
            }
            else

            {
                var statement =
                    string.Format("INSERT INTO xen_activations (`activation_id`,`group`,`forwho`,`whencreated`,`actmessage`,`username`) VALUES ('{0}',{1},{2},{3},{4},'{5}')",
                                  SQL.escape(ActivationID),
                                  GroupID,
                                  UserID,
                                  instance_time,
                                  message.message_id,
                                  SQL.escape(user_name_full)
                                  );
                int ra = 0;
                SQL.NonQuery(statement, out ra);
                if (ra < 1)
                {
                    Console.WriteLine("Creating activation ID failed. No SQL rows affected.");
                    var cmsg = msg.replySendMessage("CreateActivationID() FAILED:\n\n Info:\n\n" + SQL.getLastError());
                    if (cmsg != null)
                    {
                        XenforceRoot.AddCleanupMessage(message.chat.id, cmsg.message_id, 120);
                    }
                }

                return(false);
            }
            return(false);
        }
Beispiel #11
0
        public static async Task <bool> Execute(TGMessage message, TGUser ncm, GroupConfigurationObject gco, string langcode)
        {
            var query = "SELECT * FROM xenf_activations WHERE `group`={0} AND `forwho`={1}";

            return(false);
        }
Beispiel #12
0
 public async virtual Task Execute(TGMessage message, string[] args, GroupConfigurationObject gco, string langcode)
 {
 }
Beispiel #13
0
        public override async Task Execute(TGMessage message, string[] args, GroupConfigurationObject gco, string langcode)
        {
            Console.WriteLine(args.Length);
            if (args.Length == 0)
            {
                var msgs = Localization.getStringLocalized(langcode, "basic/commands/config/availableCommands") + "\n\n";
                for (int i = 0; i < configureCommands.Length; i++)
                {
                    msgs += "[" + configureCommands[i] + "] " + Localization.getStringLocalized(langcode, "basic/commands/config/" + configureCommands[i]) + "\n\n";
                }
                await message.replySendMessage(msgs);

                return;
            }

            var val = args[0];

            switch (val)
            {
            case "kickTime":
            {
                int num = 0;
                var w   = Int32.TryParse(args[1], out num);
                if (w != true)
                {
                    var mems = await message.replySendMessage("I couldn't understand the value " + args[1] + ", it should be a number.");

                    return;
                }
                var q = await gco.setNumber(args[0], num);

                if (q != true)
                {
                    var mems = await message.replySendMessage(Localization.getStringLocalized(langcode, "basic/config/somethingWrong"));

                    return;
                }
                break;
            }

            case "useNameFilter":
            case "useBotScreen":
            case "kickMediaBeforeCaptcha":
            case "muteUntilVerified":
            case "announceKicks":
            {
                bool resv = args[1] == "true";

                if (resv == true)
                {
                    var q = await gco.setNumber(args[0], 1);

                    if (q != true)
                    {
                        var mems = await message.replySendMessage(Localization.getStringLocalized(langcode, "basic/config/somethingWrong"));

                        return;
                    }
                }
                else
                {
                    var q = await gco.setNumber(args[0], 0);

                    if (q != true)
                    {
                        var mems = await message.replySendMessage(Localization.getStringLocalized(langcode, "basic/config/somethingWrong"));

                        return;
                    }
                }

                break;
            }


            case "message":
            case "activationmessage":
                break;
            }
            var fmt = Localization.getStringLocalized(langcode, "basic/config/success");
            var vl1 = string.Format(fmt, args[0], args[1]);
            await message.replySendMessage(vl1);
        }
Beispiel #14
0
 public virtual async void Execute(TGMessage message, GroupConfigurationObject gco, string langcode)
 {
 }
        public static bool autorem(TGMessage msg, TGUser usr)
        {
            var chat   = msg.chat;
            var enable = XenforceRoot.getGroupConfigurationValue(chat, "autoban", true);

            if (!enable)
            {
                return(false);
            }                              // Not enabled.
            var qsc  = "SELECT * FROM xenf_autokick WHERE `group`={0} AND `user`={1}";
            var rqry = string.Format(qsc, chat.id, usr.id);

            MySql.Data.MySqlClient.MySqlDataReader datar;
            SQLQueryInstance QueryInst;
            var queryok = SQL.Query(rqry, out QueryInst);

            if (QueryInst != null && QueryInst.reader.HasRows) // They've already been kicked before.
            {
                QueryInst.Finish();
                return(false);
            }
            if (QueryInst != null)
            {
                QueryInst.Finish();
            }

            var UserID         = usr.id;
            var GroupID        = msg.chat.id;
            var user_name_full = usr.first_name + " " + usr.last_name;
            var userscore      = 500;

            for (int i = 0; i < user_name_full.Length; i++)
            {
                var wtf = user_name_full[i];
                if (wtf > 0xAF)
                {
                    userscore += 5;
                }
                else if (wtf < 0x80)
                {
                    userscore -= 3;
                }
            }
            var picons = Telegram.getNumProfilePhotos(usr);

            userscore -= picons * 45;
            if (picons == 0)
            {
                userscore += 30;
            }
            if (userscore > 488)
            {
                Telegram.kickChatMember(chat, usr, 120);
                if (XenforceRoot.getGroupConfigurationValue(chat, "announcekicks", 1) > 0)
                {
                    msg.delete();
                    var msgr = msg.replySendMessage(user_name_full + " was automatically removed from the chat -- I think they're a bot.");
                    XenforceRoot.AddCleanupMessage(chat.id, msgr.message_id, 30);
                    var statement =
                        string.Format("INSERT INTO xenf_autokick (`group`,`user`,`when`,`why`) VALUES ({0},{1},{2},'{3}')",
                                      GroupID,
                                      UserID,
                                      Helpers.getUnixTime(),
                                      "Bot Score too high"
                                      );
                    int ra = 0;
                    SQL.NonQuery(statement, out ra);
                    if (ra < 1)
                    {
                        Console.WriteLine("Creating autorem incident failed failed. No SQL rows affected.");
                        var cmsg = msg.replySendMessage("AutoremAddIncident() FAILED:\n\n Info:\n\n" + SQL.getLastError());
                        XenforceRoot.AddCleanupMessage(chat.id, cmsg.message_id, 120);
                    }
                }
                return(true);
            }
            return(false);
        }
        public static bool namefilter(TGMessage msg, TGUser usr)
        {
            var chat   = msg.chat;
            var enable = XenforceRoot.getGroupConfigurationValue(chat, "autobannames", true);

            if (!enable)
            {
                return(false);
            }                              // Not enabled.
            var qsc  = "SELECT * FROM xenf_autokick WHERE `group`={0} AND `user`={1}";
            var rqry = string.Format(qsc, chat.id, usr.id);

            MySql.Data.MySqlClient.MySqlDataReader datar;
            SQLQueryInstance QueryInst;
            var queryok = SQL.Query(rqry, out QueryInst);

            if (QueryInst != null && QueryInst.reader.HasRows) // They've already been kicked before.
            {
                QueryInst.Finish();
                return(false);
            }
            if (QueryInst != null)
            {
                QueryInst.Finish();;
            }

            var UserID         = usr.id;
            var GroupID        = msg.chat.id;
            var user_name_full = usr.first_name + " " + usr.last_name;

            var userscore = 0;

            for (int i = 0; i < ShitNames.Length; i++)
            {
                var q = user_name_full.Contains(ShitNames[i]);
                if (q)
                {
                    userscore++;
                }
            }
            if (userscore > 0)
            {
                Telegram.kickChatMember(chat, usr, 120);
                if (XenforceRoot.getGroupConfigurationValue(chat, "announcekicks", 1) > 0)
                {
                    msg.delete();
                    var msgr = msg.replySendMessage(user_name_full + " removed -- name matches common bot.");
                    XenforceRoot.AddCleanupMessage(chat.id, msgr.message_id, 30);
                    var statement =
                        string.Format("INSERT INTO xenf_autokick (`group`,`user`,`when`,`why`) VALUES ({0},{1},{2},'{3}')",
                                      GroupID,
                                      UserID,
                                      Helpers.getUnixTime(),
                                      "Name is in blacklist"
                                      );
                    int ra = 0;
                    SQL.NonQuery(statement, out ra);
                    if (ra < 1)
                    {
                        Console.WriteLine("Creating autorem incident failed failed. No SQL rows affected.");
                        var cmsg = msg.replySendMessage("AutoremAddIncident() FAILED:\n\n Info:\n\n" + SQL.getLastError());
                        XenforceRoot.AddCleanupMessage(chat.id, cmsg.message_id, 120);
                    }
                }
                return(true);
            }
            return(false);
        }
Beispiel #17
0
 public static void sendHelp(TGMessage data, string[] arguments)
 {
     data.replySendMessage("Xen Enforce Bot V3.1.4.5 (Serg--- Circle?)\n\nDocumentation on commands is available at https://www.github.com/XAYRGA/XENFCoreSharp/");
 }