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 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); }
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 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>"); } }
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); }
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 captcha_CheckExpired() { MySql.Data.MySqlClient.MySqlDataReader cur; SQLQueryInstance QueryInst; var ss = SQL.Query("SELECT * FROM xen_activations WHERE activated=0 OR activation_checked=0", out QueryInst); if (!ss) { Console.WriteLine("Query for activation checks failed {0}", SQL.getLastError()); if (QueryInst != null) { QueryInst.Finish(); } return(false); } Stack <CaptchaActivationIndex> captchaActivationIndices = new Stack <CaptchaActivationIndex>(1024); // hax? // totally hax, I have to pull group configuration to check and see if the group has specific features enabled. // But I can't do that if I already have an SQL cursor open. So i'll have to read all of the results of it cur = QueryInst.reader; // before I can make a call to get group configuration. var ib = 0; while (cur.Read()) { ib++; // Console.WriteLine(ib); var b = new CaptchaActivationIndex { index = (long)cur["index"], activation_id = (string)cur["activation_id"], activated = (int)cur["activated"], forwho = (long)cur["forwho"], group = (long)cur["group"], whencreated = (long)cur["whencreated"], activation_checked = (int)cur["activation_checked"], username = (string)cur["username"], actmessage = (long)cur["actmessage"] }; captchaActivationIndices.Push(b); } QueryInst.Finish(); // close it up. for (int i = 0; i < captchaActivationIndices.Count; i++) { var CurrentActivation = captchaActivationIndices.Pop(); var chat = new TGChat(); var user = new TGUser(); user.id = CurrentActivation.forwho; chat.id = CurrentActivation.group; var kicktime = XenforceRoot.getGroupConfigurationValue(chat, "kicktime", 30); var announce = XenforceRoot.getGroupConfigurationValue(chat, "announcekicks", 1); var unmute = XenforceRoot.getGroupConfigurationValue(chat, "muteuntilverified", false); //Console.WriteLine("Wtf {0} {1}",CurrentActivation.activated,CurrentActivation.activation_checked); if (CurrentActivation.activated == 0) { if (CurrentActivation.whencreated < Helpers.getUnixTime() - (kicktime * 60)) { Telegram.deleteMessage(chat, CurrentActivation.actmessage); Telegram.kickChatMember(chat, user, 0); // kick them from the chat. Console.WriteLine("Remove user?"); var rar = 0; var ok = SQL.NonQuery(string.Format("DELETE FROM xen_activations WHERE activation_id='{0}'", CurrentActivation.activation_id), out rar); if (announce > 0) { var mymessage = Telegram.sendMessage(chat, CurrentActivation.username + " was removed from the chat for not completing the CAPTCHA."); if (mymessage != null) { XenforceRoot.AddCleanupMessage(chat.id, mymessage.message_id, 30); // Clean up after 30 seconds. } } } } else if (CurrentActivation.activated == 1 && CurrentActivation.activation_checked == 0) { Telegram.deleteMessage(chat, CurrentActivation.actmessage); var Oldmsg = CurrentActivation.username + ", thanks for verifying you're not a robot."; var actiMsg = XenforceRoot.getGroupConfigurationValue(chat, "activationmessage", "%NAME, thanks for verifying you're not a robot."); if (actiMsg == null || actiMsg.Length < 5) { actiMsg = Oldmsg; } actiMsg = actiMsg.Replace("%NAME", CurrentActivation.username); var mymessage = Telegram.sendMessage(chat, actiMsg); var ra = 0; var ok = SQL.NonQuery("UPDATE xen_activations SET activation_checked=1 WHERE activation_id='" + SQL.escape(CurrentActivation.activation_id) + "'", out ra); if (!ok) { Console.WriteLine("Updating activation message failed! Might spam!!!?"); } if (mymessage != null) { XenforceRoot.AddCleanupMessage(chat.id, mymessage.message_id, 30); // Clean up after 30 seconds. } if (unmute) { Telegram.restrictChatMember(chat, user, 0, true, true, true, true); } } } return(true); }
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); }