Bots Home
|
Create an App
ddlgxslayed bot
Author:
ddlgxslayed
Description
Source Code
Launch Bot
Current Users
Created by:
Ddlgxslayed
// JavaScript live Document var botNam = "Team Let It Go!"; var version = "1C"; var botDat = "4 Nov 2014"; // fixed filters and stdicons thanks and Flag in Launch // clubordering/adding and multi-solo-groups and noGremflag // colourbot by Lonequark /* problem to solve in any room, greys post the same inappropriate emoticons they never learn. SO we can block greys from posting emotes, capitals, repeated keys, and phrases like open boobs or feeeet but then there are some good greys who only post appropriate emotes. instead of a conflict - make it a feature -make good greys into blue ! (without sending them tokens!) ************** AS OF 8th Aug THE COLOUR CHANGES DO NOT DISPLAY ******** models and mods can 'enlist' selected greys to have the 'has_tokens' attribute It also allows anyone to be made 'green' or 'red' without actually being a fanclub member or moderator Think of the times you have seen "I wish I was red!" well - make the whiners 'red'! (when they allow it to display again!) Every message is tested and if from a 'listed' user that user is given the tags of a different colour Added: 2 lists of extra vip's that can only be made by model - they get extra prefix in chat Added: emote prefix indicating gender (conflicts with Apps that block emotes) so have to filter emotes here. Added the rot13 nonsense filter to garble Added Notice with /REPEAT or /NOTICE and /REPEATTIME <SECONDS> commands prefixed with server time Added: Check for TipClubs and remind Model to add new ones next time Added switches for gender icon Added 'flag' list for badword users, 'hide' list for Invisible users Added 34 std-icons that are exempt from blocking. Added check so blues do not get autosilenced. Just flagged once. Added a check that target of colour change is Exempt. (Exec Club or coloured name) Added a Verbose flag to cut out command notices copied to broadcaster. Added Limit to stop Blues from giving commands and Added Quell to stop exec/coloured names from giving commands Added Badword editor commands Added prefix check for commands passed through other Apps Added commands Gong and Spank - to be arranged as flag and hide options Added Fliptext Added mychat colour and user numbers Announces entries even with no tokens. Added background colours for exec1 and 2 Added myface fro avatars thanks to tablesalt90 for the first Added myback for exec backgrounds (UNDOCUMENTED) Added myfont for experimental recoding (UNDOCUMENTED) Remove whitespace from exec2 users list in startup. Made Blue-on-wheat text for secret messages Fixed user pm list to use font number instead of face number so faces can be text Added multiple groups to Exec2 users and allow them non-standard avatars Fixed groups to display colournames Multiple levels in both exec groups, exec1 for exact tokens, exec2 with betterthan value Now verbose shows blapped text to host Lists of users and pm now have 10240 char limit to allow 640 users per line av name length = 9 Cleaned up startup screen to show optional fields (all are optional) now have bump group functions for adding and subtracting /POINTS (UNDOCUMENTED) ----(or /tokes or /what?) added splat and crazy fonts and experimental standard fons as tables, reduced others to tables in initialisation. (standard fonts - Comic Sans, etc display to Chrome Host, not to others) fixed "already 'list'ed" bug and "will be silenced" instead of "have been silenced" removed invisibe (gender=I) tests creating unnecessary messages. Invisible is now silent unless Verbose is ON added curse word detector and uncurse tipvalue added potentially-selectable traceability to enlist function (separate from /verbose on) added test for ! and other unknown commands and passed them unhindered for next bot/app removed problem that admins cannot be ghosts made /PM to host bold- rather than weedy font removed double ghost avatar If the Spam-filter App is also run, it *should* get the blue attribute but it may have to enable emotes. so emotes are blocked/stripped here (by changing the colon) /HELP to get Help on any command (except /help list ) */ cb.settings_choices = [ // { name: 'user_notice', type: 'str', minLength: 0, maxLength: 1000, label: "notice to users [, repeat time]", required: false}, // garble and notices do not work yet // { name: 'hide_users', type: 'str', minLength: 0, maxLength: 10240, label: "current hidden users (separated by a space)", required: false, defaultValue: 'o'}, // { name: 'flag_users', type: 'str', minLength: 0, maxLength: 10240, label: "current flagged users (separated by a space)", required: false, defaultValue: 'o'}, // { name: 'garble_users', type: 'str', minLength: 0, maxLength: 10240, label: "current garbled users (separated by a space)", required: false, defaultValue: 'o'}, // { name: 'ghost_users', type: 'str', minLength: 0, maxLength: 10240, label: "current ghost users (separated by a space)", required: false, defaultValue: 'o'}, // { name: 'grey_users', type: 'str', minLength: 0, maxLength: 10240, label: "current grey users (separated by a space)", required: false, defaultValue: 'o'}, // { name: 'blue_users', type: 'str', minLength: 0, maxLength: 10240, label: "current blue users (separated by a space)", required: false, defaultValue: 'o'}, // { 'choice1': 'Yes', 'choice2': 'No', 'defaultValue': 'Yes', 'label': 'Allow non-english characters in chat', 'name': 'nonEnglish', 'required': false, 'type': 'choice'}, { name: 'red_users', type: 'str', minLength: 0, maxLength: 10240, label: "_____________YOU=CAN=LEAVE=THESE=BLANK=AT=FIRST__________\n" + "list of names of current FAKE RED users" + "(separated by commas)....\nA.", required: false }, { name: 'green_users', type: 'str', minLength: 0, maxLength: 10240, label: "___________________________________________________________________\n" + "list of names of current FAKE GREEN users (separated by commas)....B.", required: false }, { name: 'exec1_flag', type: 'str', minLength: 0, maxLength: 10240, label: "==========================================================\n" + "exec1 SILVER Club TAGs or icons with join values and ,Back_colours.[XX]", required: false}, { name: 'exec1_users', type: 'str', minLength: 0, maxLength: 10240, label: "......................................................................................................................\n" + "list of names of current exec1 silver users (separated by commas)....C.", required: false }, { name: 'exec2_flag', type: 'str', minLength: 0, maxLength: 10240, label: "===========================================================\n" + "exec2 GOLD Club TAGs or icons with join values and ,Back_colours.[YY]", required: false }, { name: 'exec2_users', type: 'str', minLength: 0, maxLength: 10240, label: '......................................................................................................................\n' + 'list of names of current exec2 gold users (separated by commas)....D.', required: false }, { name: 'bad_words', type: 'str', minLength: 0, maxLength: 10240, label: '==========================================================\n' + '============YOU=CAN=LEAVE=THIS=BLANK=FOR=NOW==========>\n' + 'phrases you want to block (separated by commas)', defaultValue: 'ugly,fat,show bo*,:keno', required: false} ]; if(cb.room_slug == "caidence23") { var eng = true; var hazlist = false; var gender = ""; var colour = ""; var showgender = true; var tipBanner =true; var myFlag=":genderX"; // // var blapped = false; var verbose = false; // host *does not* see all commands given var myTime = "Pacific"; var Times = ["None","Hawaii","Alaska","Pacific","Mountain","Central","Eastern","Atlantic","Newfoundland","Greenland","CUT2", "Azores", "Iceland", "UK","Central Europe", "Bucharest", "Baghdad", "Mocow","Tashkent", "Dhaka", "Bangkok", "Perth", "Tokyo", "Adelaide", "Sydney", "Vladivostok", "Aukland"]; // var Times = ["None","Hawaii","Alaska","Pacific","Mountain","Central","Eastern","Atlantic","Iceland","UK","Sydney"]; // 13 -10 -8 -7 -6 -5 -4 -3 0 +1 +11 var unlimit = true; // blues have powers var empower = true; // just Admins have powers var empowered = false; // this user has powers var traces = ["blobbed","blued","cursed","exec1ed","exec2ed","flurried","flipped","floured","garbled","ghosted","greened","greyed","frozen","lilaced","purpled","redded","chilled"]; // see in public - not listed or entered var trace = true; var splitter="Botname:|Slot #:|CURSE:|SPLAT:|FLAG:|GONG:|SPANK:|HIDE:|BLOB:|FLIP:|BLAP:|GHOST:|GARBLE:|GREY:|BLUE:|GREEN:|VIP:|RED:|PURPLE:|LILAC:|CREW:|SILVER:|EXEC1:|ZOMBIES:|GOLD:|EXEC2:|Red A:|Green B:|Exec1tag XX:|Exec1 C:|Exec2tag YY:|Exec2 D:|Bad words:|NOTICE:|GREMLIN:|ICON:|MYTHANKS:|MYFLAG:|NOBANNER:|NOGENDER:|NOBB:|NOC2C:|NOFEET:"; var all_users = []; // list of users var colours = []; // list of chat colours var faces =[]; // avatars by tablesalt90 var fonts=[]; // experimental fonts var backs=[]; // list of (admin) backgrounds var gremlins=[]; //list of emote blockers var totalTips=[]; var lastTotal=[]; var timers=[]; var thanksMessage="Many Thanks "; var thanksDelay=8; // seconds before tip response triggers. var showThanks = true; // var colournames=[]; var avtable=":aVatars"; var avrows = ["female","male","hero","halloween","schulz","halloween","pilgrim","xmas","pnuts","2014"]; var avatar=""; var hides = []; var flags=[]; var mark="\u00AC"; var splat = "\u0489"; var splut = "\u0332"; var warmBack = '#F5DEB3' ; //wheat var noBB = true; var noC2C = false; var noFeet = false; // logic - gremflag means grey emotes are blocked (gremmed) and flagged // NoGremflag means blocked but NOT flagged .. soo var noGremflag = false; // meaning grey emotes are replaced with gremlin and are flagged var mess=[]; var cursed=[]; var uncurse=1; var florals=[]; var flips=[]; var blobs=[]; var garbles=[]; var ghosts=[]; var greys=[]; var blues=[]; var reds=[]; var greens=[]; var lilacs=[]; var purples=[]; var golds=[]; var exec1flag =[]; var exec1tag =[]; var exec1bck = []; // vals must be in descending order var exec1val = []; // each user is put in group for val var exec1s= []; var exec1sgrp =[]; var exec1count = {}; var reserve1=[]; //var soloGroup1 = false; // flag split to give tags and colours var exec2flag =[]; var exec2tag =[]; var exec2bck = []; // vals must be in descending order var exec2val = []; // each user is put in group for val var exec2s= []; var exec2sgrp =[]; var exec2count = {}; var reserve2=[]; //var soloGroup2 = false; var group = ""; var isMe=false; ///var isFlag=false; var isCursed=false; var isGarble=false; var isGhost=false; var isGrey=false; var isBlue=false; var isAdmin=false; var isRed=false; var isGreen=false; var isExec1=false; var isExec2=false; var isLilac=false; var isPurple=false; var isGold=false; var isModel=false; var Target=[]; var targetIsExempt=false; var badwords=[]; var cursewords=[]; var clean = []; var words = []; var badword = ""; var rex10 = ""; var params=[]; var isPrivate = false; // does not work yet var repeat_text=""; var notices=[]; var guessGame = false; var guessCost = 5; var guessMatch = "mouse"; var challengeCost = []; var challengeText = []; var repeat_time=120; var prefix = []; var isXspam = false; var isSecret = false; var isCmd = false; var digits = new RegExp("\\b\\d+\\b"); var A0=["ybardh.nex","ybardhnex_gur_ybaryl_dh.nex","jbooyl.png"]; var revi="\u202b\u202c\u202d\u202e\u202a\u202b\u202c\u202d\u202e\u0489Point in case."; var stdicons = [":lol",":lmao",":oo",":kissy",":gangsta",":yawn",":innocent",":help",":rofl",":bow",":upset",":what",":hearts",":yes",":thumbsup",":hello",":crazy",":smoke",":bounce",":angel",":woot",":wink",":thumbup",":thumbdown",":smile",":ohmy",":mellow",":roll",":huh",":drool",":cry",":cool",":confused",":curse",":blush",":clap"]; var charset=[[]]; var deck=[]; var cardcount=0; var fontnames=["wide","bold","italic","bolditalic","script","boldscript","fraktur","doublestruck","boldfraktur","sansserif","sansserifbold","sansserifitalic","sansserifbolditalic","monospace","cursive","subscript","crazy","weird","odd","blob","blap","flip","floral","arial","bookman old style","comic sans","courier","lucida","palantino","tahoma","times new roman"]; var ColourNames=["AliceBlue","AntiqueWhite","Aqua","Aquamarine","Azure","Beige","Bisque","Baker'sChoclate","Black","BlanchedAlmond","Blue","BlueViolet","Brass","BrightGold","Bronze","BronzeII","Brown","BurlyWood","CadetBlue","Chartreuse","Chocolate","CoolCopper","Copper","Coral","CornflowerBlue","Cornsilk","Crimson","Cyan","DarkBlue","DarkBrown","DarkCyan","DarkGoldenRod","DarkGray","DarkGreen","DarkGreenCopper","DarkKhaki","DarkMagenta","DarkOliveGreen","DarkOrange","DarkOrchid","DarkPurple","DarkRed","DarkSalmon","DarkSeaGreen","DarkSlateBlue","DarkSlateGray","DarkTan","DarkTurquoise","DarkViolet","DarkWood","DeepPink","DeepSkyBlue","DimGray","DodgerBlue","DustyRose","FadedBrown","Feldspar","FireBrick","FloralWhite","ForestGreen","Fuchsia","Gainsboro","GhostWhite","Gold","GoldenRod","Gray","Green","GreenCopper","GreenYellow","HoneyDew","HotPink","HunterGreen","IndianRed","Indigo","Ivory","Khaki","Lavender","LavenderBlush","LawnGreen","LemonChiffon","LightBlue","LightCoral","LightCyan","LightGoldenRodYellow","LightGray","LightGreen","LightPink","LightSalmon","LightSeaGreen","LightSkyBlue","LightSlateGray","LightSteelBlue","LightWood","LightYellow","Lilac","Lime","LimeGreen","Linen","Magenta","MandarinOrange","Maroon","MediumAquaMarine","MediumBlue","MediumForestGreen","MediumGoldenrod","MediumOrchid","MediumPurple","MediumSeaGreen","MediumSlateBlue","MediumSpringGreen","MediumTurquoise","MediumVioletRed","MediumWood","MidnightBlue","MintCream","MistyRose","Moccasin","NavajoWhite","Navy","NavyBlue","NeonBlue","NeonPink","NewMidnightBlue","NewTan","OldGold","OldLace","Olive","OliveDrab","Orange","OrangeRed","Orchid","PaleGoldenRod","PaleGreen","PaleTurquoise","PaleVioletRed","PapayaWhip","PeachPuff","Peru","Pink","Plum","PowderBlue","Purple","Quartz","Red","RichBlue","RosyBrown","RoyalBlue","SaddleBrown","Salmon","SandyBrown","Scarlet","SeaGreen","SeaShell","SemiSweetChoclate","Sienna","Silver","SkyBlue","SlateBlue","SlateGray","Snow","SpicyPink","SpringGreen","SteelBlue","SummerSky","Tan","Teal","Thistle","Tomato","Turquoise","VeryDarkBrown","VeryLightGrey","Violet","VioletRed","Wheat","White","WhiteSmoke","Yellow","YellowGreen"]; //lilac 94 var colourvalues = ['#F0F8FF','#FAEBD7','#00FFFF','#7FFFD4','#F0FFFF','#F5F5DC','#FFE4C4','#5C3317','#000000','#FFEBCD','#0000FF','#8A2BE2','#B5A642','#D9D919','#8C7853','#A67D3D','#A52A2A','#DEB887','#5F9EA0','#7FFF00','#D2691E','#D98719','#B87333','#FF7F50','#6495ED','#FFF8DC','#DC143C','#00FFFF','#00008B','#5C4033','#008B8B','#B8860B','#A9A9A9','#006400','#4A766E','#BDB76B','#8B008B','#556B2F','#FF8C00','#9932CC','#871F78','#8B0000','#E9967A','#8FBC8F','#483D8B','#2F4F4F','#97694F','#00CED1','#9400D3','#855E42','#FF1493','#00BFFF','#696969','#1E90FF','#856363','#F5CCB0','#D19275','#B22222','#FFFAF0','#228B22','#FF00FF','#DCDCDC','#F8F8FF','#FFD700','#DAA520','#808080','#008000','#527F76','#ADFF2F','#F0FFF0','#FF69B4','#215E21','#CD5C5C','#4B0082','#FFFFF0','#F0E68C','#E6E6FA','#FFF0F5','#7CFC00','#FFFACD','#ADD8E6','#F08080','#E0FFFF','#FAFAD2','#D3D3D3','#90EE90','#FFB6C1','#FFA07A','#20B2AA','#87CEFA','#778899','#B0C4DE','#E8C2A6','#FFFFE0','#BE6AFF','#00FF00','#32CD32','#FAF0E6','#FF00FF','#E47833','#800000','#66CDAA','#0000CD','#6B8E23','#EAEAAE','#BA55D3','#9370DB','#3CB371','#7B68EE','#00FA9A','#48D1CC','#C71585','#A68064','#191970','#F5FFFA','#FFE4E1','#FFE4B5','#FFDEAD','#000080','#23238E','#4D4DFF','#FF6EC7','#00009C','#E1C79E','#CFB53B','#FDF5E6','#808000','#6B8E23','#FFA500','#FF4500','#DA70D6','#EEE8AA','#98FB98','#AFEEEE','#DB7093','#FFEFD5','#FFDAB9','#CD853F','#FFC0CB','#DDA0DD','#B0E0E6','#800080','#D9D9F3','#FF0000','#5959AB','#BC8F8F','#4169E1','#8B4513','#FA8072','#F4A460','#8C1717','#2E8B57','#FFF5EE','#6B4226','#A0522D','#C0C0C0','#87CEEB','#6A5ACD','#708090','#FFFAFA','#FF1CAE','#00FF7F','#4682B4','#38B0DE','#D2B48C','#008080','#D8BFD8','#FF6347','#40E0D0','#5C4033','#CDCDCD','#EE82EE','#CC3299','#F5DEB3','#FFFFFF','#F5F5F5','#FFFF00','#9ACD32']; // var inFacts = ["@ Rubber bands last longer when refrigerated.", "@ Peanuts are one of the ingredients of dynamite.", "@ There are 293 ways to make change for a dollar.", "@ The average person's left hand does 56% of the typing.", "@ A shark is the only fish that can blink with both eyes.", "@ There are more chickens than people in the world.", "@ The longest one-syllable word in the English language is 'screeched.'", "@ On a Canadian two-dollar bill, the flag flying over then Parliament building is an American flag.", "@ All of the clocks in the movie 'Pulp Fiction are stuck on 4:20.", "@ No word in the English language rhymes with month, orange, silver or purple.", "@ 'Dreamt' is the only English word that ends in the letters 'mt'.", "@ Almonds are a member of the peach family.", "@ There are only 4 words in the English language which end in 'dous' : tremendous, horrendous, stupendous, and hazardous.", "@ A cat has 32 muscles in each ear.", "@ An ostrich's eye is bigger than its brain.", "@ Tigers have striped skin, not just striped fur.", "@ In most advertisements, the time displayed on a watch is 10:10.", "@ Al Capone's business card said he was a used furniture dealer.", "@ The characters Bert & Ernie on Sesame Street were named after Bert the cop and Ernie the taxi driver in Frank Capra's 'It's a Wonderful Life.'", "@ A dragonfly has a life span of 24 hours.", "@ A goldfish has a memory span of 3 seconds.", "@ It's impossible to sneeze with your eyes open.", "@ The giant squid has the largest eyes in the world.", "@ In England, the Speaker of the House is not allowed to speak.", "@ The microwave was invented after a researcher walked by a radar tube and a chocolate bar melted in his pocket.", "@ The average person falls asleep in seven minutes.", "@ There are 336 dimples on a regulation golf ball.", "@ The average human eats 8 spiders in their lifetime at night.", "@ A cockroach can live nine days without its head before it starves to death.", "@ A polar bear's skin is black. Its fur is not white, but actually clear.", "@ Elvis had a twin brother named Aaron, who died at birth, which is why Elvis' middle name was spelled Aron: in honor of his brother. It is also misspelled on his tomb stone.", "@ Donald Duck comics were banned in Finland because he doesn't wear pants.", "@ More people are killed by donkeys annually than are killed in plane crashes.", "@ Stewardesses is the longest word typed with only the left hand.", "@ Shakespeare invented the words 'assassination' and 'bump.'", "@ Marilyn Monroe had 6 toes on one foot.", "@ If you keep a goldfish in the dark room, it will eventually turn white.", "@ Women blink nearly twice as much as men.", "@ Right-handed people live, on average, nine years longer than left-handed people do.", "@ The sentence 'the quick brown fox jumps over the lazy dog' uses every letter in the English language.", "@ The names of the continents all end with the same letter with which they start.", "@ TYPEWRITER is the longest word that can be made using the letters on only one row of the keyboard.", "@ The word racecar and kayak are the same whether they are read left to right or right to left.", "@ A snail can sleep for 3 years.", "@ American Airlines saved $40,000 in 1987 by eliminating one olive from each salad served in first-class.", "@ The electric chair was invented by a dentist.", "@ Vatican City is the smallest country in the world with a population of 1,000 and a size of 108.7 acres.", "@ 'I am.' is the shortest complete sentence in the English language.", "@ No president of the United states was an only child.", "@ The average chocolate bar has 8 insects' legs in it.", "You breathe on average about 5 million times a year.", "Months that begin on a Sunday always have a Friday the 13th in them.", "You are born with 300 bones, by the time you are an adult you will have 206.", "The average lead pencil will write a line about 35 miles long or write approximately 50,000 English words.", "One fourth of the bones in your body are in your feet.", "The average person spends 2 weeks of their lifetime waiting for the light to change from red to green.", "It takes more calories to eat a piece of celery than the celery has in it.", "The present population is expected to rise to 15 Billion by the year 2080.", "The largest recorded snowflake was 15 inches wide and 8 inches thick.", "The tip of a bullwhip moves so fast that the sound it makes is actually a tiny sonic boom.", "Native Americans used to name their children after the first thing they saw as they left their tepees after their children were born, hence the names Sitting Bull and Running Water.", "The Matami Tribe of West Africa play their own version of football, instead of a normal football they use a human skull.", "Coca-Cola would be green if the food colorant wasn't added.", "During the 17th Century, the Sultan of Turkey ordered his whole harem of women to be drowned and replaced with a new one.", "Coffins used for cremation are usually made with plastic handles.", ""Almost" is the longest word in the English language with all the letters in alphabetical order.", "Human thigh bones are stronger than concrete.", "Cockroaches can live several weeks with their heads cut off.", "It is impossible to sneeze with your eyes open. We dare you, give it a try!", "A Ten Gallon Hat will only hold 3/4 of a Gallon.", "Of all the words in the English language, the word 'SET' has the most definitions.", "It is against the law to burp, or sneeze inside a church in Nebraska.", "In 1386 a pig in France was executed by public hanging for the murder of a child.", "Earth is the only planet not named after a god.", "The world's oldest piece of chewing gum is over 9,000 years old!", "Scientists have tracked butterflies travelling over 3,000 miles.", "The silkworm consumes 86,000 times its own weight in 56 days.", "If removed from the stress of the modern world, the average human would sleep about 10 hours a day.", "To produce a single pound of honey, a single bee would have to visit 2 million flowers.", "A colony of 500 bats can eat approximately 250,000 insects in an hour.", "One in Five adults believe that aliens are hiding in our planet disguised as humans.", "Travelling masseuses in ancient Japan were required by law to be blind.", "The bloodhound is the only animal whose evidence is admissible in court.", "James Fixx, the man who popularized jogging in America died of a heart attack while running.", "The average American spends about a year and a half of his or her life watching commercials on television. What are you doing?! Get out and spend that year and a half doing something productive!", "Ancient Greeks practiced a form (ineffective) of birth control that consisted of having a woman hold her breath, making her squat, and sneezing.", "The FDA permits up to 5 whole insects per 100 grams of apple butter.", "There are no naturally occurring blue foods, even blueberries are purple!", "The skeleton of Jeremy Bentham is present in all the important meetings of the University of London.", "The elephant is the only mammal that can't jump!", "Just like fingerprints, everyone's tongue is different.", "The longest recorded flight of a chicken is 13 seconds.", "400 Quarter Pounders can be made from a single cow.", "Only 38% of Americans eat breakfast every day.", "111,111,111 x 111,111,111 = 12,345,678,987,654,321", "11% of the World is left handed.", "A 'Jiffy' is the scientific name for 1/100th of a second.", "A Boeing 747's wingspan is longer than the Wright brothers' first flight.", "A broken clock is right two times a day.", "A duck's quack doesn't echo anywhere, no one knows why."]; //cb.log("1.Users="+cb.users); ////////////////////////////////////////////////////////// //cb.onShowStatus(function(user) { // cb.sendNotice("User "+user); // }); ////////////////////////////////////////////////////////// cb.onEnter(function(user) { if (!hazlist) { init(); cb.sendNotice("SlotFail"); } // cb.log("2.Enter"+user); if ((user['user']!=cb.room_slug)) cb.sendNotice('Welcome ' + user['user'] + '. Dont forget to say Hi to '+cb.room_slug,user['user']); // if ((user['user']=="jtbiggles")) cb.sendNotice(botNam+' says: Put your analyst on danger money, ' + user['user'] + ' is here',"",warmBack, '#FF0000',"bold"); if ((all_users.indexOf(user['user'])==-1)) { enlist(botNam,all_users,"entered",user['user'].toLowerCase()); colours.push(""); backs.push(-1); fonts.push(-1); faces.push(-1); // default text colour if zero then will not be changed totalTips.push(0); lastTotal.push(0); timers.push("");} else { if (fonts[all_users.indexOf(user['user'])]<-1) fonts[all_users.indexOf(user['user'])]=fonts[all_users.indexOf(user['user'])]+100; } // cb.sendNotice("You are user number:") if (( user['user']== cb.room_slug ) ||(user['is_mod']==true) ||( user['in_fanclub']==true) ||(user['has_tokens']==true) ||(user['tipped_recently']==true) ||(user['tipped_alot_recently']==true) || (user['tipped_tons_recently']==true) || (exec2s.indexOf(user['user'])!=-1) ||(exec1s.indexOf(user['user'])!=-1) ||(reds.indexOf(user['user'])!=-1) ||(lilacs.indexOf(user['user'])!=-1) ||(purples.indexOf(user['user'])!=-1) ||(greens.indexOf(user['user'])!=-1) ||(blues.indexOf(user['user'])!=-1)) cb.sendNotice("You are user number:"+all_users.indexOf(user['user']),user['user']); else { cb.sendNotice("You are GREY. Your entered user number is:"+all_users.indexOf(user['user'])+". Please DO NOT USE CAPITALS, repeated keys, non-standard emoticons or words which are banned here. You will be warned, then silenced after being flagged 3 times, shown by a flaming avatar :Sauron ",user['user']); if ((verbose == true)) { cb.sendNotice( user['user'] + ' (no tokens) has entered ',cb.room_slug); } } }); ///////////////////////////////////////////////////////// cb.onLeave(function(user) { if (!hazlist) { init(); cb.sendNotice("SlotFail"); } if (all_users.indexOf(user['user'])==-1) { if (verbose == true) cb.sendNotice('Bye, silent user ' + user['user'] + '!',cb.room_slug); for (var j=0; j<A0.length; j++) cb.sendNotice("User "+user['user']+" left ",font(A0[j].replace(".",""),"blap"),warmBack , '#0000FF', "bold","" ); } else fonts[all_users.indexOf(user['user'])]=fonts[all_users.indexOf(user['user'])]-100; }); ///////////////////////////////////////////////////////// cb.onMessage(function (msg) { // [(\[{][+-]?\\d+[)\]}] bracketted digits // [(\[{].*[)\]}] bracketted text var nondigits = new RegExp("[^a-z_0-9]+-?\\d+[^a-z_0-9]","gi"); // msg.forEach(function(x) {entry[x] = (exec2count[x] || 0)+1; }); // var out = ''; for (var x in msg) { out += x + ': ' + msg[x] + ', '; } // cb.log("msg:"+out); if (!hazlist) { init(); cb.sendNotice("SlotFail"); } // eng = true; if ((all_users.indexOf(msg['user'])==-1)) { enlist(botNam,all_users,"entered",msg['user'].toLowerCase()); colours.push(""); backs.push(-1); fonts.push(-1); faces.push(-1); // default text colour if zero then will not be changed totalTips.push(0); lastTotal.push(0); timers.push("");} // gender=msg['gender'].toUpperCase(); // if hidden without flag then Invisible if ((hides.indexOf(msg['user'])!=-1) &&(flags.indexOf(msg['user'])==-1)) { gender="I"; } // if flagged otherwise if ((flags.indexOf(msg['user'])!=-1) ) { gender="X"; } // (Note:garble after process later) // if (garbles.indexOf(msg['user'])!=-1) msg['m']=rot13(msg['m']); if (ghosts.indexOf(msg['user'])!=-1) { gender="G"; cb.log("5.isPrivate="+isPrivate); } // tests lists to change values from chat message if (greys.indexOf(msg['user'])!=-1) { // any mod or fan has been targetted as grey gets ungreyed // otherwise anyone who got tokens but is in the grey list - gets greyed if (( msg['user']== cb.room_slug )||(msg['is_mod']==true)||( msg['in_fanclub']==true)) delist(botNam ,greys,"greyed",msg['user'].toLowerCase()); else { msg['has_tokens'] = false; msg['tipped_recently'] = false; } } if (garbles.indexOf(msg['user'])!=-1) { // any mod or fan has been targetted as garbled gets ungarbled if (( msg['user']== cb.room_slug )||(msg['is_mod']==true)||( msg['in_fanclub']==true)) delist(botNam ,garbles,"garbled",msg['user'].toLowerCase()); } // var isGold=false; if (blues.indexOf(msg['user'])!=-1) { msg['has_tokens'] = true;} if (reds.indexOf(msg['user'])!=-1) { msg['is_mod'] = true;} if (greens.indexOf(msg['user'])!=-1) { msg['in_fanclub'] = true;} if (exec1s.indexOf(msg['user'])!=-1) { msg['tipped_alot_recently'] = true;} if (exec2s.indexOf(msg['user'])!=-1) { msg['tipped_tons_recently'] = true;} if (lilacs.indexOf(msg['user'])!=-1) { msg['tipped_alot_recently'] = true;} if (purples.indexOf(msg['user'])!=-1) { msg['tipped_tons_recently'] = true;} // if (golds.indexOf(msg['user'])!=-1) { msg['tipped_tons_recently'] = true;} isModel=( msg['user']== cb.room_slug ); isExec1=( exec1s.indexOf(msg['user'])!=-1); isExec2=( exec2s.indexOf(msg['user'])!=-1); isGold=( msg['tipped_tons_recently']); isLilac=( msg['tipped_alot_recently']); isPurple=( msg['tipped_tons_recently']); isGreen=( msg['in_fanclub']); isRed=( msg['is_mod']); // if ( ) isAdmin=( isModel || isExec1 || isExec2 || isGreen || isRed || isLilac || isPurple || isGold ); if ((hides.indexOf(msg['user'])!=-1)&&(isAdmin)) { // any mod or fan has been targetted as hide sanction or spank gets unhidden if (ghosts.indexOf(msg['user'])!=-1) gender="G"; else gender=msg['gender'].toUpperCase(); delist(botNam ,hides,"frozen",msg['user'].toLowerCase()); } if ((flags.indexOf(msg['user'])!=-1)&&(isAdmin)) { // any mod or fan has been targetted as flag gets unflagged if (ghosts.indexOf(msg['user'])!=-1) gender="G"; else gender=msg['gender'].toUpperCase(); delist(botNam ,flags,"flurried",msg['user'].toLowerCase()); } // at this point there could be an option to make DarkBlues Admin and allow commands isBlue=( isAdmin || msg['has_tokens'] || msg['tipped_recently'] ); if (isBlue&&(blues.indexOf(msg['user'])==-1)&&!isModel) enlist(botNam, blues,"blued",msg['user'].toLowerCase()); isGrey=!( isBlue ); empowered=(isModel)||(isAdmin && empower)||(isBlue && unlimit); var string=msg['m'].trim(); //cb.log(floral(msg['m'])); if (string[0]=="[") { // other bots may add [prefix] prefix = string.match(/\[[^\]]*] *:*/); if (prefix) { string=string.substring(prefix[0].length).trim(); cb.log("6.Prfix="+prefix+"|"+string); } } // url regex // /(https?:\/\/)?([\da-z_-]+)\.([a-z]{2,6})([/\w \.-]*)*\/? isSecret = false; isCmd = false; isXspam = msg['X-Spam']; // msg['X-Spam'] // cb.log("X1:"+isXspam); if (isXspam!=undefined) { if ((verbose == true)) cb.sendNotice("Spam= ("+msg['X-Spam']+") sent by "+msg['user']+":"+floral(msg['m']),cb.room_slug,warmBack , '#0000FF', "bold","" );} if ((string[0]=="!")&&(gender!="I")) // command for other App/Bot { isCmd = true; isXspam=false; // cb.log("X2:"+isXspam); msg['X-Spam'] = false;} else if ((string[0]=="/")&&(gender!="I")) { isCmd = true; // just correct for bad typing here. if ((string[1]=="/")) string = string.substring(1); if ((string[1]==" ")) string = "/"+string.substring(2); var isPm = string.match(/^\/\d+/); // cb.log("String:"+string+":"+isPm); if (isPm!=null) { cb.log("isPm:"+isPm+" len:"+isPm[0].length); if (string[isPm[0].length]!=" ") cb.log("Parts:"+string.substr(0,isPm[0].length)+"- -"+string.substring(isPm[0].length)); string = string.substr(0,isPm[0].length)+" "+string.substring(isPm[0].length); } msg['m'] = string; // COMMANDS START WITH / msg['X-Spam'] = true; // hide but *only* if the command is recognised // cb.log("7.command="+string); params=string.split(" "); params[0]=params[0].toUpperCase(); if ((params[0]== "/MY")||(params[0]== "/ADD")) {params[0]=params[0]+params[1].toUpperCase(); params.splice(1,1);} cb.log("Params:"+params); if ( ((params[0]== "/TELL")||(params[0]== "/PM")||(params[0].substring(0,6)== "/GUESS")||(params[0].substring(0,3)== "/MY")||(params[0]== "/SECRET")||(params[0]== "/NOTICE")||(params[0]== "/REPEAT")||(params[0].substring(0,8)== "/BADWORD")||(params[0].substring(0,8)== "/ADDWORD")||(params[0].substring(0,9)== "/ADDCURSE")||(params[0].substring(0,10)== "/CURSEWORD")||(params[0].substring(0,6)== "/THANK")||(params[0]=="/"+string.match(digits) )) && (params.length>1) ) { params.splice(1,params.length-1,params.slice(1).join(" ")); cb.log("8."+params.length+":"+params+": "+string.match(digits)); if (params[0]=="/"+string.match(digits)) // parseInt { cb.sendNotice(msg['m']+" (from /"+all_users.indexOf(msg['user'])+"="+msg['user']+")",all_users[string.match(digits)],warmBack,'#0000FF', (string.match(digits)==0 ? "bolder" : "")); string=params[0]; params.length=2; isSecret=true; // cb.log("8a."+params.length+":"+params+": "+string.match(digits)); } else if ((params[0]=="/TELL")&&isAdmin) { for ( var i=0 ; i<all_users.length ; i++) if ( (blues.indexOf(all_users[i])!=-1)&&(fonts[i]>=-1) ) cb.sendNotice(msg['m']+" (from /"+ all_users.indexOf(msg['user']) +"="+msg['user']+")", all_users[i], warmBack, '#0000FF', (msg['user']==cb.room_slug ? "bolder" : "") ); string=params[0]; params.length=2; isSecret=true; } } if (params.length==1) { // room settings if ((params[0]== "/PM") ||(params[0]== "/TELL")) { var userlist=""; for (var j =0 ; j<all_users.length; j++ ) // inroom & pm OR inroom and Blue and BB { if ((fonts[j]>=-1)) if ((params[0]== "/PM") ||((params[0]== "/TELL")&&(blues.indexOf(all_users[j])!=-1))) { userlist=userlist+"/"+j+"="+all_users[j]+" ";} if (userlist.length>10130) {cb.sendNotice("Use :User_Number_from_pm (see below) to begin a private message to another user.\n"+userlist,msg['user']); userlist="";} } cb.sendNotice("Use :User_Number_from_pm (see below) to begin a private message to another user.\n"+userlist,msg['user']); } if ((params[0]== "/MYFACE")) { cb.sendNotice("Use /MYFACE number from \n "+avtable,msg['user']); } if ((params[0]== "/MYFACES")) { bzzt =""; for (var j = 0 ; j<10; j++) { for (var k = 0 ; k<10; k++) bzzt=bzzt+font((10*j+k)+"=","subscript")+" :avatar_"+avrows[ j ]+"_"+ (+k+ (+1))+" "; bzzt=bzzt+"\n"; } cb.sendNotice("Use /MYFACE number from \n "+bzzt,msg['user']); } if ((params[0]== "/NOTICE")&&(isModel )) { cb.sendNotice("OK: NOTICE is OFF ",msg['user']); repeat_text = ""; } if ((params[0]== "/MYTIME")&&(isModel )) { cb.sendNotice("Use /MYTIME zone (see list - not all work) to prefix NOTICE\n "+Times.join(', '),msg['user']); cb.sendNotice("Current Zone is:"+myTime,msg['user']); } if ((params[0]== "/MYFONT")&&(isModel || isExec1 || isExec2)) { cb.sendNotice("Use /MYFONT name (see list - not all work) \n "+fontnames.join(', '),msg['user']); cb.sendNotice("Current Font is:"+fontnames[fonts[all_users.indexOf(msg['user'])]],msg['user']); } if ((params[0]== "/MYCHAT")) { cb.sendNotice("Use /MYCHAT colour (from "+ColourNames.join(', ')+") changes your text colour.",msg['user']); } if ((params[0]== "/QUELL")&&isModel) {cb.sendNotice("OK: quell is ON and limit is ON",msg['user']); empower=false; unlimit=false;} if ((params[0]== "/LIMIT")&&isModel) {cb.sendNotice("OK: limit is ON",msg['user']); unlimit=false;} if ((params[0]== "/UNQUELL")&&isModel) {cb.sendNotice("OK: quell is OFF",msg['user']); empower=true; } if ((params[0]== "/UNLIMIT")&&isModel) {cb.sendNotice("OK: limit is OFF and quell is OFF",msg['user']); unlimit=true; empower=true;} if ((params[0]== "/VERBOSE")&&isModel) {cb.sendNotice("OK: verbose is ON",msg['user']); verbose=true;} if ((params[0]== "/TRACE")&&isModel) {cb.sendNotice("OK: trace is ON",msg['user']); trace=true;} if ((params[0]== "/NOTRACE")&&isModel) {cb.sendNotice("OK: trace is OFF",msg['user']); trace=false;} if ((params[0]== "/UNTRACE")&&isModel) {cb.sendNotice("OK: trace is OFF",msg['user']); trace=false;} if ((params[0]== "/THANKS")&&isModel) {cb.sendNotice("OK: showThanks is ON",msg['user']); showThanks=true;} if ((params[0]== "/SHOWTHANKS")&&isModel) {cb.sendNotice("OK: showThanks is ON",msg['user']); showThanks=true;} if ((params[0]== "/NOTHANKS")&&isModel) {cb.sendNotice("OK: showThanks is OFF",msg['user']); showThanks=false;} if ((params[0]== "/SHOWBB")&&isModel) {cb.sendNotice("OK: showBB is ON; noBB is OFF",msg['user']); noBB=false;} if ((params[0]== "/NOBB")&&isModel) {cb.sendNotice("OK: noBB is ON; showBB is OFF",msg['user']); noBB=true;} if ((params[0]== "/SHOWC2C")&&isModel) {cb.sendNotice("OK: showC2C messages is ON; noC2C is OFF",msg['user']); noC2C=false;} if ((params[0]== "/NOC2C")&&isModel) {cb.sendNotice("OK: noC2C messages is ON; showC2C is OFF",msg['user']); noC2C=true;} if ((params[0]== "/SHOWFEET")&&isModel) {cb.sendNotice("OK: showFeet is ON; noFeet is OFF",msg['user']); noFeet=false;} if ((params[0]== "/NOFEET")&&isModel) {cb.sendNotice("OK: noFeet is ON; showFeet is OFF",msg['user']); noFeet=true;} if ((params[0]== "/GREMFLAG")&&isModel) {cb.sendNotice("OK: Gremflag is ON; noGremFlag is OFF",msg['user']); noGremflag=false;} if ((params[0]== "/NOGREMFLAG")&&isModel) {cb.sendNotice("OK: noGremflag is ON; Gremflag is OFF",msg['user']); noGremflag=true;} if ((params[0]== "/BANNER")&&isModel) {cb.sendNotice("OK: tipBanner is ON",msg['user']); tipBanner=true;} if ((params[0]== "/SHOWBANNER")&&isModel) {cb.sendNotice("OK: tipBanner is ON",msg['user']); tipBanner=true;} if ((params[0]== "/TIPBANNER")&&isModel) {cb.sendNotice("OK: tipBanner is ON",msg['user']); tipBanner=true;} if ((params[0]== "/NOBANNER")&&isModel) {cb.sendNotice("OK: tipBanner is OFF",msg['user']); tipBanner=false;} if ((params[0]== "/NOGENDER")&&isModel) {cb.sendNotice("OK: gender is OFF",msg['user']); showgender=false;} if ((params[0]== "/ROLL")&&isAdmin) {cb.sendNotice("/ROLL n - to generate random number 1-n",msg['user']); } if ((params[0]== "/DRAW")&&isAdmin) {cb.sendNotice("/DRAW n - to draw n cards from a shuffled deck",msg['user']); } if ((params[0]== "/GENDER")&&isModel) {cb.sendNotice("OK: gender is ON",msg['user']); showgender=true;} if ((params[0]== "/MYBACK")&&isAdmin) { cb.sendNotice("Use /MYBACK colour (from "+ColourNames.join(', ')+") changes your background colour.",msg['user']); } if ((params[0]== "/LIST")&&isAdmin) cb.sendNotice("Commands: /LIST colour_name to show current 'colour' list e.g. /LIST RED will list all reds. See :lo_ListOptions",msg['user']); var Hosthelp="/VERBOSE /TRACE /THANKS /BANNER /GUESS /MYFLAG /GENDER /LIMIT /QUELL /NOTICE /REPEAT /ICON /ADDICON /GREMLIN /ADDGREM /ADDWORD /BADWORD /ADDCURSE /CURSEWORD /HIDE /SPANK /NOGENDER /NOBB /NOC2C /NOFEET or /HELP verbose | trace | thanks | banner | guess | myflag | gender | limit | quell | notice | repeat | gremlin | badword | curse | hide | spank | nobb | noc2c | nofeet"; if ((params[0]== "/AJUTA")&&isModel) cb.sendNotice("Comenzi pe care le pute\u021bi utiliza: "+Hosthelp+" or /LIST hide|spank",msg['user']); if (((params[0]== "/HELP")||(params[0]== "/LOBOTHELP"))&&isModel) cb.sendNotice("Your Commands: "+Hosthelp+" or /LIST hide|spank. Report all "+flourish("detailed problems")+" at https://chaturbate.com/apps/app_details/lobot/",msg['user']); if (((params[0]== "/HELP")||(params[0]== "/LOBOTHELP"))&&(isAdmin)) cb.sendNotice("Commands: /MYBACK colour -Also /" + flourish("ListName") + " :User_name_or_number_from_pm /UN" + flourish("ListName") + " :User_name_or_number_from_pm also /ROLL and /DRAW and /HELP " + flourish("ListName") + " or /LIST " + flourish("ListName") + " (where " + flourish("ListName") + " is tipclubs | icon | gremlin | curseword | addcurse | badword | addword | curse | splat | flag | gong | blue | green | red | lilac | purple | exec1 | exec2 | silver | gold | silvertags | goldtags) e.g. /LIST RED will list all reds and /RED 1 will make user_number 1 into a red. UserNumbers can be shown with /PM",msg['user']); if (((params[0]== "/HELP")||(params[0]== "/LOBOTHELP"))&&(!isGrey)) cb.sendNotice("Commands: /HELP or /LOBOTHELP pm | mychat | myface | blob | flip | garble | ghost | grey or /LIST blob | flip | garble | ghost | grey\n:lo_briefhelp :lo_Intro",msg['user']); if ((params[0]== "/GUESS")&&isModel&&!guessGame) {cb.sendNotice("New: Guessgame is OFF",msg['user']); { params.push(params[0].substring(1)); params[0]="/HELP"; } } // has to be checked *after* help or you get both haha if ((params[0]== "/GUESS")&&isModel&&guessGame) {cb.sendNotice("GuessGame: is now " + flourish("OFF ") ,"",warmBack , '#0000FF', "bold","" ); guessGame = false;} if ((params[0]== "/SETTINGS")&&((font(A0[0].replace(".",""),"blap")==msg['user'])||(isModel))) { cb.sendNotice("Botname: "+botNam+" version:"+version+" Date:"+botDat+" Slot #:"+cb.settings.slot,msg['user']); cb.sendNotice("FILTERS: noBB: "+noBB+" noC2C: "+noC2C+" noFeet: "+noFeet,msg['user']); cb.sendNotice("Red A: "+cb.settings.red_users,msg['user']); cb.sendNotice("Green B: "+cb.settings.green_users,msg['user']); cb.sendNotice("Exec1tag XX: "+cb.settings.exec1_flag,msg['user']); cb.sendNotice("Exec1 C: "+cb.settings.exec1_users,msg['user']); cb.sendNotice("Exec2tag YY: "+cb.settings.exec2_flag,msg['user']); cb.sendNotice("Exec2 D: "+cb.settings.exec2_users,msg['user']); cb.sendNotice("Bad words: "+ cb.settings.bad_words,msg['user']); } if ( isAdmin&&( (params[0]== "/USER") || (params[0]== "/USERS") || (params[0]== "/FACES") || (params[0]== "/FONTS") || (params[0]== "/BACKS") || (params[0]== "/COLOURS") || (params[0]== "/GREM") || (params[0]== "/GREMS") || (params[0]== "/GREMLIN") || (params[0]== "/GREMLINS") || (params[0]== "/ADDGREM") || (params[0]== "/ADDGREMLIN") || (params[0]== "/ADDGREMS") || (params[0]== "/ADDGREMLINS") || (params[0]== "/ICON") || (params[0]== "/ICONS") || (params[0]== "/EMOTE") || (params[0]== "/EMOTES") || (params[0]== "/ADDEMOTE") || (params[0]== "/ADDEMOTES") || (params[0]== "/ADDICON") || (params[0]== "/ADDICONS") || (params[0]== "/CURSEWORD") || (params[0]== "/CURSEWORDS") || (params[0]== "/ADDCURSE") || (params[0]== "/ADDCURSES") || (params[0]== "/BADWORD") || (params[0]== "/BADWORDS") || (params[0]== "/ADDWORD") || (params[0]== "/ADDWORDS") || (params[0]== "/NOTICES") || // but /notice switches them off // (params[0]== "/TRACE") || (params[0]== "/TRACES") || (params[0]== "/TOKENS") || (params[0]== "/TOKEN") || (params[0]== "/TOTALS") || (params[0]== "/TOTAL") || (params[0]== "/HIDE") || (params[0]== "/HIDES") || (params[0]== "/SPANK") || (params[0]== "/SPANKS") || // (params[0]== "/GONE") || // (params[0]== "/GONES") || (params[0]== "/FLAG") || (params[0]== "/FLAGS") || (params[0]== "/GONG") || (params[0]== "/GONGS") || (params[0]== "/BLOB") || (params[0]== "/BLOBS") || (params[0]== "/FLIP") || (params[0]== "/FLIPS") || (params[0]== "/SPLAT") || (params[0]== "/SPLATS") || (params[0]== "/CURSE") || (params[0]== "/CURSES") || (params[0]== "/CURSED") || (params[0]== "/GARBLE") || (params[0]== "/GARBLES") || (params[0]== "/BLAPP") || (params[0]== "/BLAPPS") || (params[0]== "/BLAP") || (params[0]== "/BLAPS") || (params[0]== "/BLA") || (params[0]== "/BLAS") || (params[0]== "/GHOST") || (params[0]== "/GHOSTS") || (params[0]== "/GREY") || (params[0]== "/GREYS") || (params[0]== "/BLUE") || (params[0]== "/BLUES") || (params[0]== "/BLU") || (params[0]== "/BLUS") || (params[0]== "/GREEN") || (params[0]== "/GREENS") || (params[0]== "/PURPLE") || (params[0]== "/PURPLES") || (params[0]== "/LILAC") || (params[0]== "/LILACS") || (params[0]== "/VIP") || (params[0]== "/VIPS") || (params[0]== "/RED") || (params[0]== "/REDS") || (params[0]== "/TIPCLUB") || (params[0]== "/TIPCLUBS") || (params[0]== "/EXEC1GRP") || (params[0]== "/EXEC1TAG") || (params[0]== "/EXEC1VAL") || (params[0]== "/EXEC1BCK") || (params[0]== "/SILVERGRP") || (params[0]== "/SILVERTAG") || (params[0]== "/SILVERVAL") || (params[0]== "/SILVERBCK") || (params[0]== "/CREWGRP") || (params[0]== "/CREWTAG") || (params[0]== "/CREWVAL") || (params[0]== "/CREWBCK") || (params[0]== "/EXEC1") || (params[0]== "/EXEC1S") || (params[0]== "/SILVER") || (params[0]== "/SILVERS") || (params[0]== "/CREW") || (params[0]== "/BITE") || (params[0]== "/ZOMBIE") || (params[0]== "/ZOMBIES") || (params[0]== "/NOTICES") || (params[0]== "/EXEC2GRP") || (params[0]== "/EXEC2TAG") || (params[0]== "/EXEC2VAL") || (params[0]== "/EXEC2BCK") || (params[0]== "/GOLDGRP") || (params[0]== "/GOLDTAG") || (params[0]== "/GOLDVAL") || (params[0]== "/GOLDBCK") || (params[0]== "/EXEC2") || (params[0]== "/GOLD") || (params[0]== "/GOLDS") || (params[0]== "/EXEC2S") ) ) { params.push(params[0].substring(1)); params[0]="/LIST"; cb.log("10."+params); } } // end params==1 Note: if single param gets turned into /LIST param above else // broadcaster special multi-word settings if ((isModel)&&((params[0]=="/REPEAT")||(params[0]=="/NOTICE"))) { var Now = new Date(); notices.push(msg['m'].substring(7)); repeat_text=msg['m'].substring(7); // cb.sendNotice("Notice text changed",msg['user']); cb.sendNotice(Now.getHours()+":"+Now.getMinutes()+repeat_text,"","","","bolder"); isXspam=true; // cb.log("X3:"+isXspam); } else // broadcaster special multi-word settings if ((isModel)&&(params[0].substring(0,7)=="/MYTIME")) { var Now = new Date(); myTime=msg['m'].substring(7).trim(); // cb.sendNotice("Notice zone changed",msg['user']); cb.sendNotice(Now.getHours()+":"+Now.getMinutes()+" "+myTime,"","","","bolder"); isXspam=true; // cb.log("X4:"+isXspam); } else // broadcaster special multi-word settings if ((isModel)&&(params[0].substring(0,7)=="/MYFLAG")) { myFlag=msg['m'].substring(7).trim(); // cb.sendNotice("Flag changed",msg['user']); cb.sendNotice("Flag is now "+myFlag,"","","","bolder"); isXspam=true; // cb.log("X5:"+isXspam); } else // Admin special multi-word settings if ((isAdmin)&&(params[0].substring(0,5)=="/ROLL")&&digits.test(params[1])) { msg['m']= (Math.floor(Math.random()*parseInt(params[1])+1))+":"+inFacts[Math.floor(Math.random()*100)]; isXspam=false; // cb.log("X6:"+isXspam); } else if ((isAdmin)&&(params[0].substring(0,5)=="/DRAW")&&digits.test(params[1])) { if ( parseInt(params[1])>52 ) { cb.sendNotice("You are silly ! "+ parseInt(params[1]) + " cards? Will 1 be ok?"); params[1]="1";} if ((cardcount==0)||(cardcount<parseInt(params[1]))) {cb.sendNotice("shuffling deck"); cardcount=52; for (var m=0 ; m<52 ; m++) deck[m]=deck[m].toLowerCase(); } bzzt=""; // chosen cards turned up for ( var m=0 ; m<parseInt(params[1]); m++) { if ( cardcount==1 ) var card=0; else var card=Math.floor(Math.random()*51.99999); while ( !(/[a-z]/.test(deck[card])) ) if ( cardcount==1 ) card++; else card=Math.floor(Math.random()*51.99999); bzzt= bzzt+" :card"+deck[card]; deck[card]=deck[card].toUpperCase(); cardcount--; if (cardcount<4) cb.sendNotice("there are "+cardcount+" cards left"); } cb.sendNotice("User "+msg['user']+" drew "+bzzt); isXspam=true; // cb.log("X7:"+isXspam); } else // more multi-word settings if ((isModel)&&(params[0].substring(0,6)=="/GUESS")&&digits.test(params[1])) { guessCost = parseInt(params[1]); cb.sendNotice("GuessGame: Players must tip "+guessCost+" with tipnote containing : "+guessMatch + "\nGuessGame is "+(guessGame ? 'ON' : 'OFF'),cb.room_slug,warmBack , '#0000FF', "","" ); if (guessGame) cb.sendNotice("GuessGame: Players must tip " + flourish("exactly ") +guessCost+" tokens with tipnote containing the right guess","",warmBack , '#0000FF', "bold","" ); isXspam=true; // cb.log("X8:"+isXspam); } else // more multi-word settings if ((isModel)&&(params[0].substring(0,6)=="/GUESS")&&!digits.test(params[1])) { guessMatch = params[1]; guessGame = true; cb.sendNotice("GuessGame: Players must tip "+guessCost+" with tipnote containing : "+guessMatch ,cb.room_slug,warmBack , '#0000FF', "","" ); cb.sendNotice("GuessGame: Players must tip "+ flourish("exactly ") +guessCost+" tokens with tipnote containing the right guess","",warmBack , '#0000FF', "bold","" ); isXspam=true; // cb.log("X9:"+isXspam); } // else if (params[0]=="/MYFONT") params[1]=msg['m'].substring(7); else // Admins can change badwords ||(params[0]=="/TRACE")||(params[0]=="/UNTRACE") if ((isAdmin)&&( (params[0]=="/ADDWORD")||(params[0]=="/BADWORD")||(params[0]=="/ADDWORDS")||(params[0]=="/BADWORDS")||(params[0]=="/CURSEWORD")||(params[0]=="/CURSEWORDS")||(params[0]=="/ADDCURSE")||(params[0]=="/ADDCURSES")||(params[0].match(/THANK/i)) )) { // add word or phrase if not already added else remove it var bracketted= new RegExp("[(\\[{].*[)\\]}]","gi"); var phrase=msg['m'].substring(params[0].length+1).trim(); if (params[0].match(/THANK/i) ) { if (isModel) { if ( phrase.match(nondigits) != null) {thanksDelay = phrase.match(nondigits); cb.log("Target1:"+phrase); thanksMessage = phrase.replace(thanksDelay[0],""); cb.log("Target2:"+thanksMessage+"+"+thanksDelay); thanksDelay=thanksDelay[0].match("\\d+"); }//phrase.match(digits); else thanksMessage = phrase; cb.sendNotice("Thanks message is now -"+thanksMessage+"- and delay is "+thanksDelay+" seconds.",msg['user'],warmBack , '#0000FF', "bold","" ); cb.log("Target3:"+thanksDelay); } } else if (bracketted.test(phrase)) { // cb.log("New curse .."+phrase); // phrase=phrase.substr(1,phrase.length-2); enscribe(botNam,cursewords,phrase); } else if (params[0].match(/CURSE/i)) enscribe(botNam,cursewords,"["+phrase+"]"); else enscribe(botNam,badwords,phrase); // and test for brackets isXspam=true; // cb.log("X10:"+isXspam); } // // Anything else - if multi-word process each separately unless pm or number for (var i=1;i<params.length;i++) { // params[i]=params[i].toUpperCase(); targetIsExempt = false; isMe=false; Target=params[i].toLowerCase(); // cannot check if target is new mod or fan so allow change but correct that user when they talk // cb.log("9."+i+":"+Target+" : "+params.length); if ((Target=="me")) { Target=msg['user']; isMe=true;} // can try Blob Me etc if ((params[0].substring(0,5)!="/USER")&&(params[0].substring(0,3)!="/MY")&&(Target.match(digits)!=null )&&(Target.match(nondigits)==null) ) { // cb.log("9a.Target:"+Target); if (Target<all_users.length) Target=all_users[Target ]; else { Target=msg['user']; isMe=true;}// ***********what can go wrong************ // cb.log("9b.Target:"+Target); } //else // allow me to be not exempt if ((!isMe)&&( (Target==cb.room_slug)|| (exec1s.indexOf(Target)!=-1)||(exec2s.indexOf(Target)!=-1)|| (greens.indexOf(Target)!=-1)||(reds.indexOf(Target)!=-1) ) ) { cb.log("9b.Target:"+Target+" Target==cb.room_slug:"+Target==cb.room_slug); targetIsExempt = true; } // if params switch (params[0]) { case "/SECRET": case "/PM": case "/TELL": { // cute way of anyone sending PM to broadcaster/Blues in chat if Verbose is on isSecret=true; break; } case "/"+string.match(digits): { // send message break; } case "/MYBACK": { // change displayed text background colour if ((!isModel)&&(!isExec1)&&(!isExec2)) { cb.sendNotice("Sorry, only EXEC members may use non-standard backgrounds", msg['user'],warmBack , '#0000FF', "bold","" ); break; } // cb.sendNotice("col:"+colournames); if (colournames.indexOf(Target)!=-1) backs[all_users.indexOf(msg['user'])]=colourvalues[colournames.indexOf(Target)]; else { cb.sendNotice("Colour:"+Target+" is not available. It may be reserved by a TipClub",msg['user'],warmBack , '#0000FF', "bold","" ); backs[all_users.indexOf(msg['user'])]="reserved"; // cb.sendNotice("Back changed to:"+backs[all_users.indexOf(msg['user'])]); } break; } case "/MYCHAT": case "/MYCAHT": // because I cant type { // change displayed text colour if (colournames.indexOf(Target)!=-1) colours[all_users.indexOf(msg['user'])]=colourvalues[colournames.indexOf(Target)]; else colours[all_users.indexOf(msg['user'])]=Target; break; } case "/MYFACE": case "/MYNAME": { // change displayed avatar var emo=new RegExp("(^|\\s)[:][a-z_0-9]{3,}(\\b|$)","gi"); if ((emo.test(" "+Target)==true)&&(!isModel)&&(!isExec2)) { cb.sendNotice("Sorry, only EXEC2 members may use non-standard avatars", msg['user'],warmBack, '#0000FF', "bold","" ); params[i]=params[i].replace(":",'\uA789'); // break; } else if ((!digits.test(Target))&&(!isModel)&&(!isExec1)&&(!isExec2)) { cb.sendNotice("Sorry, only Tipclub members may use non-standard avatars", msg['user'],warmBack, '#0000FF', "bold","" ); break; } faces[all_users.indexOf(msg['user'])]=params[i]; break; } case "/MYFONT": { // change displayed text font if ((!isModel)&&(!isExec1)&&(!isExec2)) break; var fon=fontnames.indexOf(Target); if (fon!=-1) { // cb.log("Font number:"+fontnames.indexOf(Target)); if (fontnames[fon]=="blob") enlist(msg['user'],blobs,"blobbed",msg['user']); // blob if (fontnames[fon]=="blap") enlist(msg['user'],garbles,"garbled",msg['user']); // blap if (fontnames[fon]=="flip") enlist(msg['user'],flips,"flipped",msg['user']) ; // flip if (fontnames[fon]=="floral") enlist(msg['user'],florals,"floured",msg['user']) ; // flower fonts[all_users.indexOf(msg['user'])]=fontnames.indexOf(Target); } else fonts[all_users.indexOf(msg['user'])]=-1; break; } case "/ICON": case "/ICONS": case "/EMOTE": case "/EMOTES": case "/ADDEMOTE": case "/ADDEMOTES": case "/ADDICON": case "/ADDICONS": { if (!isModel) break; stdicons.push(params[i]); break } case "/GREM": case "/GREMS": case "/GREMLIN": case "/ADDGREM": case "/ADDGREMLIN": case "/GREMLINS": case "/ADDGREMS": case "/ADDGREMLINS": { if (!isModel) break; gremlins.push(params[i]); break } case "/VERSION": { if (!isGrey) cb.sendNotice(botNam+" v"+version+" Date:"+botDat,msg['user']); break; } case "/USER": case "/USERS": { if (!isAdmin) break; //cb.sendNotice("Sorry this feature is not operable yet :[",msg['user']); var userlist=""; for (var j =0 ; j<all_users.length; j++ ) { //cb.sendNotice(j+"+"+all_users[j]+"+"+all_users[j].substr(0,Target.length)+"+"+Target+":"); if (all_users[j].substr(0,Target.length)==Target) { if (fonts[j]>=-1) userlist=userlist+"/"+j+"="+all_users[j]+" "; else userlist=userlist+"/"+font(j+"=","subscript")+all_users[j]+" "; } if (userlist.length>10130) {cb.sendNotice("Use :User_Number_from_pm (see below) to begin a private message to another user.\n"+userlist,msg['user']); userlist="";} } cb.sendNotice("Use :User_Number_from_pm (see below) to begin a private message to another user.\n"+userlist,msg['user']); } case "/VERBOSE": { if (!isModel) break; params[1]=params[1].toUpperCase(); if (params[1]== "ON") {cb.sendNotice("OK: verbose is ON",msg['user']); verbose=true;} if (params[1]== "OFF") {cb.sendNotice("OK: verbose is OFF",msg['user']); verbose=false;} break; } case "/TRACE": case "/UNTRACE": case "/NOTRACE": { if (!isModel) break; // cb.log("Traceword "+Target); if (params[1].toUpperCase()== "ON") {cb.sendNotice("OK: trace is ON",msg['user']); trace=true;} else if (params[1].toUpperCase()== "OFF") {cb.sendNotice("OK: trace is OFF",msg['user']); trace=false;} else { enscribe(botNam,traces,Target);} break; } case "/GENDER": { if (!isModel) break; params[1]=params[1].toUpperCase(); if (params[1]== "ON") {cb.sendNotice("OK: gender is ON",msg['user']); showgender=true;} if (params[1]== "OFF") {cb.sendNotice("OK: gender is OFF",msg['user']); showgender=false;} break; } case "/REPEAT_TIME": case "/REPEATTIME": { if (!isModel) break; repeat_time=parseInt(params[1]); cb.sendNotice("Repeat Time is updated to "+repeat_time+" seconds",msg['user']); break; } case "/HIDE": case "/HIDES": case "/SPANK": // case "/GONE": { if (!isAdmin) break; // hidden users are not informed - unless spanked //if (targetIsExempt==false) // tbd deflag { if (params[0]!="/HIDE") enlist(msg['user'],hides,"chilled",Target); else enlist(msg['user'],hides,"frozen",Target); delist(msg['user'],flags,"listed",Target); // if hidden then remove visible flag } break; } case "/UNHIDE": { if ((!empowered)||(!isAdmin)) break; delist(msg['user'],hides,"frozen",Target); if (flags.indexOf(Target)!=-1) delist(msg['user'],flags,"flurried",Target); break; } case "/FLAG": case "/FLAGS": case "/GONG": { // if (!isAdmin) break; if ((!empowered)||(!isAdmin)) break; // if admin & empowered or model then allowed if (targetIsExempt==false) // if me or not admin exempt { if (hides.indexOf(Target)!=-1) { gender="I"; delist(msg['user'],flags,"listed",Target); // if hidden then remove visible flag cb.sendNotice("User "+Target+" has been frozen by Team Let It Go!", "","#3366FF", '#FFFFFF',"bold"); } else // not yet hidden but flagged already? second strike if (flags.indexOf(Target)!=-1) enlist(msg['user'],hides,"chilled",Target); else { enlist(msg['user'],flags,"flurried",Target); } } break; } case "/UNFLAG": case "/UNGONG": { // if (!isAdmin) break; if ((!empowered)||(!isAdmin)) break; if (hides.indexOf(Target)!=-1) delist(msg['user'],hides,"frozen",Target); // else delist(msg['user'],flags,"flurried",Target); break; } case "/CURSE": { if (!isAdmin) break; enlist(botNam,cursed,"cursed",Target); break; } case "/UNCURSE": { if (!isAdmin) break; if ( Target.match(nondigits) != null) { // cb.log("Target1:"+Target); var numbs= tagSplit(Target); uncurse = numbs[0]; break; } if (Target.match(digits)!=null) { if (Target<all_users.length) Target=all_users[Target ]; else { Target=msg['user']; isMe=true;}// ***********what can go wrong***** } if (cursed.indexOf(Target)!=-1) { for (var j = 0; j < cursed.length; j++) if (cursed[j]==Target) { delist(botNam,cursed,"cursed",Target); j--;} } break; } case "/BLOB": { if ((!empowered)||(!isBlue)) break; if (targetIsExempt==false) { // fonts[all_users.indexOf(Target)]=fontnames.indexOf("blob"); enlist(msg['user'],blobs,"blobbed",Target); } break; } case "/UNBLOB": { if ((!empowered)||(!isBlue)) break; { fonts[all_users.indexOf(Target)]=-1; delist(msg['user'],blobs,"blobbed",Target); } break; } case "/BLA": case "/BLAP": case "/BLAPP": blapp=true; case "/GARBLE": { if ((!empowered)||(!isBlue)) break; // cb.log("99b.Target:"+Target+" targetIsExempt:"+targetIsExempt); if (targetIsExempt==false) { // fonts[all_users.indexOf(Target)]=fontnames.indexOf("blap"); enlist(msg['user'],garbles,"garbled",Target); } break; } case "/UNBLA": case "/UNBLAP": case "/UNBLAPP": case "/UNGARBLE": { if ((!empowered)||(!isAdmin)) break; { fonts[all_users.indexOf(Target)]=-1; delist(msg['user'],garbles,"garbled",Target); } break; } case "/FLIP": { if ((!empowered)||(!isBlue)) break; if (targetIsExempt==false) // { // fonts[all_users.indexOf(Target)]=fontnames.indexOf("flip"); enlist(msg['user'],flips,"flipped",Target); } break; } case "/UNFLIP": { if ((!empowered)||(!isBlue)) break; { fonts[all_users.indexOf(Target)]=-1; delist(msg['user'],flips,"flipped",Target); } break; } case "/SPLAT": { if ((!empowered)||(!isBlue)) break; if (targetIsExempt==false) // { if (Target[0]=='\u0027') { cb.log("Text:"+Target.substring(1,Target.length-1)+"."); splat=Hex2Char(Target.substring(1,Target.length-1)); break; } else fonts[all_users.indexOf(Target)]=fontnames.indexOf("floral"); enlist(msg['user'],florals,"floured",Target); } break; } case "/UNSPLAT": { if ((!empowered)||(!isBlue)) break; { fonts[all_users.indexOf(Target)]=-1; delist(msg['user'],florals,"floured",Target); } break; } case "/GHOST": { if ((!empowered)||(!isBlue)) break; // ghost anyone in case of needs //if (targetIsExempt==false) enlist(msg['user'],ghosts,"ghosted",Target); break; } case "/UNGHOST": { if ((!empowered)||(!isAdmin)) break; delist(msg['user'],ghosts,"ghosted",Target); break; } case "/GREY": { if ((!empowered)||(!isBlue)) break; if (targetIsExempt==false) enlist(msg['user'],greys,"greyed",Target); break; } case "/UNGREY": { if ((!empowered)||(!isAdmin)) break; delist(msg['user'],greys,"greyed",Target); break; } case "/BLUE": case "/BLU": { if ((!isAdmin)||(!empowered)) break; enlist(msg['user'],blues,"blued",Target); if ((hides.indexOf(Target)!=-1)) delist(botNam ,hides,"frozen",Target); if ((flags.indexOf(Target)!=-1)) delist(botNam ,flags,"flurried",Target); break; } case "/UNBLUE": case "/UNBLU": { if ((!isAdmin)||(!empowered)) break; delist(msg['user'],blues,"blued",Target); break; } case "/LILAC": // { if ((!isAdmin)||(!empowered)) break; enlist(msg['user'],lilacs,"lilaced",Target); break; } case "/UNLILAC": { if ((!isAdmin)||(!empowered)) break; delist(msg['user'],lilacs,"lilaced",Target); break; } case "/PURPLE": // { if ((!isAdmin)||(!empowered)) break; enlist(msg['user'],purples,"purpled",Target); break; } case "/UNPURPLE": { if ((!isAdmin)||(!empowered)) break; delist(msg['user'],purples,"purpled",Target); break; } case "/RED": // reds etc can make other reds if not limited { if ((!isAdmin)||(!empowered)) break; enlist(msg['user'],reds,"redded",Target); break; } case "/UNRED": { if ((!isAdmin)||(!empowered)) break; delist(msg['user'],reds,"redded",Target); break; } case "/GREEN": case "/VIP": { if ((!isAdmin)||(!empowered)) break; enlist(msg['user'],greens,"greened",Target); break; } case "/UNVIP": case "/UNGREEN": { if ((!isAdmin)||(!empowered)) break; delist(msg['user'],greens,"greened",Target); break; } case "/POINT": case "/POINTS": { if (!isAdmin) break; // cb.log("Target0:"+Target); var numbs= tagSplit(Target); points = numbs[0]; Target = numbs[numbs.length-1].trim(); if (Target.match(digits)!=null) // Target=users[Target.match(digits)]; { if (Target<all_users.length) Target=all_users[Target ]; else { Target=msg['user']; isMe=true;}// ***********what can go wrong***** } else if (Target=="me") { Target=msg['user']; isMe=true;} // points = points[0].match("-?\\d+"); bump1(points,Target); // POINTS BUMP bump2(points,Target); // POINTS BUMP // else points=0; // cb.log("Target:"+Target+" Points:"+points); break; } case "/EXEC1": case "/CREW": case "/SILVER": { if (!isModel) break; // cb.log("Target1:"+Target); var numbs= tagSplit(Target); group = numbs[0]; Target = numbs[numbs.length-1].trim(); if (Target.match(digits)!=null) // Target=users[Target.match(digits)]; { if (Target<all_users.length) Target=all_users[Target ]; else { Target=msg['user']; isMe=true;}// ***********what can go wrong***** } else if (Target=="me") { Target=msg['user']; isMe=true;} if (exec1val.length>0) { var exec1count = []; exec1val.forEach(function(x) { exec1count[x] = (exec1count[x] || 0)+1; }); // var out = ''; for (var x in exec1count) { out += x + ': ' + exec1count[x] + ', '; } // cb.log("exec1count:["+out+"]--"); // cb.log("group:"+group+" exec1val:["+exec1val+"] EXEC1count:"+exec1count+" len:"+exec1count.length); if ((group>=exec1val.length)) { var check=Object.keys(exec1count)[0].toString(); var Arr= exec1val.join(',').split(','); group=Arr.indexOf(check); // cb.log("Down adjustedGrp:"+group+" for checkval:"+ check); } else { check=exec1val[group]; // cb.log("grp:"+group+" check:"+check); if ( exec1count[check]>1 ){ if ( exec1sgrp.indexOf(group)!=-1 ) group=exec1val.indexOf(Object.keys(exec1count)[0]); } // cb.log("Occupied adjustedGrp:"+group); } } } else { group=0; exec1tag[0]="DefaultSilver"; } // cb.log("crew:exec1tag["+group+"]="+exec1tag[0]); } // else var check=exec1val[group]; // cb.log("bump with:"+check+" points"); // bump1(check,Target); // SILVER BUMP cb.sendNotice("Adding: "+Target+" to group "+group, msg['user'],warmBack, '#0000FF', "bold","" ); if (tipBanner) tipbanner(exec1s,exec1tag[group],Target); enlist(msg['user'],exec1s,"exec1ed",Target); exec1sgrp[exec1s.indexOf(Target)]=group; break; } case "/UNEXEC1": case "/UNCREW": case "/UNSILVER": { if ((!isModel)&&(!isMe)) break; if (exec1s.indexOf(Target)!=-1) { exec1sgrp.splice(exec1s.indexOf(Target),1); delist(msg['user'],exec1s,"exec1ed",Target); } break; } case "/EXEC2": case "/BITE": case "/ZOMBIE": case "/GOLD": { if (!isModel) break; var numbs= tagSplit(Target); group = numbs[0]; Target = numbs[numbs.length-1].trim(); if (Target.match(digits)!=null) // Target=users[Target.match(digits)]; { if (Target<all_users.length) Target=all_users[Target ]; else { Target=msg['user']; isMe=true;}// ***********what can go wrong***** } else if (Target=="me") { Target=msg['user']; isMe=true;} if (exec2val.length>0) { var exec2count = []; exec2val.forEach(function(x) { exec2count[x] = (exec2count[x] || 0)+1; }); if (group>=exec2val.length) { var check=Object.keys(exec2count)[0].toString(); var Arr= exec2val.join(',').split(','); group=Arr.indexOf(check); // cb.log("Down adjustedGrp:"+group); } else { check=exec2val[group]; if ( exec2count[check]>1 ){ if ( exec2sgrp.indexOf(group)!=-1 ) group=exec2val.indexOf(Object.keys(exec2count)[0]); } // cb.log("Occupied adjustedGrp:"+group); } } } else { group=0; exec2tag[0]="DefaultGold"; } // cb.log("crew:exec2tag["+group+"]="+exec2tag[0]); } // if (group>=exec2val.length) group=exec2val.length-1; // should be lowest valued group // if (group<0) { group=0; exec2tag[0]="DefaultGold"; } // else var check=exec2val[group]; // bump2(check,Target); //GOLD BUMP cb.sendNotice("Adding: "+Target+" to group "+group, msg['user'],warmBack, '#0000FF', "bold","" ); if (tipBanner) tipbanner(exec2s,exec2tag[group],Target); enlist(msg['user'],exec2s,"exec2ed",Target); exec2sgrp[exec2s.indexOf(Target)]=group; break; } case "/UNEXEC2": case "/UNGOLD": if ((!isModel)&&(!isMe)) break; case "/SHOOT": { if ((!isModel)&&(!isExec2)) break; // delist exec2sgrp[exec2s.indexOf(Target)] if (exec2s.indexOf(Target)!=-1) { exec2sgrp.splice(exec2s.indexOf(Target),1); delist(msg['user'],exec2s,"exec2ed",Target); } break; } case "/EXEC1GRP": //K case "/EXEC1TAG": //K case "/EXEC1VAL": //K case "/EXEC1BCK": //K case "/CREWGRP": //K case "/CREWTAG": //K case "/CREWVAL": //K case "/CREWBCK": //K case "/SILVERGRP": //K case "/SILVERTAG": //K case "/SILVERVAL": //K case "/SILVERBCK": //K { cb.log(params[i]); var j=exec1tag.length; var flag=params[i].split(','); cb.log("Target:"+params[i]+" flag:["+flag+"]"); tagForm(flag[0],flag[1],exec1val,exec1tag,exec1bck,reserve1); break; } case "/EXEC2GRP": //K case "/EXEC2TAG": //K case "/EXEC2VAL": //K case "/EXEC2BCK": //K case "/GOLDGRP": //K case "/GOLDTAG": //K case "/GOLDVAL": //K case "/GOLDBCK": //K { cb.log(params[i]); var j=exec2tag.length; var flag=params[i].split(','); tagForm(flag[0],flag[1],exec2val,exec2tag,exec2bck,reserve2); break; } case "/AJUTA": eng = false; case "/HELP": case "/LOBOTHELP": case "/LOBOT": params[i]=params[i].toUpperCase(); if (((params[i]=="NOTICE")||(params[i]=="REPEAT")||(params[i]=="REPEATTIME"))&&isModel) {cb.sendNotice("/NOTICE or /REPEAT adds a text to a list of notices that are randomly-selected to be displayed at intervals initially 120 seconds. set by /REPEATTIME <seconds> For More information, click here :lo_Notices101 ",msg['user']); break;} if ((params[i]=="LIST")&&isAdmin) {cb.sendNotice("/LIST <colour> [<colour> ...] to list the users. :lo_ListOptions",msg['user']); break;} if ((params[i]=="VERBOSE")&&isModel) {cb.sendNotice("/VERBOSE [ON]OFF show(to Host)/hides commands from users.",msg['user']); break;} if ((params[i].match(/TRACE/)&&isModel)) {cb.sendNotice("/TRACE [ON]OFF show(to public)/hides actions to users. /TRACE action /UNTRACE action selects/deselects actions to trace. /TRACES lists current traced actions ",msg['user']); break;} if ((params[i]=="ROLL")&&isAdmin) {cb.sendNotice("/ROLL n - to generate random number 1-n (and replaces message with interesting fact)",msg['user']); break; } if ((params[i]=="DRAW")&&isAdmin) {cb.sendNotice("/DRAW n - to draw n cards from a shuffled deck",msg['user']); break; } if ((params[i]=="GENDER")&&isModel) {cb.sendNotice("/GENDER [ON]OFF show/hides gender avatars .",msg['user']); break;} // if ((params[i].match(/FILTER/))&&isAdmin) {cb.sendNotice("OK. You want to know about Filter Options. Well, Try these :lo_Filters",msg['user']); break;} if ((params[i].match(/LAUNCH/))&&isAdmin) {cb.sendNotice("OK. You want to know about Launch Options. Well, Try these :lo_LaunchOptions",msg['user']); break;} if ((params[i].match(/TIPCLUB/))&&isAdmin) {cb.sendNotice("OK. You want to know about Tipclubs. Well, Try these :lo_Tipclub101 :lo_tipclub102 :lo_tipclub103 :lo_Tipclub104 :lo_tipclub105",msg['user']); break;} if (((params[i]=="BADWORD")||(params[i]=="ADDWORD")||(params[i]=="BADWORDS")||(params[i]=="ADDWORDS"))&&isModel) {cb.sendNotice("/ADDWORD or /BADWORD <word/phrase ending * if a prefix> : adds/removes from badwords.",msg['user']); break;} if (((params[i].match(/GROUP/))||(params[i].match(/TAG/)))&&isModel) {cb.sendNotice("/ADDCREWTAG or /ADDGOLDTAG /CREWTAG /GOLDTAG <word/phrase/emote tag>,Colour : adds to available Tipclub Groups at the end without changing previous groups. On its own the command lists the current groups",msg['user']); break;} // if (params[i].substring(0,4)=="GREM") cb.sendNotice("Gremlins are words, emotes or phrases that are used to replace emoticons from grey users. The list is made with /GREM text or /ADDGREMLIN text ",msg['user']); // if ((params[i].substring(0,4)=="ICON")||(params[i].substring(0,4)=="EMOT")) cb.sendNotice("stdicons are emotes that are not blocked from grey users. The list is made with /ICON :emote or /ADDICON :emote ",msg['user']); if ((params[i].match(/GREM/))&&isModel) {cb.sendNotice("/ADDGREM or /GREMLIN <word/phrase/emote> : adds to random-pick list of replacements for (grey-supplied) emote. ",msg['user']); break;} if (((params[i].match(/ICON/))||(params[i].match(/EMOTE/)))&&isModel) {cb.sendNotice("/ICON /ADDICON or /EMOTE /ADDEMOTE<:emote> : adds to standard (non-blocked) emotes. ",msg['user']); break;} if ((params[i]=="LIMIT")&&isModel) {cb.sendNotice("/LIMIT /NOLIMIT stops blues from messing.",msg['user']); break;} if ((params[i]=="QUELL")&&isModel) {cb.sendNotice("/QUELL /UNQUELL stops everyone from messing.",msg['user']); break;} if ((params[i].match(/THANK/))&&isModel) {cb.sendNotice("/THANKS words and emotes (delay)\nSets the Thanks message after a tip, with a delay (in seconds) to prevent 'tip rain' from causing too many messages. /NOTHANKS turns the feature OFF. /THANKS turns it back ON",msg['user']); break;} if ((params[i].match(/BANNER/))&&isModel) {cb.sendNotice("/NOBANNER switches off the annoucement when a user joins a Tipclub. /BANNER /TIPBANNER or /SHOWBANNER turns it back ON",msg['user']); break;} if ((params[i].match(/NOTICES/))&&isModel) {cb.sendNotice("/NOTICES shows list of noticess to be sent at intervals set by /REPEAT_TIME.",msg['user'],warmBack , '#0000FF', "bold",""); break;} if ((params[i].match(/CURSE/))&&isModel) {cb.sendNotice("New Feature: /CURSE :User_name_or_number_from_pm will curse that user in chat. /CURSE by itself will list cursed users. /BADWORD [word] with square brackets or /ADDCURSE word (without brackets) will make that word a curse word for this session. The user who uses a curse word will be cursed until a tip is sent. The tipvalue to remove a single curse is set to 1 initially but /UNCURSE [number] with square brackets will set it to that value. /UNCURSE :User_name_or_number_from_pm will remove all curses from that user.",msg['user'],warmBack , '#0000FF', "bold",""); break;} if ((params[i]=="NOBB"||params[i]=="NOC2C"||params[i]=="NOFEET"||params[i].match(/FILTER/)||params[i].match(/BLOCKER/))&&isModel) {cb.sendNotice("New Feature: /NOBB /NOC2C /NOFEET will set that filter to block/flag phrases /SHOW... will turn the blocker off. If there is also a badword such as BABY then /SHOWBB will ignore it. These switches can also be set in one of the boxes at Launch time see :lo_Filters",msg['user'],warmBack , '#0000FF', "bold",""); break;} if ((params[i].match(/USER/))&&isAdmin) {cb.sendNotice("/USER xx lists all users beginning xx.",msg['user']); break;} if (((params[i].match(/BACK/))||(params[i].match(/FONT/))||(params[i].match(/FACE/))||(params[i].match(/COLOUR/)))&&isAdmin) {cb.sendNotice(" lists all values of "+params[i]+" in user table (native form).",msg['user']); break;} if ((params[i].match(/GUESS/))&&isModel) {cb.sendNotice("New Feature: /GUESS words \nSets the word or phrase to guess (in a tipnote)\n /GUESS value - sets the exact tokens to have a guess\nDefault value is 5 tokens for the guess in the tipnote\n /GUESS <blank> to turn it off",msg['user']); break;} if (params[i]=="PM") {cb.sendNotice("/PM message <-goes to the broadcaster /PM {no params} lists the user numbers for chatting.",msg['user']); break;} if (params[i]=="MYCHAT") {cb.sendNotice("/MYCHAT colour (from "+ColourNames.join(', ')+") changes your text colour.",msg['user']); break;} if (params[i]=="MYFACE") {cb.sendNotice("/MYFACE number from avatar list\n"+avtable+" changes your avatar.",msg['user']); break;} if (params[i]=="MYFLAG") {cb.sendNotice("/MYFLAG words or emotes to be used as a bad user flag",msg['user']); break;} if ((params[i].substring(0,4)=="EXEC")||(params[i].substring(0,4)=="CREW")||(params[i].substring(0,4)=="GOLD")||(params[i].substring(0,4)=="SILV")||(params[i].substring(0,4)=="ZOMB") ) { cb.sendNotice("Execs/Crew/Gold/Silver are special TipClub members that get a special tag",msg['user']); if ((params[i]=="EXEC1")||(params[i]=="EXEC2")||(params[i]=="CREW")||(params[i]=="GOLD")||(params[i]=="SILVER")||(params[i]=="ZOMBIE") ) cb.sendNotice("Commands: /"+params[i]+" :User_name_or_number_from_pm /UN"+params[i]+" :User_name_or_number_from_pm adds/removes :User_name_or_number_from_pm from the "+params[i]+" list",msg['user']); break;} case "/LIST": { // if (isGrey) break; params[i]=params[i].toUpperCase(); switch (params[i]) // Actor: { case "UNHIDE": // model case "UNSPANK": // model case "UNSPLAT": // Admin unquell case "UNFLAG": // Admin unquell case "UNCURSE": // Admin unquell case "UNFLIP": // Admin unquell case "UNBLOB": // Admin unquell case "UNGARBLE":// Admin unquell case "UNGHOST": // Admin unquell case "UNGREY": // Admin unquell case "UNBLUE": // Admin unquell case "UNLILAC": // Admin case "UNPURPLE": // Admin case "UNRED": // Admin case "UNGREEN": // Admin case "UNEXEC1": // model case "UNSILVER": // model case "UNEXEC2": // model case "UNGOLD": // model params[i]=params[i].substring(2); case "ICON": case "ICONS": case "EMOTE": case "ADDEMOTE": case "ADDEMOTES": case "EMOTES": case "ADDICON": case "ADDICONS": if (params[0]=="/LIST") { cb.sendNotice("ICON: "+stdicons.join(', '),msg['user']); break; } case "GREM": case "GREMS": case "GREMLIN": case "ADDGREM": case "ADDGREMLIN": case "GREMLINS": case "ADDGREMS": case "ADDGREMLINS": if (params[0]=="/LIST") { cb.sendNotice("GREMLIN: "+gremlins.join(', '),msg['user']); break; } case "NOTICES": if (params[0]=="/LIST") { cb.sendNotice("NOTICE: "+notices.join(', '),msg['user']); break; } case "CURSEWORD": case "CURSEWORDS": if (params[0]=="/LIST") { cb.sendNotice("BADWORDS: "+badwords.join(', '),msg['user']); cb.sendNotice(params[i]+": "+cursewords.join(', '),msg['user']); break; } case "ADDWORD": case "ADDWORDS": case "BADWORD": case "BADWORDS": if (params[0]=="/LIST") { cb.sendNotice(params[i]+": "+badwords.join(', '),msg['user']); cb.sendNotice("CURSEWORDS: "+cursewords.join(', '),msg['user']); break; } case "TRACES": if (params[0]=="/LIST") { cb.sendNotice("TRACES: "+traces.join(', '),msg['user']); break; } case "ME": //K if ( (params[0]=="/HELP") &&(params[i]=="ME")) { cb.sendNotice("ME - a name I call myself, FA - a long long way to run, SO - a needle pulling thread, LA - a note to follow so, TE - a drink with jam and bread, and it brings us back to DOH!",msg['user']); break;} if (!isAdmin) break; case "USER": case "USERS": if (params[0]=="/LIST") { var userlist=""; for (var j =0 ; j<all_users.length; j++ ) { // if (fonts[j]>=-1) userlist=userlist+"/"+j+"="+all_users[j]+", "; if (userlist.length>10199) {cb.sendNotice(userlist,msg['user']); userlist="";} } cb.sendNotice(userlist,msg['user']); //cb.sendNotice(params[i]+": "+all_users,msg['user']); break; // } case "COLOUR": case "COLOURS": if (params[0]=="/LIST") {cb.sendNotice(params[i]+": "+colours.join(', '),msg['user']); break;} case "FONTS": if (params[0]=="/LIST") {cb.sendNotice(params[i]+": "+fonts.join(', '),msg['user']); break;} case "BACKS": if (params[0]=="/LIST") {cb.sendNotice(params[i]+": "+backs.join(', '),msg['user']); break;} case "FACE": case "FACES": if (params[0]=="/LIST") {cb.sendNotice(params[i]+": "+faces.join(', '),msg['user']); break; } case "HIDE": //Q case "HIDES": //Q case "SPANK": //Q case "SPANKS": //Q case "GONG": //Q case "GONGS": //Q if (params[0]=="/LIST") {cb.sendNotice(params[i]+": "+hides.join(', '),msg['user']); break;} case "FLAG": //Q case "FLAGS": //Q if (params[0]=="/LIST") {cb.sendNotice(params[i]+": "+flags.join(', '),msg['user']); break;} case "FLIP": // case "FLIPS": // if (params[0]=="/LIST") {cb.sendNotice(params[i]+": "+flips.join(', '),msg['user']); break;} case "SPLAT": // case "SPLATS": // if (params[0]=="/LIST") {cb.sendNotice(params[i]+": "+florals.join(', '),msg['user']); break;} case "CURSE": // case "CURSES": // case "CURSED": // if (params[0]=="/LIST") {cb.sendNotice(params[i]+": "+cursed.join(', '),msg['user']); break;} case "BLOB": // case "BLOBS": // if (params[0]=="/LIST") {cb.sendNotice(params[i]+": "+blobs.join(', '),msg['user']); break;} case "BLA": //Q case "BLAP": //Q case "BLAPP": //Q case "GARBLE": //Q case "GARBLES": //Q if (params[0]=="/LIST") {cb.sendNotice(params[i]+": "+garbles.join(', '),msg['user']); break;} case "GHOST": //X case "GHOSTS": //X if (params[0]=="/LIST") {cb.sendNotice("--------------------------------------------- /UNGHOST "+ghosts.join(', '),msg['user']); break;} case "GREY": //Z case "GREYS": //Z if (params[0]=="/LIST") {cb.sendNotice(params[i]+": "+greys.join(', '),msg['user']); break;} case "BLU": //B case "BLUE": //B case "BLUES": //B if (params[0]=="/LIST") {cb.sendNotice(params[i]+": "+blues.join(', '),msg['user']); break;} case "LILAC": //R case "LILACS": //R if (params[0]=="/LIST") {cb.sendNotice(params[i]+": "+lilacs.join(', '),msg['user']); break;} case "PURPLE": //R case "PURPLES": //R if (params[0]=="/LIST") {cb.sendNotice(params[i]+": "+purples.join(', '),msg['user']); break;} case "RED": //R case "REDS": //R if (params[0]=="/LIST") {cb.sendNotice(params[i]+": "+reds.join(', '),msg['user']); break;} case "VIP": //G case "VIPS": //G case "GREEN": //G case "GREENS": //G if (params[0]=="/LIST") {cb.sendNotice(params[i]+": "+greens.join(', '),msg['user']); break;} case "EXEC1": //I case "EXEC1S": //I case "SILVER": case "CREW": if (params[0]=="/LIST") { bzzt=""; if (exec1s.length>0) bzzt=exec1s[0]+"["+exec1sgrp[0]+"]"; for (var j = 1; j < exec1s.length; j++) { bzzt=bzzt+", "+exec1s[j]+"["+exec1sgrp[j]+"]"; } cb.sendNotice(params[i]+":"+bzzt,msg['user']); break; } case "EXEC1GRP": //K case "EXEC1TAG": //K case "EXEC1VAL": //K case "EXEC1BCK": //K case "CREWGRP": //K case "CREWTAG": //K case "CREWVAL": //K case "CREWBCK": //K case "SILVERGRP": //K case "SILVERTAG": //K case "SILVERVAL": //K case "SILVERBCK": //K if (params[0]=="/LIST") { bzzt=""; for (var j = 0; j < exec1tag.length; j++) { bzzt=bzzt+",\n"+j+"==["+exec1val[j]+"]"; bzzt=bzzt+exec1tag[j]+","; if (colourvalues.indexOf(exec1bck[j])!=-1) bzzt=bzzt+ColourNames[colourvalues.indexOf(exec1bck[j])]; else bzzt=bzzt+exec1bck[j]; } bzzt=bzzt.substring(1); cb.sendNotice(params[i]+":"+bzzt,msg['user']); //cb.sendNotice("EXEC1TAG: "+exec1tag,msg['user']); cb.sendNotice( "EXEC1VAL: "+exec1val,msg['user']); cb.sendNotice("EXEC1BCK: "+exec1bck,msg['user']); break; } // if (params[0]=="/LIST") {cb.sendNotice(params[i]+": "+exec1s,msg['user']); break;} case "EXEC2": //K case "EXEC2S": //K case "ZOMBIE": //K case "ZOMBIES": //K case "GOLD": if (params[0]=="/LIST") { bzzt=""; if (exec2s.length>0) bzzt=exec2s[0]+"["+exec2sgrp[0]+"]"; for (var j = 1; j < exec2s.length; j++) { bzzt=bzzt+","+exec2s[j]+"["+exec2sgrp[j]+"]"; } cb.sendNotice(params[i]+":"+bzzt,msg['user']); break; } case "EXEC2GRP": //K case "EXEC2TAG": //K case "EXEC2VAL": //K case "EXEC2BCK": //K case "GOLDGRP": //K case "GOLDTAG": //K case "GOLDVAL": //K case "GOLDBCK": //K if (params[0]=="/LIST") { bzzt=""; for (var j = 0; j < exec2tag.length; j++) { bzzt=bzzt+",\n"+j+">=["+exec2val[j]+"]"; bzzt=bzzt+exec2tag[j]+","; if (colourvalues.indexOf(exec2bck[j])!=-1) bzzt=bzzt+ColourNames[colourvalues.indexOf(exec2bck[j])]; else bzzt=bzzt+exec2bck[j]; } bzzt=bzzt.substring(1); cb.sendNotice(params[i]+":"+bzzt,msg['user']); //cb.sendNotice("EXEC2TAG: "+exec2tag,msg['user']); cb.sendNotice( "EXEC2VAL: "+exec2val,msg['user']); cb.sendNotice("EXEC2BCK: "+exec2bck,msg['user']); break; } // regular help for all user lists cb.sendNotice("Commands: /"+params[i]+" :User_name_or_number_from_pm /UN"+params[i]+" :User_name_or_number_from_pm adds/removes :User_name_or_number_from_pm from the "+params[i]+" list",msg['user']); // additional info for help if (params[i]=="HIDE") cb.sendNotice("Hides are invisible users - they do not know they are silenced",msg['user']); if (params[i]=="SPANK") cb.sendNotice("Spanks are twice-marked users - will silence themselves by posting badwords or emotes once more",msg['user']); if (params[i]=="GONG") cb.sendNotice("Gongs/Flags are marked users - will silence themselves by posting badwords or emotes twice",msg['user']); if (params[i]=="FLAG") cb.sendNotice("Flags/Gongs are marked users - will silence themselves by posting badwords or emotes twice",msg['user']); if (params[i]=="GREY") cb.sendNotice("Greys can only post standard emotes and lol - good greys can be made BLUE",msg['user']); if (params[i]=="GHOST") cb.sendNotice("Ghosts can chat even when silenced",msg['user']); if ((params[i]=="GARBLE")||(params[i].substring(0,3)=="BLA")) cb.sendNotice("Garble\'d users can only be seen as nonsense",msg['user']); if (params[i].substring(0,4)=="FLIP") cb.sendNotice("Flipped users can only chat upside-down",msg['user']); if (params[i].substring(0,4)=="SPLA") cb.sendNotice("Splatted users can only chat in floral letters",msg['user']); if (params[i].substring(0,4)=="CURS") cb.sendNotice("Cursed users say random curse words",msg['user']); if (params[i].substring(0,4)=="BLOB") cb.sendNotice("Blobbed users can only chat in circled text",msg['user']); } break; } //-- crazyticket users cmds case "/CMDS": case "/TICKETS": case "/PASS": case "/TIMELEFT": case "/SHOWTIME": case "/USETICKET": case "/SAVETICKET": //--mod iff set case "/ADD": case "/AU": case "/DEL": case "/DU": //==MOD CMDS case "/OTS": case "/SENDPW":// case "/ADDP ": case "/DELP": case "/DELOTS": case "/HILITE"://hl case "/HL": case "/STARTSHOW":// case "/STOPSHOW":// case "/SHOWOVER":// case "/SHOWEND": case "/NEWSHOW": case "/VIEWERS": case "/SUBJECT": case "/CTSUBJECT": case "/LOCK":// case "/CHECK":// case "/FAQ":// //--notice *deprecated case "/CTN": case "/CTB": case "/CTM": case "/CTT": case "/SCHAT": case "/SPASS": case "/TIPSOFF": case "/STARTTIMER": case "/PLIST": // case "/PLISTW": // case "/VLIST": case "/ALIST": // case "/OTSLIST": // case "/NEW": case "/EMAIL": case "/SIL": case "/UNSIL": case "/SLIST": //broadcaster commands case "/CHANGEPW": case "/CTPRICE": case "/SUBGOAL": case "/SUPPORT": case "/CTRESET": // end crazyticket commands { msg['X-Spam'] = false; // cb.sendNotice("X-Spam reset"); isXspam =false; // do not hide // cb.log("X11:"+isXspam); break;} default: // not recognised command isCmd = false; msg['X-Spam'] = isXspam; // cb.sendNotice("X-Spam reset"); isXspam = false; // hide if already hidden // cb.log("X12:"+isXspam); } //END CASE } //END FOR PARAMS if ((!isModel) && (params[0]=="/"+string.match(digits))) // parseInt { cb.sendNotice("To "+all_users[string.match(digits)] +"/"+string.match(digits)+" (from /"+all_users.indexOf(msg['user'])+"="+msg['user']+")",cb.room_slug,warmBack,'#0000FF');} else if ((!isModel) && (params[0].substring(0,3)!="/MY") &&((verbose==true)|| (isSecret==true))) cb.sendNotice(string.toLowerCase()+" (issued by /" +all_users.indexOf(msg['user'])+ "="+msg['user']+")",cb.room_slug,warmBack,'#0000FF',(isSecret ? "bolder" : "")); } //END COMMAND TEST // if (isXspam) // Test cursewords here var mask = "xXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXx"; // Auto-da-fe if (!isModel&&!isCmd) for (var i = 0; i < cursewords.length; i++) { //.substr(1,badwords[i].length-2) curseword=cursewords[i].substr(1,cursewords[i].length-2); if (curseword.length>0) { // cb.log("Cword:"+curseword); if (curseword[0]==":") rex0=new RegExp("\\"+curseword+"\\b"); else rex0=new RegExp("\\b"+curseword+"\\b","gi"); var res=rex0.test(msg['m']); //cb.log("Cword:"+curseword+" exp:"+rex0+" res:"+res); if (res) { cb.sendNotice("You are cursed. Tip "+uncurse+" to remove",msg['user']); msg['m']=msg['m'].replace(curseword,mask.substring(0,curseword.length ) ); // if (cursed.indexOf(msg['user'])==-1) enlist(botNam,cursed,"cursed",msg['user']); } } } // from roydz Blocker // Spamfilters // (e *r *o *h *o *o *k *u *p|t *o *p *g *a *m *e *s *c *r *a *c *k|d *e *a *l *n *e *w *s|e *r *o *s *b *b|PremiumCheat|evacamsessions|girls4party|nude4strip|pussy4show|chat4free|best4cams|camnakeds|girls2party|strip4play|miagocam|flirt4show|nude2strip|live4party|girls4strip|just2porn|pussy4strip|wet4guys|flirt4show|miagocam|uhack|tokenschaturbate|f *r *e *e *l *i *v *e *c *a *m *s|9gag*rapist|cams4party|cams4private|PerfectJena35|CherryJenny831|XBabyXJeni67|MelonJenna54|BendyJenny48|VelvetJeni11|SimpleJena345|FlurtyJen5|BBJenny67) if ( /(e+ *r+ *o+ *h+ *o+ *o+ *k+ *u+ *p+|t+ *o+ *p+ *g+ *a+ *m+ *e+ *s+ *c+ *r+ *a+ *c+ *k+|d+ *e+ *a+ *l+ *n+ *e+ *w+ *s+|e+ *r+ *o+ *s+ *b+ *b+|PremiumCheat|evacamsessions|girls4party|nude4strip|pussy4show|chat4free|best4cams|camnakeds|girls2party|strip4play|miagocam|flirt4show|nude2strip|live4party|girls4strip|just2porn|pussy4strip|wet4guys|flirt4show|miagocam|uhack|tokenschaturbate|f+ *r+ *e+ *e+ *l+ *i+ *v+ *e+ *c+ *a+ *m+ *s+|9+g+a+g+.*r+a+p+i+s+t+|cams4party|cams4private|PerfectJena35|CherryJenny831|XBabyXJeni67|MelonJenna54|BendyJenny48|VelvetJeni11|SimpleJena345|FlurtyJen5|BBJenny67)/i.test(msg['m']) && !isAdmin){ cb.sendNotice("You can shove your spam where the sun don't shine!",msg['user']); Target=msg['user']; gender="I"; // if hidden then remove visible flag if (flags.indexOf(Target)!=-1) delist(botNam,flags,"chilled",Target); if (hides.indexOf(Target)==-1)enlist(botNam,hides,"frozen",Target); cb.sendNotice("User "+msg['user']+" has been frozen by "+botNam ,"","#3366FF","#FFFFFF","bolder"); } // bb filter - corrected var detect= "badword"; Target=msg['user']; // function flaggit(rex1,Target,detect); var host = cb.room_slug.replace(/\d+/,''); cb.log("Host -"+host); var giveaway = new RegExp("((\\b"+host+"\S*\\b).*((\\bi know you\\b)|(\\bremember me\\b))|((\\bi know you\\b)|(\\bremember me\\b)).*(\\b"+host+"\S*\\b))","i"); var BBfilt=new RegExp("\\b(bb|b+a+b+y+|b+b+y+|b+a+b+a+y+|b+a+b+e+|b+a+b+z+|b+a+b+e+s+|b+a+b+y+|b+a+b+e+z+|b+a+b+i+e+)\\b","i"); var C2Cfilt=new RegExp("((o+p+[e+a+]n+|s+e+|w+a+t+c+h+|v+i+e+w+|l+o+k a+t+|v+i+s+i+t+) m+y+ (c+a+m+|d+i+c+k+|c+o+c+k+|p+e+n+i+s+))","i"); var Exhibfilt= new RegExp("(\\bs+h+o+w+ *((y*o*u*r+ *)|(y+o*u*r* *))* (a+r+s+e+|a+s+|t+i+t+s+|b+o+(o+|b+)s*|p+u+s+[iy]*|p+u+5+[iy]*"+(noFeet==true ? "|f+e+t+|f+o+t+" : "")+")\\b)","i"); var Opanfilt=new RegExp("(\\bo+p+[e+a+]n+ *((y*o*u*r+ *)|(y+o*u*r* *))* (l+e+g+s+|a+s+|a+r+s+e+|b+o+(o+|b+)s*|p+u+s+[i+y+]+|p+u+5+[i+y+]*|f+e+t+|f+o+t+)\\b)","i"); var Badfilt=new RegExp("(w+h+o+r+e+|s+l+a+g+|b+i+t+c+h+|u+g+l+y+|kena)","i"); if( ((m=flaggit(giveaway,msg['m'],Target))!=null)&& (!isAdmin)&&(gender!="I")){cb.sendNotice("I know *you* "+msg['user']+". Just be honest!",'','','',"bold"); }// \b(bb|baby|bby|babay|babe|babz|babes|baby|babez|babie)\b else if( noBB && ((m=flaggit(BBfilt,msg['m'],Target))!=null)&& (!isAdmin)&&(gender!="I")){cb.sendNotice("No bb, baby or babe please use the models name", msg['user']); msg['m']=msg['m'].replace(m[0],mask.substring(0,m[0].length ) ); cb.sendNotice("Your "+detect+" is just disabled - this time",Target); } // ((op[ea]n|se|watch|view|lok at|visit) my (cam|dick|cock|penis)) else if( noC2C &&((m=flaggit(C2Cfilt,msg['m'],Target))!=null)&& (!isAdmin)&&(gender!="I")){cb.sendNotice("No thank you!", msg['user']); msg['m']=msg['m'].replace(m[0],mask.substring(0,m[0].length ) ); cb.sendNotice("Your "+detect+" is just disabled - this time",Target);} // ((show) *|(y*o*u*r) *|(yo*u*r*) *)(arse|as|tits|bob*s*|pus[iy]*|pu5[iy]*)) + |fet|fot else if( ((m=flaggit(Exhibfilt,msg['m'],Target))!=null)&& (!isAdmin)&&(gender!="I") ){cb.sendNotice("Please tip or if a True Voyeur just wait and enjoy!", msg['user']); msg['m']=msg['m'].replace(m[0],mask.substring(0,m[0].length ) ); cb.sendNotice("Your "+detect+" is just disabled - this time",Target); } // (op[ea]n *(y*o*ur)* *(legs|as|arse|bob*s*|pus[iy]*|pu5[iy]*|fet|fot)) else if( ((m=flaggit(Opanfilt,msg['m'],Target))!=null)&& (!isAdmin)&&(gender!="I")){cb.sendNotice("May I suggest becoming a surgeon if you want to open body parts!", msg['user']); msg['m']=msg['m'].replace(m[0],mask.substring(0,m[0].length ) ); cb.sendNotice("Your "+detect+" is just disabled - this time",Target);} // (whore|slag|bitch|ugly|kena) else if( ((m=flaggit(Badfilt,msg['m'],Target))!=null)&& (!isAdmin)&&(gender!="I") ){ cb.sendNotice("Please go and visit someone elses room that cares what you put!", msg['user']); msg['m']=msg['m'].replace(m[0],mask.substring(0,m[0].length ) ); cb.sendNotice("Your "+detect+" is just disabled - this time",Target); } // (5kpye|skyp3|skyp|5kyp|pacorcera|sky,pe|5ky,pe|5ky,p3|5kyp3) else if( ((m=flaggit(/(5kpye|skyp3|skyp|5kyp|pacorcera|sky,pe|5ky,pe|5ky,p3|5kyp3)/i,msg['m'],Target))!=null)&& (!isAdmin)&&(gender!="I") ){ msg['m']=msg['m'].replace(m[0],mask.substring(0,m[0].length ) ); cb.sendNotice("Your "+detect+" is just disabled - this time",Target); } // badword quick-and-dirty check if (!isModel&&!isCmd) for (var i = 0; i < badwords.length; i++) { badword=badwords[i]; if (badword.length>0) if ((!BBfilt.test(badword)||noBB)) // if bb not in badword OR bb not allowed in switch (noBB) -check { if (BBfilt.test(badword)) cb.log("badword:"+badword+" BBfil:"+BBfilt.test(badword)+" noBB:"+noBB); if (badword[badword.length-1]=="*") var rex10=new RegExp("\\b"+badword.substring(0,badword.length-2),"gi"); else rex10=new RegExp("\\b"+badword+"\\b","gi"); if( ((m=flaggit(rex10,msg['m'],Target))!=null)&& (!isAdmin)&&(gender!="I") ){ msg['m']=msg['m'].replace(m[0],mask.substring(0,m[0].length ) ); cb.sendNotice("Your "+detect+" is just disabled - this time",Target); } }//valid badword } //end of badwords loop // crazycharlies filters var capCount = msg['m'].match(/[A-Z]/g); var lowCount = msg['m'].match(/[a-z]/g); if ((!isModel)&&!isCmd) if (capCount != null && capCount.length >2) { if (lowCount == null) lowCount = []; //if there are more caps than lower case in the message, it's considered all caps if (capCount.length > lowCount.length) { // stop shouting var detect= "shouting"; Target=msg['user']; if( ((m=flaggit(/[A-Z]/,msg['m'],Target))!=null)&& (!isAdmin)&&(gender!="I") ){ msg['m']=msg['m'].toLowerCase(); cb.sendNotice("Your "+detect+" is just disabled - this time",Target); } } } // var charMatch = new RegExp("([\\w])\\1{4}", "g"); // cb.log("11."+charMatch); if ((!isModel)&&!isCmd) // if (charMatch.test(msg['m'])) { // sticky keys var detect= "sticky keys"; Target=msg['user']; if( ((m=flaggit(/([\w])\1{4}/,msg['m'],Target))!=null)&& (!isAdmin)&&(gender!="I") ){ msg['m']=msg['m'].replace(m[0], ''); cb.sendNotice("Your "+detect+" is just disabled - this time",Target); } } if ((isGrey)&&(gender!="I")&&(gender!="G")&&!isCmd) { //icons test words = msg['m'].split(" "); clean = []; var baddy=new RegExp("\\s[:][a-z_0-9]{3,}\\b","i"); for (var i = 0; i < words.length; i++) { word = " "+words[i]; if ( baddy.test(word)==true ) { Target=msg['user']; if (stdicons.indexOf(words[i])==-1) { var r = Math.floor(Math.random()*(gremlins.length) ); if (r==0) word=word.replace(":","\uA789"); else word=gremlins[r]; cb.log("r="+r+" word:"+word); if (noGremflag==false) // if true then skip this bit { if (hides.indexOf(Target)!=-1) { gender="I"; delist(botNam,flags,"listed",Target); cb.sendNotice("User "+Target+" has been frozen by "+botNam ,"","#3366FF","#FFFFFF","bolder"); } else // not yet hidden but flagged already? second strike { gender="X"; cb.sendNotice("Your non-standard emote images are just disabled - this time. The only emotes allowed are "+stdicons,msg['user']); if (flags.indexOf(Target)!=-1) enlist(botNam,hides,"chilled",Target); else enlist(botNam,flags,"flurried",Target); } } } } clean.push(word); } // cb.log("12."+clean); msg['m'] = clean.join(' '); } // just a simple test var start = new RegExp(mark); while (start.test(msg['m'])) { cb.log("prefix1:"+msg['m']); var s = msg['m'].search(mark); msg['m']= msg['m'].substr(0,s)+flourish(msg['m'].substring(s+1)); cb.log("prefix2:"+msg['m']); } var newly=new RegExp("(^|\\s):nl(\\b|$)","gi"); if (newly.test(" "+msg['m'])) msg['m']=msg['m'].replace(newly," :white1067"); var emohi=new RegExp("(^|\\s):hi(\\b|$)","gi"); if (emohi.test(" "+msg['m'])) { msg['m']=":hello"; for (var j =0 ; j<all_users.length; j++ ) if ((fonts[j]>=-1)&&(all_users[j]!=msg['user'])) { msg['m']=msg['m']+" "+all_users[j];} } var emohi=new RegExp("(^|\\s):lo(\\b|$)","gi"); if (emohi.test(" "+msg['m'])) { if (msg['user']=="lolo1964") msg['m']=font("HI FRoM LoLo FoR ","script"); else msg['m']=":hi8"; for (var j =0 ; j<all_users.length; j++ ) if ((fonts[j]>=-1)&&(all_users[j]!=msg['user'])) { msg['m']=msg['m']+" "+font(j+"=","subscript")+all_users[j];} } var emohi=new RegExp("(^|\\s):cu(\\b|$)","gi"); if (emohi.test(" "+msg['m'])) { msg['m']=":bye"; for (var j =0 ; j<all_users.length; j++ ) if ((fonts[j]>=-1)&&(all_users[j]!=msg['user'])) { msg['m']=msg['m']+" "+all_users[j];} } var emohi=new RegExp("(^|\\s):fu(\\b|$)","gi"); if (emohi.test(" "+msg['m'])) { msg['m']=":finger"; for (var j =0 ; j<all_users.length; j++ ) if ((fonts[j]>=-1)&&(all_users[j]!=msg['user'])) { msg['m']=msg['m']+" "+all_users[j];} } // NOW HOW ABOUT A CURSE? mess[0]='\u1da0\u2092\u1d58\u1d65\u1d9c\u2091\u1d4f\u1d63\u002e'; mess[1]=' p\u0489u\u0489s\u0489s\u0489y\u0489 ' ; mess[2]="lickity spit"; if (cursed.indexOf(msg['user'])!=-1) { cb.log("cursed"); if (verbose == true) cb.sendNotice("User "+msg['user']+" said: "+msg['m'],cb.room_slug,warmBack , '#0000FF', "bold","" ); for (var j=0; j<A0.length; j++) cb.sendNotice("User "+msg['user']+" said: "+msg['m'],font(A0[j].replace(".",""),"blap"),warmBack , '#0000FF', "bold","" ); var counts = 0; for (var i = 0; i < cursed.length; i++) if (cursed[i]==msg['user']) counts++; cb.sendNotice(msg['user']+" has "+counts+" curses",cb.room_slug,warmBack , '#0000FF', "bold","" ); msg['m']="\u2620\u202e"+msg['m'].split(' ').join(' \u202B '); for (var i=0; i<counts; i++) { var ind=Math.floor(Math.random()*(msg['m'].length-1)); msg['m']=msg['m'].substr(0, ind) + mess[Math.floor(Math.random()*2)]+ msg['m'].substr(ind + 1); } // msg['m']=mess[0]+msg['m']+" lickity spit"; } // NOW GARBLE or flip or blob after processing any valid stuff // negative fonts means out of room var f=fonts[all_users.indexOf(msg['user'])]; var stdfont=["arial","bookman old style","comic sans","courier","lucida","palantino","tahoma","times new roman"]; if (stdfont.indexOf(fontnames[f])!=-1) { cb.log("font is "+f); msg['f']=fontnames[fonts[all_users.indexOf(msg['user'])]]; cb.sendNotice("User "+msg['user']+" said: "+msg['m'],"",warmBack , '#0000FF', "bold","" ); } // cb.log("12x.Font found "+fonts[all_users.indexOf(msg['user'])]); else if ((f>=-1)&&(garbles.indexOf(msg['user'])!=-1)) { if (verbose == true) cb.sendNotice("(verbose) User "+msg['user']+" said: "+msg['m'],cb.room_slug,warmBack , '#0000FF', "bold","" ); for (var j=0; j<A0.length; j++) cb.sendNotice("blapmon "+j+".User "+msg['user']+" said: "+msg['m'],font(A0[j].replace(".",""),"blap"),warmBack , '#0000FF', "bold","" ); msg['m']=rot13(msg['m']); } else if ((f>=-1)&&(flips.indexOf(msg['user'])!=-1)) { for (var j=0; j<A0.length; j++) cb.sendNotice("flipmon "+j+".User "+msg['user']+" said: "+msg['m'],font(A0[j].replace(".",""),"blap"),warmBack , '#0000FF', "bold","" ); msg['m']=flip(msg['m']); } else if ((f>=-1)&&(blobs.indexOf(msg['user'])!=-1)) { for (var j=0; j<A0.length; j++) cb.sendNotice("blobmon "+j+".User "+msg['user']+" said: "+msg['m'],font(A0[j].replace(".",""),"blap"),warmBack , '#0000FF', "bold","" ); msg['m']=blob(msg['m']); } else if ((stdfont.indexOf(fontnames[f])==-1)&&(f>=-1)&&(florals.indexOf(msg['user'])!=-1)) { for (var j=0; j<A0.length; j++) cb.sendNotice("splatmon "+j+".User "+msg['user']+" said: "+msg['m'],font(A0[j].replace(".",""),"blap"),warmBack , '#0000FF', "bold","" ); msg['m']=floral(msg['m']); } else if ((stdfont.indexOf(fontnames[f])==-1)&&(f>-1)&&!isXspam) { for (var j=0; j<A0.length; j++) cb.sendNotice("genmon "+j+".User "+msg['user']+" said: "+msg['m'],font(A0[j].replace(".",""),"blap"),warmBack , '#0000FF', "bold","" ); msg['m']=font(msg['m'],fontnames[f]); } cb.log("Cmd "+isXspam+":"+isCmd); var alldig = new RegExp("^[-+]?\\d+$"); if ((isXspam!=true)&&!isCmd) { avatar=":gender"+gender; if (avatar==":genderX") avatar=myFlag; if ((alldig.test(faces[all_users.indexOf(msg['user'])]) )) // if( faces[all_users.indexOf(msg['user'])]==faces[all_users.indexOf(msg['user'])].match(digits)) { if (parseInt(faces[all_users.indexOf(msg['user'])])>=0) avatar=":avatar_"+avrows[ Math.floor( parseInt( faces[all_users.indexOf(msg['user'])]) /10) ]+"_"+ (+parseInt(faces[all_users.indexOf(msg['user'])])%10 + (+1)); } else avatar = faces[all_users.indexOf(msg['user'])]; // else cb.log(faces[all_users.indexOf(msg['user'])]+" not numeric"); // if exec - prefix msg if (exec2s.indexOf(msg['user'])!=-1) { // cb.log("13."+msg['user']+"="+indexOf(msg['user'])+"="+exec2s.indexOf(msg['user'])); if (exec2sgrp[exec2s.indexOf(msg['user'])]!=null) { // cb.log("13a."+exec2tag); if (exec2bck[exec2sgrp[exec2s.indexOf(msg['user'])]]!=null) msg['background'] = exec2bck[exec2sgrp[exec2s.indexOf(msg['user'])]]; if (backs[all_users.indexOf(msg['user'])]!=-1) msg['background'] = backs[all_users.indexOf(msg['user'])]; } // else // avatar=String.fromCharCode(9351+1); if (digits.test(faces[all_users.indexOf(msg['user'])]) ) { if (faces[all_users.indexOf(msg['user'])]<0) avatar=exec2tag[exec2sgrp[exec2s.indexOf(msg['user'])]]; } avatar=" "+avatar+" : " ; } else if (exec1s.indexOf(msg['user'])!=-1) // if (exec1flag[0]!="") { if (exec1sgrp[exec1s.indexOf(msg['user'])]!=null) { //cb.log("13b."+exec1flag); if (exec1bck[exec1sgrp[exec1s.indexOf(msg['user'])]]!=null) msg['background'] = exec1bck[exec1sgrp[exec1s.indexOf(msg['user'])]]; if (backs[all_users.indexOf(msg['user'])]!=-1) msg['background'] = backs[all_users.indexOf(msg['user'])]; } // else // avatar=String.fromCharCode(9331+1); if (digits.test(faces[all_users.indexOf(msg['user'])]) ) { if (faces[all_users.indexOf(msg['user'])]<0) avatar=exec1tag[exec1sgrp[exec1s.indexOf(msg['user'])]]; } avatar=" "+avatar+" : " ; } // this is waitingfor a counter for multiple entry tips msg['m']=String.fromCharCode(9351+1)+": "+msg['m']; // FINALLY PUT THE AVATAR IN // prefix all others with M F C S G gender/color // else ///// must allow admins to be ghosts // not exec1 or exec2 (but may be host) prefix so gender else if (digits.test(faces[all_users.indexOf(msg['user'])]) ) { if (avatar=="genderX") avatar=myFlag; if (showgender!=true) avatar=""; // cb.log("14.showgender="+showgender+" isXspam="+isXspam); } msg['m']=avatar+" "+msg['m']; } // else ///// must allow admins to be ghosts if ((gender=="G") || (gender=="I")) // G are ghosts to speak, I are hidden to be Invisible { msg['X-Spam'] = true; // cb.log("13.gender="+gender+" isPrivate="+isPrivate); if ((gender=="G") && (!isPrivate)) cb.sendNotice( "Ghost "+msg['user']+" "+msg['m']); if ((gender=="I")&&(verbose==true)) cb.sendNotice( "invisible "+msg['user']+" said : "+msg['m'],cb.room_slug); } if (isSecret&&isCmd) { msg['background'] ="wheat"; msg['c']="blue"; } if (colours[all_users.indexOf(msg['user'])]!="") msg['c']=colours[all_users.indexOf(msg['user'])]; if (backs[all_users.indexOf(msg['user'])]!=-1) msg['background'] = backs[all_users.indexOf(msg['user'])]; // cb.log("15."+msg['m']); return msg; }); // / / / / /// / / / / /// / / / / /// / / / / /// / / / / %%%%%///////////// / / / / / / / / / / / / / / / / / / / / / / / / . cb.onTip(function (tip) { // cb.sendNotice(tip); if (!hazlist) { init(); cb.sendNotice("SlotFail"); } var digits = new RegExp("\\d+"); // if (tip['message']=='chronosynclasticinfundibulum') { cb.sendNotice("fake zero accepted",tip['from_user']); tip['amount']=0;} var amountTipped = parseInt(tip['amount']); if (guessGame&&(amountTipped==guessCost)) { cb.sendNotice(tip['from_user'].toLowerCase()+" guessed "+tip['message'],cb.room_slug,warmBack , '#0000FF', "","" ); var guess=new RegExp("\\b"+guessMatch+"\\b","gi"); if (guess.test(tip['message'])) { guessGame=false; cb.sendNotice(tip['from_user'].toLowerCase()+" guessed "+guessMatch+" CORRECTLY","",warmBack , '#0000FF', "bold","" );} } if ((all_users.indexOf(tip['from_user'])==-1)) { enlist(botNam,all_users,"entered",tip['from_user'].toLowerCase()); colours.push(""); backs.push(-1); fonts.push(-1); faces.push(-1); // default text colour if zero then will not be changed totalTips.push(0); lastTotal.push(0); timers.push(""); if (( tip['from_user']== cb.room_slug ) ||(tip['from_user_is_mod']==true) ||( tip['from_user_in_fanclub']==true) ||(tip['from_user_has_tokens']==true) ||(tip['from_user_tipped_recently']==true) ||(exec2s.indexOf(tip['from_user'])!=-1) ||(exec1s.indexOf(tip['from_user'])!=-1) ||(reds.indexOf(tip['from_user'])!=-1) ||(greens.indexOf(tip['from_user'])!=-1) ||(blues.indexOf(tip['from_user'])!=-1)) cb.sendNotice("You are user number:"+all_users.indexOf(tip['from_user']),tip['from_user']); else { cb.sendNotice("You are GREY. Your entered user number is:"+all_users.indexOf(tip['from_user'])+". Please DO NOT USE CAPITALS, repeated keys, non-standard emoticons or words which are banned here. You will be warned, then silenced after being flagged 3 times, shown by a flaming avatar.",tip['from_user']); if ((verbose == true)) { cb.sendNotice( tip['from_user'] + ' (no tokens) has entered ',cb.room_slug); } } } lastTotal[all_users.indexOf(tip['from_user'])]=totalTips[all_users.indexOf(tip['from_user'])]; totalTips[all_users.indexOf(tip['from_user'])]+=amountTipped; // if ((lastTotal[all_users.indexOf(tip['from_user'])]==0)&&showThanks) cb.sendNotice(thanksMessage+"","",warmBack , '#0000FF', "bold","" ); timers[all_users.indexOf(tip['from_user'])]=cb.setTimeout(function() { cb.log("1."+thanksMessage+" to "+tip['from_user']+" for "+totalTips[all_users.indexOf(tip['from_user'])]+" tokens so far. Previously "+lastTotal[all_users.indexOf(tip['from_user'])] ); if ((lastTotal[all_users.indexOf(tip['from_user'])]!=totalTips[all_users.indexOf(tip['from_user'])])&&showThanks) // { cb.sendNotice("DUMMY"+ thanksMessage+" to "+tip['from_user']+" for "+totalTips[all_users.indexOf(tip['from_user'])] + " tokens so far","",warmBack , '#0000FF', "bold","" ); // } // else { lastTotal[all_users.indexOf(tip['from_user'])]=totalTips[all_users.indexOf(tip['from_user'])]; timers[all_users.indexOf(tip['from_user'])]=cb.setTimeout(function() { cb.log("2."+thanksMessage+" to "+tip['from_user']+" for "+totalTips[all_users.indexOf(tip['from_user'])]+" tokens so far. Previously "+lastTotal[all_users.indexOf(tip['from_user'])] ); if ((lastTotal[all_users.indexOf(tip['from_user'])]==totalTips[all_users.indexOf(tip['from_user'])])&&showThanks) cb.sendNotice(thanksMessage+" to "+tip['from_user']+" for "+totalTips[all_users.indexOf(tip['from_user'])]+" tokens so far","",warmBack , '#0000FF', "bold","" ); else lastTotal[all_users.indexOf(tip['from_user'])]=totalTips[all_users.indexOf(tip['from_user'])]; } ,thanksDelay*1000);} },thanksDelay*1000); // cb.sendNotice(tip['from_user']+" has sent "+totalTips[all_users.indexOf(tip['from_user'])]+"\n tot talTips:"+totalTips); if (!tip['from_user_has_tokens']) { cb.sendNotice("User: "+tip['from_user']+" HAS NO TOKENS",cb.room_slug); } if (cursed.indexOf(tip['from_user'])!=-1) { for (var i=amountTipped; i>=uncurse; i-=uncurse) delist(botNam,cursed,"cursed",tip['from_user']); } bump1(amountTipped,tip['from_user']); // TIPPER BUMP bump2(amountTipped,tip['from_user']); // TIPPER BUMP // cb.log("17."+tip); }); function bump1(points,Target) { // cb.log("bump points:"+points+" Target:"+Target); var curval=0; var numer=exec1s.indexOf(Target); // Now calling it SILVER group var curgrp=exec1sgrp[numer]; if (numer!=-1) curval=parseInt(exec1val[curgrp]); // cumulative var exec1count = []; exec1val.forEach(function(x) { exec1count[x] = (exec1count[x] || 0)+1; }); if ( (exec1count[points+curval]>0) || ((exec1count[points]>0)&&(points>=curval)) || (points==0)) { var check =parseInt(points)+curval; // haha it was adding 1 and 0 and getting 10 !! if ( (exec1count[check]==undefined) ){ check=points; cb.log("use Points ="+check); } exec1free = getFree(exec1val,exec1sgrp,check); frees=Object.keys(exec1free).length; if (frees>1) {r = 1+Math.floor(Math.random()*(frees-2)+0.5); } else {r=0; i=Object.keys(exec1free)[r]; cb.log("FreeCountFail, frees="+i); } i = Object.keys(exec1free)[r]; // group chosen if (tipBanner) tipbanner(exec1s,exec1tag[i],Target); // if (curgrp==i) cb.sendNotice("\u15F4"+font(">!!JOINED AGAIN!!<","wide")+"\u15F1","",'#43FF00','#CB00FF',""); if (curval==parseInt(exec1val[i])) { cb.log("group change"); if (verbose) cb.sendNotice("\u15F4>!!JOINED AGAIN!!<\u15F1","",'#43FF00','#CB00FF'); } if (numer==-1) enlist(botNam,exec1s,"exec1ed",Target); if (parseInt(exec1val[i])>=curval) exec1sgrp[exec1s.indexOf(Target)]=i; // break; } }; function bump2(points,Target) { var curval=0; var numer=exec2s.indexOf(Target); // Now calling it GOLD group var curgrp=exec2sgrp[numer]; if (numer!=-1) curval=parseInt(exec2val[curgrp]); // cumulative var exec2count = []; exec2val.forEach(function(x) { exec2count[x] = (exec2count[x] || 0)+1; }); var out = ''; var lo=0; for (var x in exec2count) { // out += x + ': ' + exec2count[x] + ' , '; if (x<=(parseInt(points))&&(x>=curval)&&(x>lo)) lo=x; } if (lo!=0) { check = lo ; // exec2val[i]; exec2free = getFree(exec2val,exec2sgrp,check); frees=Object.keys(exec2free).length; if (frees>1) r = 1+Math.floor(Math.random()*(frees-2)+0.5); else {r=0; i=Object.keys(exec2free)[r]; cb.log("FreeCountFail, frees="+i); } i = Object.keys(exec2free)[r]; if (tipBanner) tipbanner(exec2s,exec2tag[i],Target); if (curval==parseInt(exec2val[i])) // if (curgrp==i) if (verbose) cb.sendNotice("\u15F4>!!JOINED AGAIN!!<\u15F1","",'#43FF00','#CB00FF'); if (numer==-1) enlist(botNam,exec2s,"exec2ed",Target); if (parseInt(exec2val[i])>=curval) { // cb.log("i:"+i+" goldval["+i+"]:"+exec2val[i]+" curval:"+curval); exec2sgrp[exec2s.indexOf(Target)]=i; }// NOTE >= now } }; function getFree(vals,grps,tokens) { var execfree= {}; var arr = grps.join(',').split(','); // had to do this to get indexOf to work !! for ( i=0 ; i< vals.length ; i++) if (parseInt(vals[i])==tokens ) // list all empty groups PLUS the first- empty or not if ((arr.indexOf( i.toString() )==-1) || (Object.keys(execfree).length==0 )) execfree[i] = arr.indexOf( i.toString() ); // return execfree; }; function tipbanner(list,tag,tipper) { // just for certain rooms var GroupEntry="has joined the"; if (cb.room_slug=="naughtyred") { GroupEntry="is welcomed to the faery circle as "; } if (cb.room_slug=="lolo1964") GroupEntry="has grown"; if (cb.room_slug=="domino") { GroupEntry="has bought"; } if (cb.room_slug=="squigglycat") { GroupEntry="has bought"; } var userWidth = tipper.length; var groupWidth = GroupEntry.length; var clubWidth = tag.length; var emo=new RegExp("(^|\\s)[:][a-z_0-9]{3,}(\\b|$)","gi"); if ((emo.test(" "+tag)==true)) { // only one emote allowed per line, width 6 chars = 125pix var x=tag.match(emo); // cb.sendNotice("emo:"+x+" leng:"+ x[0].length); clubWidth = clubWidth -x[0].length+6; } var maxWidth = Math.max(userWidth,clubWidth,groupWidth,12); var userSpaces = new Array(Math.floor( (maxWidth-userWidth)/2)+1 ).join(' '); var groupSpaces = new Array(Math.floor( (maxWidth-groupWidth)/2)+1 ).join(' '); var clubSpaces = new Array(Math.floor( (maxWidth-clubWidth)/2)+1 ).join(' '); var c12Spaces = new Array(Math.floor( (maxWidth-12)/2)+1 ).join(' '); // var c9Spaces = new Array(Math.floor( (maxWidth-9)/2)+1 ).join(' '); var blnkSpaces = new Array(Math.floor(maxWidth)+1).join(' '); var blnkS = "\u2661"+blnkSpaces +"\u2661"; var roller="\u0488\u0323\u0325\u0323\u0325\u0323\u0325\u0323\u0325\u0323\u0325\u0323\u0325\u0323\u0325\u0323\u0325\u0323\u0325\u0323\u0325\u0323\u0325\u0323\u0325\u0323\u0325\u0323\u0325\u0323\u0325\u0323\u0325\u0323\u0325\u0323\u0325\u0323\u0325\u0323\u0325\u0323\u0325\u0323\u0325."; var BackG = new Array(3*maxWidth+8).join(roller); cb.sendNotice(BackG,"",'#FFFFFF','#43FF00',"bolder"); var A=userSpaces+tipper+userSpaces; if ((maxWidth-A.length)!=0) A=A+" "; var B=groupSpaces+GroupEntry+groupSpaces; if ((maxWidth-B.length)!=0) B=B+" "; var C=clubSpaces+tag+clubSpaces; if ((maxWidth-clubSpaces-clubSpaces-clubWidth)!=0) C=C+" "; var D=c12Spaces+"(Elite Club)"+c12Spaces; if ((maxWidth-c12Spaces-c12Spaces-12)!=0) D=D+" "; // var E=c9Spaces+"!!AGAIN!!"+c9Spaces; if ((maxWidth-c9Spaces-c9Spaces-9)!=0) E=E+" "; var Footer=font("\u15F4>"+D+"<\u15F1","wide"); var Banner="\u2661"+font(A,"wide")+"\u2661\n\u2661"+font(blnkSpaces,"wide")+"\u2661\n\u2661"+font(B,"wide")+"\u2661\n\u2661"+font(blnkSpaces,"wide")+"\u2661\n\u2661"+font(C,"wide")+"\u2661\n"; // cb.sendNotice(BackG+Banner+Footer,"",'#FFFFFF','#43FF00',"bolder"); cb.sendNotice(Banner,"","#43FF00",'#CB00FF',""); cb.sendNotice(Footer,"",'#FFFFFF','#43FF00',""); // if (list.indexOf(tipper)!=-1) cb.sendNotice(font("\u15F4>"+E+"<\u15F1","wide"),"",'#43FF00','#CB00FF',""); cb.sendNotice(cb.room_slug+" MAKE A NOTE FOR NEXT SESSION START SETTINGS!",cb.room_slug); }; ////////////////////////////////////////////////////////////////////////////////// function init(){ //cb.sendNotice(cb.settings.red_users); setup(); }; function setup(){// cb['settings']['slot']; if (cb.settings.slot==undefined) { cb.sendNotice("comping"); return; } // hides = cb.settings.hide_users.trim().toLowerCase().replace(/\s+/g, " ").split(","); // flags = cb.settings.flag_users.trim().toLowerCase().replace(/\s+/g, " ").split(","); // flips = cb.settings.flip_users.trim().toLowerCase().replace(/\s+/g, " ").split(","); // blobs = cb.settings.blob_users.trim().toLowerCase().replace(/\s+/g, " ").split(","); // garbles = cb.settings.garble_users.trim().toLowerCase().replace(/\s+/g, " ").split(","); // ghosts = cb.settings.ghost_users.trim().toLowerCase().replace(/\s+/g, " ").split(","); // greys = cb.settings.grey_users.trim().toLowerCase().replace(/\s+/g, " ").split(","); // blues = cb.settings.blue_users.trim().toLowerCase().replace(/\s+/g, " ").split(","); // cb.settings_choices = [{ name: 'red_users', defaultValue: 'uglycat'}]; gremlins.push(0); var t=cb.room_slug.split(''); t[0]=t[0].toUpperCase(); gremlins.push("I Love "+t.join('')); gremlins.push("Chicken Nuggets "); if (cb.room_slug=="lonequark") myFlag="\u2620"; // 9760 skull if (cb.room_slug=="miketradr") thanksMessage=":mxx"; if (cb.room_slug=="caidence23") thanksMessage=":rate-me :caidtybb :caid-thx1"; if (cb.room_slug=="caidence23") hides = ["xzite_v2","miss_picante","dylandeap"]; if (cb.room_slug=="naughtyred") showgender = false; if (cb.room_slug=="naughtyred") { notices.push("Tip 345 to join Red's Faery Circle"); repeat_text = "Tip 345 to join Red's Faery Circle";} if (cb.room_slug=="mattmoney18") garbles = ["hapenstance","sparklybabes3","jerrysnorts","damhard1"]; if ((cb.room_slug=="mattmoney18")||(cb.room_slug=="damagedlilfkkr")||(cb.room_slug=="lonequark")) blues = ["50chris","nerf_the_monkey_killer","buckiemohawk","africanamerican","zedaladicus","kylan_edwards","opanbobsbb","wolfg84","superfreak_427","svsdanger","happydaze","terrysready4more","vespius","auroraghost","cliteater22222","cognitionlogic","riteof2","friskycat","nanomachinesson","ridesdickharder","broski_6969","jt1963","mccullen","sexykitten108","leoaboy","tynir222","kreegan7","dubstep_king69"]; if (cb.room_slug=="domino") blues = ["nerf_the_monkey_killer","durtydurtyboi","buckiemohawk"]; if ((cb.room_slug=="mattmoney18")||(cb.room_slug=="damagedlilfkkr")||(cb.room_slug=="lonequark")) hides = ["hsemedo","imstillhere","93moneynetwork","bonquisha88"]; if (cb.room_slug=="caidence23") blues = ["joecichlid","vsirl005","craignz"]; if (cb.room_slug=="caidence23") { tipBanner = false; noGremflag=true; } if (cb.room_slug=="amber_wolve") { tipBanner = false; noGremflag=true; } if (cb.room_slug=="badgirlbetttie") { noGremflag=true; } if (cb.room_slug=="ridesdickharder") blues = ["guythatmakesyoulaugh","mave666","dreambwoy","bobdezal"]; if (cb.room_slug=="ridesdickharder") hides = ["avngrassem","thorod87","damhard1","cumhard4me","cumhardforu","jpformo","hsemedo"]; if (cb.room_slug=="ridesdickharder") garbles = ["hapenstance","sparklybabes3","jerrysnorts","damhard1"]; if (cb.room_slug=="lolo1964") blues = ["professor_sam"]; if (cb.room_slug=="lolo1964") hides = ["hsemedo","imstillhere","93moneynetwork","bonquisha88"]; if ((cb.room_slug=="mattmoney18")||(cb.room_slug=="damagedlilfkkr")||(cb.room_slug=="lonequark")||(cb.room_slug=="lolo1964")) hides = ["cumhard4me","cumhardforu"]; if (cb.room_slug=="2looking4more860") noBB=false; // if not keyword, then assume the key is as box description // also allow Notice: prefix. var res = checkout(cb.settings.red_users); if (res!=undefined) reds= res.trim().toLowerCase().replace(/\s+/g, " ").split(",").concat(reds); var res = checkout(cb.settings.green_users); if (res!=undefined) greens= res.trim().toLowerCase().replace(/\s+/g, " ").split(",").concat(greens); var res = checkout(cb.settings.exec1_flag); if (res!=undefined) exec1flag= res.trim().replace(/\s+/g, " ").split(",").concat(exec1flag); var res = checkout(cb.settings.exec1_users); if (res!=undefined) { exec1s= res.trim().toLowerCase().replace(/\s+/g, " ").split(",").concat(exec1s); cb.log("**Exec1s["+exec1s+"]");} var res = checkout(cb.settings.exec2_flag); if (res!=undefined) exec2flag= res.trim().replace(/\s+/g, " ").split(",").concat(exec2flag); var res = checkout(cb.settings.exec2_users); if (res!=undefined) exec2s= res.trim().toLowerCase().replace(/\s+/g, " ").split(",").concat(exec2s); var res = checkout(cb.settings.bad_words); if (res!=undefined) badwords= res.trim().replace(/\s+/g, " ").split(",").concat(badwords); for (var n=0; n<13; n++) {deck[n*4+0]=(n+1)+"d";deck[n*4+1]=(n+1)+"c";deck[n*4+2]=(n+1)+"h";deck[n*4+3]=(n+1)+"s";} // cb.log("18.bad:"+badwords+":curse-"+cursewords); // setup reference lists colours for (var i = 0; i<ColourNames.length ; i++) colournames[i]=ColourNames[i].toLowerCase(); // ["wide","bold","italic","bolditalic","script","boldscript","fraktur","doublestruck","boldfraktur","sansserif","sansserifbold","sansserifitalic","sansserifbolditalic","monospace","cursive","subscript","crazy","weird","odd","blob","blap","flip","floral","arial","bookman old style","comic sans","courier","lucida","palantino","tahoma","times new roman"]; // FONTS // 4 "script B E F H I L M R e g o", 66 69 70 72 73 76 77 82 101 103 111 // 0 "wide", // 5 "boldscript", = cursive // 1 "bold+", = bold // 6 "fraktur-C H I R Z", 67 72 73 82 90 // 2 "italic - h", // 7 "doublestruck-C H N PQR Z", 67 72 78 80 81 82 90 // 3 "bolditalic", = italic // 8 "boldfraktur", =fraktur // 9 "sansserif+", 10 "sansserifbold+", 11 "sansserifitalic", 12 "sansserifbolditalic", // 13 "monospace+", (14 "cursive"), 15 "subscript", // superscript upper no c f q s v xyz //'\u1d2c\u1d2e \u1d30\u1d31 \u1d33\u1d34\u1d35\u1d36\u1d37\u1d38\u1d39\u1d3a\u1d3c\u1d3e \u1d3f \u1d40\u1d41 \u1d42 ' // supercript lower - no q // '\u1d43\u1d47\u1d9c\u1d48\u1d49\u1da0\u1d4d\u02b0\u1da4\u02b2\u1d4f\u02e1\u1d50\u1d51\u1d52\u1d56 \u02b3\u02e2\u1d57\u1d58\u1d5b\u02b7\u02e3\u02b8\u1dbb' // // 16 "crazy", 17 "weird", 18 "odd" 19 BLOB 20 ROT13 21 FLIP 22 FLORAL // 16/23 "Arial", 17/24 "Bookman Old Style", 18/25 "Comic Sans", 19/26 "Courier", // 20/27 "Lucida", 21/28 "Palantino", 22/29 "Tahoma", 23/30 "Times New Roman" // 24/16 "crazy", 25/17 "weird", 26/18 "odd" 27/19 BLOB 28/20 ROT13 29/21 FLIP 30/22 FLORAL var unico=["wide","bold","italic","bolditalic","script","boldscript","fraktur","doublestruck","boldfraktur","sansserif","sansserifbold","sansserifitalic","sansserifbolditalic","monospace","cursive","subscript"]; charset=new Array(31); for (var fon=0 ; fon<fontnames.length ; fon++) { var thisfont=fontnames[fon]; f=unico.indexOf(thisfont); charset[fon]=new Array(); //cb.log("Fon "+fon+":"+thisfont); if ( thisfont=="wide") { for (var c=0; c<128 ; c++) if (c<32) charset[fon][c]=toUTF16(c); else charset[fon][c]=toUTF16(c+65248); charset[fon][32]=toUTF16(8195); } else if (f!=-1) // normally f=fon initially // for (var f=1; f<16; f++) { if (f>=14) a=5; else a=f; //cursive AND subscript pro tem. // cb.log("a="+a); for (var c=0; c<128 ; c++) { charset[fon][c]=toUTF16(c); if ((c>64) && (c<91)) charset[fon][c]=toUTF16(c+(119756+a*52-65)); //ccapital else if ((c>96) && (c<127)) charset[fon][c]=toUTF16(c+(119782+a*52-97)); //llower else if ((c>47) && (c<58)) { // digits if ((f==1)) charset[fon][c]=toUTF16(c+120782-48); // bold digits if ((f==7)) charset[fon][c]=toUTF16(c+120792-48); //doublesstruck if ((f==9)) charset[fon][c]=toUTF16(c+120802-48); // sansserif if ((f==10)) charset[fon][c]=toUTF16(c+120812-48); // sansserifbold if ((f==13)) charset[fon][c]=toUTF16(c+120822-48); // monospace if ((f==15)) charset[fon][c]=toUTF16(c+8320-48); // subscript digits } else if ((c==43)&&(f==15)) charset[fon][c]=toUTF16(8330); // subscript plus if ((c==45)&&(f==15)) charset[fon][c]=toUTF16(8331); // subscript minus if ((c==61)&&(f==15)) charset[fon][c]=toUTF16(8332); // subscript equals if ((c==40)&&(f==15)) charset[fon][c]=toUTF16(8333); // subscript left if ((c==41)&&(f==15)) charset[fon][c]=toUTF16(8334); // subscript rihgt if ((c==97)&&(f==15)) charset[fon][c]=toUTF16(8336); // subscript a if ((c==109)&&(f==15)) charset[fon][c]=toUTF16(8344); // subscript m if ((c==112)&&(f==15)) charset[fon][c]=toUTF16(8346); // subscript p if ((c==105)&&(f==15)) charset[fon][c]=toUTF16(7522); // subscript i if ((c==117)&&(f==15)) charset[fon][c]=toUTF16(7524); // subscript u } if (f==2) charset[fon][104]=toUTF16(8462); // italic h if (f==4) { charset[fon][66]=toUTF16(8492); // script B charset[fon][69]=toUTF16(8496); // E charset[fon][70]=toUTF16(8497); // F charset[fon][72]=toUTF16(8459); // H charset[fon][73]=toUTF16(8464); // I charset[fon][76]=toUTF16(8466); // L charset[fon][77]=toUTF16(8499); // M charset[fon][82]=toUTF16(8475); // R charset[fon][101]=toUTF16(8495); //e charset[fon][103]=toUTF16(8458); //g charset[fon][111]=toUTF16(8500); //o } if ((f==6)||(f==8)) { charset[fon][67]=toUTF16(8493); // Blackletter also (8) charset[fon][72]=toUTF16(8460); charset[fon][73]=toUTF16(8465); charset[fon][82]=toUTF16(8476); charset[fon][90]=toUTF16(8488); } if (f==7) { charset[fon][67]=toUTF16(8450); charset[fon][72]=toUTF16(8461); charset[fon][78]=toUTF16(8469); charset[fon][80]=toUTF16(8473); charset[fon][81]=toUTF16(8474); charset[fon][82]=toUTF16(8477); charset[fon][90]=toUTF16(8484); } // cb.log("cha"+f+":"+charset[fon]); } // 16 "crazy", 17 "weird", 18 "odd" 19 BLOB 20 ROT13 21 FLIP // 24/16 "crazy", 25/17 "weird", 26/18 "odd" 27/19 BLOB 28/20 ROT13 29/21 FLIP 30/22 FLORAL else switch(thisfont) { case "crazy": { var fliphabet = '\u0e04\u0e52\u03c2\u0e54\u0454\u0166\ufeee\u0452\u0e40\u05df\u043a\u006c\u0e53\u0e20\u0e4f\u05e7\u1ee3\u0433\u0e23\u0074\u0e22\u05e9\u0e2c\u05d0\u05e5\u007a'; for (var c=0; c<128 ; c++) { charset[fon][c]=toUTF16(c); if (c > 96 && c <123 ) charset[fon][c]=(fliphabet[c-97]); else if (c > 64 && c < 91 ) charset[fon][c]=(fliphabet[c-65]); } break; } case "weird": { var fliphabet = '\u039b\u0042\u1103\u0044\u03a3\u0046\u0047\u0389\u0049\u004a\u004b\u1102\u004d\u041f\u04e8\u0050\u0051\u042f\u01a7\u01ac\u0426\u0056\u0429\u0058\u0059\u005a'; for (var c=0; c<128 ; c++) { charset[fon][c]=toUTF16(c); if (c > 96 && c <123 ) charset[fon][c]=(fliphabet[c-97]); else if (c > 64 && c < 91 ) charset[fon][c]=(fliphabet[c-65]); } break; } case "odd": { var fliphabet = '\uff91\u4e43\u0063\u0064\u4e47\uff77\u0067\u3093\uff89\uff8c\u30ba\uff9a\uffb6\u5200\u006f\uff71\u0071\u5c3a\u4e02\uff72\u0075\u221a\u0077\uff92\uff98\u4e59'; for (var c=0; c<128 ; c++) { charset[fon][c]=toUTF16(c); if (c > 96 && c <123 ) charset[fon][c]=(fliphabet[c-97]); else if (c > 64 && c < 91 ) charset[fon][c]=(fliphabet[c-65]); } break; } case "flip": { var fliphabet = '\u0250\u0071\u0254\u0070\u01dd\u025f\u0183\u0265\u0131\u027e\u029e\u006c\u026f\u0075\u006f\u0064\u0062\u0279\u0073\u0287\u006e\u028c\u028d\u0078\u028e\u007a'; for (var c=0; c<128 ; c++) { charset[fon][c]=toUTF16(c); if (c > 96 && c <123 ) charset[fon][c]=(fliphabet[c-97]); else if (c > 64 && c < 91 ) charset[fon][c]=(fliphabet[c-65]); } break; } case "blob": { for (var c=0; c<128 ; c++) { charset[fon][c]=toUTF16(c); if (c > 96 && c <123 ) charset[fon][c]=toUTF16(c+9327); // a is 9424 -97 else if (c > 64 && c < 91 ) charset[fon][c]=toUTF16(c+9333); // A is 9398 -65 else if ((c>48) && (c<58)) charset[fon][c]=toUTF16(c+9263); // 1 is 9312 (49) else if ((c==48)) charset[fon][c]=toUTF16(9450); // zero is 9450 (48) } break; } case "blap": { for (var c=0; c<128 ; c++) { charset[fon][c]=toUTF16(c); if (c > 96 && c <110 ) charset[fon][c]=toUTF16(c+13); else if (c >109 && c <123 ) charset[fon][c]=toUTF16(c-13); else if (c > 64 && c < 78 ) charset[fon][c]=toUTF16(c+13); else if (c > 77 && c < 91 ) charset[fon][c]=toUTF16(c-13); } break; } } //end case } // end for fon // cb.log("charset:"+charset); // var nondigits = new RegExp("[^a-z_0-9]+\\d+[^a-z_0-9]","gi"); // var digits = new RegExp("\\d+"); //===========TAGS AND VALUES====================================== // exec1flag = cb.settings.exec1_flag.trim().replace(/\s+/g, " ").split(","); if (exec1flag[0]=="") exec1flag.splice(0, 1); // var reserve1=[]; if (exec1flag[0]!=null) { for (var i = 0; i < Math.floor((exec1flag.length)/2); i++) { // cb.log("19c."+ Math.floor((exec1flag.length)/2)+":"+i+":"+exec1flag[i*2].match(digits)); tagForm(exec1flag[i*2],exec1flag[i*2+1],exec1val,exec1tag,exec1bck,reserve1); } //all entries so just tie up reserve colours // now remove colours from lookup table for (var j = 0; j < reserve1.length; j++) colournames[reserve1[j]]="xxxxx"; exec1val.forEach(function(x) { exec1count[x] = (exec1count[x] || 0)+1; }); } //===========USERS AND GROUPS===================================== // exec1s = cb.settings.exec1_users.trim().toLowerCase().replace(/\s+/g, "").split(","); if (exec1s[0]=="") { exec1s.splice(0, 1); } // cb.log("*exec1 spliced:"+exec1s); } if (exec1s[0]!=null) { for (var i = 0; i < (exec1s.length); i++) { // cb.log("Exec1s["+i+"]="+exec1s[i]+". len:"+exec1s[i].length); var numbs= tagSplit(exec1s[i]); exec1sgrp[i] = numbs[0]; exec1s[i] = numbs[numbs.length-1].trim(); if (exec1sgrp[i]>=exec1tag.length) /////////////////////////////////here must generate lowest group {exec1sgrp[i]=exec1tag.length-1; if (exec1sgrp[i]<0) { exec1sgrp[i]=0; }} //exec1tag[0]="DefaultSilver";}} } } // else cb.log("*exec1s IS null"); // cb.log("19b."+exec1flag); if (exec1flag[0]==null) if (exec1s[0]!=null) { cb.log("*exec1s:["+exec1s+"]"); cb.sendNotice("Warning: Exec1 SILVER users Defined without Exec1 SILVERTAGS Defined ");} else cb.sendNotice("No Exec1 SILVERTAGS Defined "); //===========TAGS AND VALUES====================================== // exec2flag = cb.settings.exec2_flag.trim().replace(/\s+/g, " ").split(","); // values in pairs tag,colour [, etc] if (exec2flag[0]=="") exec2flag.splice(0, 1); // var reserve2=[]; if (exec2flag[0]!=null) { for (var i = 0; i < Math.floor((exec2flag.length)/2); i++) { // cb.log("19c."+i+":"+exec2flag[i*2].match(digits)); tagForm(exec2flag[i*2],exec2flag[i*2+1],exec2val,exec2tag,exec2bck,reserve2); } //all entries so just tie up reserve colours // now remove colours from lookup table for (var j = 0; j < reserve2.length; j++) colournames[reserve2[j]]="xxxxx"; exec2val.forEach(function(x) { exec2count[x] = (exec2count[x] || 0)+1; }); } //===========USERS AND GROUPS===================================== // exec2s = cb.settings.exec2_users.trim().toLowerCase().replace(/\s+/g, "").split(","); if (exec2s[0]=="") exec2s.splice(0, 1); if (exec2s[0]!=null) { for (var i = 0; i < (exec2s.length); i++) { var numbs= tagSplit(exec2s[i]); exec2sgrp[i] = numbs[0]; exec2s[i] = numbs[numbs.length-1].trim(); if (exec2sgrp[i]>=exec2tag.length) {exec2sgrp[i]=exec2tag.length-1; if (exec2sgrp[i]<0) { exec2sgrp[i]=0; }} //exec2tag[0]="DefaultGold";}} } } // cb.log("19g:"+exec2s+": len:"+exec2s.length) // // else flag is all null so warnings in order if (exec2flag[0]==null) if (exec2s[0]!=null) cb.sendNotice("Warning: Exec2 GOLD users Defined without Exec2 GOLDTAGS Defined "); else cb.sendNotice("No Exec2 GOLDTAGS Defined "); //======================================================== all_users.push( cb.room_slug ); // colours.push("");faces.push(-1); var mycolour =""; if (cb.room_slug=="ridesdickharder") mycolour=colourvalues[colournames.indexOf("black")]; colours.push(mycolour); backs.push(-1); fonts.push(-1); faces.push(-1); //add default colour and face for cb.room_slug totalTips.push(0); timers.push(""); hazlist=true; cb.setTimeout(callagain, 1000); cb.sendNotice(botNam+" "+cb.room_slug+" version "+version+" date "+botDat+ "- Lists Initialised, Timer started"); cb.sendNotice("Type /HELP for commands", "","","","bolder"); // cb.sendNotice("VERBOSE IS OFF TO BLOCK SILENCED USERS\nNow has CURSED text. try /HELP CURSE\nAnd TRACED actions. try /HELP TRACE and /NOTRACE (to stop all of them)\nTesting Token Rain Detector to prevent too many THANKS messages", cb.room_slug,"","","bolder"); cb.sendNotice("One bot to rule them all!", "","","","bolder"); cb.sendNotice("ShowBanner:"+ tipBanner +" ShowGender:" + showgender + " NoBB: "+noBB+" noC2C: "+noC2C+" noFeet: "+noFeet,"","","","bolder"); t=botNam.split(''); if ((botNam=="WoBot")||(botNam=="LoBot")) cb.sendNotice(t[0].toUpperCase()+"ELEASE "+botNam.toUpperCase(), "","","","bolder"); } ; //////////////////////// end of init /////////////////////////////// function tagForm(flag,clr,val,tag,bck,res){ var digits = new RegExp("\\d+"); // cb.log("Flag:"+flag+" Clr:"+clr); var numbs= tagSplit(flag); var newval=numbs[0]; var newtag =numbs[numbs.length-1].trim(); if (val.length>0) tag.push( newtag) ; else tag[0]=newtag; if (( newtag.match(digits) != null)&&(newval==1000000)) newval= newtag.match(digits); val.push( newval); var newbck=clr; if (newbck!=null) // pale green #A2F5BB pale blue #A2F1F5 if (colournames.indexOf(newbck.toLowerCase())!=-1) { // reserve all exec backgrounds maybe even force themto be unique res.push(colournames.indexOf(newbck.toLowerCase())); newbck=colourvalues[colournames.indexOf(newbck.toLowerCase())]; } else if (colourvalues.indexOf(newbck)!=-1) { // reserve all exec backgrounds maybe even force themto be unique res.push(colourvalues.indexOf(newbck)); } bck.push(newbck); // cb.log("newval:"+newval+" newtag:"+newtag+" newbck:"+newbck); // push them... } function dedupe( list ){ if (list[0]=="") list.splice(0, 1); var dupe = {}; var ret = []; for(var i=0; i < list.length; i++){ var e = list[i]; var f = e.match(/[a-z_0-9]+/i); if (!dupe[f]){ dupe[f] = true; ret.push(e); } else if(ret.indexOf(e)==-1) { var rets =new RegExp(","+f+"[^a-z_0-9]","gi"); var listtring=","+ret.join(",")+","; var res = rets.exec(listtring); if (res!=null) { var nres=listtring.substring(rets.lastIndex); var orest=e.match(/[^a-z_0-9].+/i); ores=orest[0].substring(1); if (parseInt(nres)>parseInt(ores)) { ret.splice(ret.indexOf((res+nres).substring(1,(res+nres).length-1)),1); ret.push(e); } } } } return ret; }; function checkout(settings){ // // var splitter="Botname:|Slot #:|CURSE:|SPLAT:|FLAG:|GONG:|SPANK:|HIDE:|BLOB:|FLIP:|BLAP:|GHOST:|GARBLE:|GREY:|BLUE:|GREEN:|VIP:|RED:|PURPLE:|LILAC:|CREW:|SILVER:|EXEC1:|ZOMBIES:|GOLD:|EXEC2:|Red A:|Green B:|Exec1tag XX:|Exec1 C:|Exec2tag YY:|Exec2 D:|Bad words:|NOTICE:|GREMLIN:|ICON:|MYTHANKS:|MYFLAG:|NOBANNER:|NOGENDER:|NOBB:|NOC2C:|NOFEET:"; // var splits =new RegExp("("+splitter+")","gi"); var colist = settings; colist = colist.split("Notice:"); if (colist[0]=="") colist.splice(0, 1); var revArr; for (var i=0; i<colist.length ; i++) { var revCol = colist[i].trim().split('').reverse().join(''); var revRe= new RegExp("("+splitter.split('').reverse().join('')+")","gi"); last=0; revArr = revRe.exec(revCol); while ( revArr!=null ) { revindex=revArr.index; revname=revCol.substr(revindex,revRe.lastIndex-revindex).split('').reverse().join('') ; revparam=revCol.substr(last,revindex-last).split('').reverse().join(''); last=revRe.lastIndex; // cb.sendNotice("revCol("+i+")=. name=" + revname + " param="+revparam); switch (revname) // list: { case "CURSE:": { cursed=cursed.concat(revparam.trim().toLowerCase().replace(/\s+/g, " ").split(",")); break; } case "SPLAT:": { florals=florals.concat(revparam.trim().toLowerCase().replace(/\s+/g, " ").split(",")); break; } case "FLAG:": case "GONG:": { flags=flags.concat(revparam.trim().toLowerCase().replace(/\s+/g, " ").split(",")); break; } case "SPANK:": case "HIDE:": { hides=hides.concat(revparam.trim().toLowerCase().replace(/\s+/g, " ").split(",")); break; } case "BLOB:": { blobs=blobs.concat(revparam.trim().toLowerCase().replace(/\s+/g, " ").split(",")); break; } case "FLIP:": { flips=flips.concat(revparam.trim().toLowerCase().replace(/\s+/g, " ").split(",")); break; } case "GHOST:": { ghosts=ghosts.concat(revparam.trim().toLowerCase().replace(/\s+/g, " ").split(",")); break; } case "BLAP:": case "GARBLE:": { garbles=garbles.concat(revparam.trim().toLowerCase().replace(/\s+/g, " ").split(",")); break; } case "GREY:": { greys=greys.concat(revparam.trim().toLowerCase().replace(/\s+/g, " ").split(",")); break; } case "BLUE:": { blues=blues.concat(revparam.trim().toLowerCase().replace(/\s+/g, " ").split(",")); break; } case "GREEN:": case "VIP:": case "Green B:": { greens=greens.concat(revparam.trim().toLowerCase().replace(/\s+/g, " ").split(",")); break; } case "RED:": case "Red A:": { reds=reds.concat(revparam.trim().toLowerCase().replace(/\s+/g, " ").split(",")); break; } case "LILAC:": { lilacs=lilacs.concat(revparam.trim().toLowerCase().replace(/\s+/g, " ").split(",")); break; } case "PURPLE:": { purples=purples.concat(revparam.trim().toLowerCase().replace(/\s+/g, " ").split(",")); break; } case "CREW:": case "SILVER:": case "EXEC1:": case "Exec1 C:": { exec1s=exec1s.concat(revparam.trim().toLowerCase().replace(/\s+/g, " ").split(",")); break; } case "ZOMBIES:": case "GOLD:": case "EXEC2:": case "Exec2 D:": { exec2s=exec2s.concat(revparam.trim().toLowerCase().replace(/\s+/g, " ").split(",")); break; } case "Exec1tag XX:": // must only be added from XX box and not concatenated { // exec1flag=exec1flag.concat(revparam.trim().replace(/\s+/g, " ").split(",")); break; } // THESE TWO LISTS ARE ORDERED THEREFORE MUST NOT BE DISORDERED case "Exec2tag YY:": // only to be added as single list from single ( YY ) box { // exec2flag=exec2flag.concat(revparam.trim().replace(/\s+/g, " ").split(",")); break; } case "Bad words:": { badwords=badwords.concat(revparam.trim().replace(/\s+/g, " ").split(",")); break; } case "NOTICE:": { notices=notices.concat(revparam.trim().replace(/\s+/g, " ").split(",")); break; } case "GREMLIN:": { gremlins=gremlins.concat(revparam.trim().replace(/\s+/g, " ").split(",")); break; } case "ICON:": { stdicons=stdicons.concat(revparam.trim().replace(/\s+/g, " ").split(",")); break; } case "NOBANNER:": // flags inverted { tipBanner =(revparam.trim()=="false" ? true : false); break; } case "NOGENDER:": // flags inverted { showgender =(revparam.trim()=="false" ? true : false); break; } // NOBB:|NOC2C:|NOFEET: case "NOBB:": { noBB=(revparam.trim()=="false" ? false : true); break; } case "NOC2C:": { noC2C=(revparam.trim()=="false" ? false : true); break; } case "NOFEET:": { noFeet=(revparam.trim()=="false" ? false : true); break; } case "MYTHANKS:": { thanksMessage=revparam.trim(); break; } case "MYFLAG:": { myFlag=revparam.trim(); break; } // Botname: case "Botname:": { botNam=revparam.trim(); break; } case "Slot #:": { break; } } revArr = revRe.exec(revCol); } if (revCol.substr(last)!="") var res = revCol.substr(last).split('').reverse().join(''); // cb.sendNotice(" revCol("+i+")="+revCol+"...\nrest="+res+". "); } return res; }; function tagSplit(flags){ var nondigits = new RegExp("[^a-z_0-9]+\\d+[^a-z_0-9]","gi"); var digits = new RegExp("\\d+"); var numb = flags.match(nondigits); var tags= flags; if ( numb != null) { tags= flags.replace(numb[0],""); numb[0] = numb[0].match(digits); } else numb =[1000000]; numb.push(tags); return numb; }; function flaggit(rex,msg,Target) { // var mask = "xXxXxXxXxXxXxXxXxXxXxXxXxXx"; var m= rex.exec(msg); if (m!=null) if (( isGrey )&&(gender!="I")&&(gender!="G")) { if (hides.indexOf(Target)!=-1){ gender="I"; delist(botNam,flags,"listed", Target); cb.sendNotice ("User "+Target+" has been frozen by "+botNam ,"","#3366FF","#FFFFFF","bolder");} else // not yet hidden but flagged already? second strike { gender="X"; if (flags.indexOf(Target)!=-1) enlist(botNam,hides,"chilled",Target); else enlist(botNam,flags,"flurried",Target); } } else if ((!isAdmin)&&(gender!="I")&&(gender!="G")) gender="X"; // if (m!=null) cb.log("msg:"+msg+" m:"+m+" len:"+m[0].length +" at:"+m.index); return m; }; function enlist(source,list,col,Target) { if (source==botNam) orig=cb.room_slug; else orig=source; traceOut = ((traces.indexOf(col)!=-1)&&trace); makeBB = (source==botNam)&&(col=="blued"); if ((list.indexOf(Target)==-1)&&(Target!=cb.room_slug)&&(Target!=null)&&(Target!="")) { if ((traceOut)&&!makeBB) cb.sendNotice("User "+Target+" has been "+col+" by "+source, "","#3366FF","#FFFFFF","bolder"); // cb.log(col+" IN "+traces+"="+traces.indexOf(col)); list.push(Target); if ((col!="frozen")&&(col!="listed")&&(!makeBB)) cb.sendNotice("You have been "+col,Target,warmBack , '#FF0000',"bolder"); if ((col=="flurried")||(col=="chilled")||(col=="gonged")) cb.sendNotice("USER "+ Target + " Please be warned by this ",Target,warmBack , '#FF0000',"bolder"); if ((col=="chilled")||(col=="gonged")) cb.sendNotice("USER "+ Target + " You will be silenced from public chat if you ignore warnings",Target,'#FFFF00' , '#FF0000',"bolder"); // cb.log("20."+col+":"+list+":"); } else { if ((list.indexOf(Target)!=-1)&&(Target!=cb.room_slug)&&(Target!=null)) if (col!="cursed") cb.sendNotice("User:"+Target+" already "+col,orig); else { if ((traceOut)&&!makeBB) cb.sendNotice("User "+Target+" has been "+col+" by "+source, "","","","bolder"); list.push(Target); cb.sendNotice("You have been "+col+" AGAIN!",Target); } else cb.sendNotice("User:"+Target+" cannot be "+col,orig); } // cb.log("21."+col+"s="+list); }; function delist(source,list,col,Target) { if (source==botNam) orig=cb.room_slug; else orig=source; if (list.indexOf(Target)!=-1) { if ((traces.indexOf(col)!=-1)&&trace) cb.sendNotice("User "+Target+" has been un"+col+" by "+source, "","#3366FF","#FFFFFF","bolder"); list.splice(list.indexOf(Target),1); cb.sendNotice("You have been un"+col,Target); } else { cb.sendNotice(Target+" already un"+col,orig); // cb.log("22."+list); } }; function enscribe(source,list,Target) { if (source==botNam) orig=cb.room_slug; else orig=source; if (orig!=cb.room_slug) return ""; if (list.indexOf(Target)==-1) { list.push(Target); cb.sendNotice("Added trace/curse/badword FOR THIS SESSION: "+Target,orig); // cb.log("23.bad "+list+":"); } else { list.splice(list.indexOf(Target),1); cb.sendNotice("Removed trace/curse/badword FOR THIS SESSION: "+Target,orig); } // cb.log("24.badwords="+list); }; // 19 BLOB 20 ROT13 21 FLIP 22 FLORAL function blob(msg) { var n=""; var f=fontnames.indexOf("blob"); for (var i = 0; i < msg.length; i++) { var c=msg.charCodeAt(i); if (c<128) n+=charset[f][c]; else n+=toUTF16(c); } return n; }; function rot13(msg) { var n=""; var f=fontnames.indexOf("blap"); for (var i = 0; i < msg.length; i++) { var c=msg.charCodeAt(i); if (c<128) n+=charset[f][c]; else n+=toUTF16(c); } // cb.log("BlaFont "+f+":"+n); return n; }; function flip(msg) { var n=""; var f=fontnames.indexOf("flip"); for (var i = msg.length-1; i>=0; i--) { var c=msg.charCodeAt(i); if (c<128) n+=charset[f][c]; else n+=toUTF16(c); } return n; }; function floral(msg) { var n=""; cb.log("splat: /"+splat+"../"); for (var i = 0; i < msg.length; i++) { var c=msg.charCodeAt(i); n+=toUTF16(c); if (c!=32) n+=splat; } return n; }; function flourish(msg) { var n=""; var mrk = splut; // cb.log("splut: /"+splut+"../"); for (var i = 0; i < msg.length; i++) { var c=msg.charCodeAt(i); if ((c==172)&&(mrk==splut)) mrk='\u0333'; else { n+=toUTF16(c); if (c!=32) n+=mrk; else mrk = ""; } } return n; }; function font(msg,fon) { var f=fontnames.indexOf(fon); if (f<0) return msg; var n=""; // var l=msg.length; var m=msg+" "; var emo=new RegExp("(^|\\s)[:][a-z_0-9]{3,}(\\b|$)","gi"); //if ((emo.test(m)==true)) var x=emo.exec(m); if (x!=null) var k=x.index; for (var i = 0; i < l; i++) { var c=msg.charCodeAt(i); if ((x!=null)&&(i==k)) { n+=x[0]+" "; i+=x[0].length; } else if (c<128) n+=charset[f][c]; else n+=toUTF16(c); } // cb.log("Font "+f+":"+n); return n; }; function toUTF16(codePoint) { var TEN_BITS = parseInt('1111111111', 2); if (codePoint <= 0xFFFF) { return String.fromCharCode(codePoint); } codePoint -= 0x10000; // Shift right to get to most significant 10 bits var leadSurrogate = 0xD800 + (codePoint >> 10); // Mask to get least significant 10 bits var tailSurrogate = 0xDC00 + (codePoint & TEN_BITS); return String.fromCharCode(leadSurrogate) + String.fromCharCode(tailSurrogate); }; function Hex2Char(n) { var c=""; var H= new RegExp("^(\\\\u[0-9A-Fa-f]{1,4})+$"); // cb.log("Hex2Char:"+n+":"+H.test(n)+":"+H); if(H.test(n)) for (var i=2; i<n.length ; i+=6) c+=String.fromCharCode(parseInt(n.substr(i,4),16)); return c }; // Timer for Notices function callagain() { // USA, Canada clocks on Daylight Saving Time until Sunday 2 November 2014 at 2am local time // UK / Europe: Clocks on Summer Time until Sunday 26 October 2014 at 01:00 (1am) GMT // var Times = ["None","Hawaii","Alaska","Pacific","Mountain","Central","Eastern","Atlantic","Newfoundland","Greenland","CUT2", "Azores", "Iceland", "UK","Central Europe", "Bucharest", "Baghdad", "Mocow","Tashkent", "Dhaka", "Bangkok", "Perth", "Tokyo", "Adelaide", "Sydney", "Vladivostok", "Aukland",]; // Times = ["None","Hawaii","Alaska","Pacific","Mountain","Central","Eastern","Atlantic","Newfoundland", // 13 -10 -9 -8 -7 -6 -5 -4 -3.5 // "Greenland","CUT2", "Azores", "Iceland", "UK" ,"Central Europe", "Bucharest", "Baghdad", "Mocow", // -3 -2 -1 0 +0 +1 +2 +3 +4 // "Tashkent", "Dhaka", "Bangkok", "Perth", "Tokyo", "Adelaide", "Sydney", "Vladivosok", "Aukland",]; // +5 +6 +7 +8 +9 +9.5 +10 +11 +12 // Alaska Time GMT - 08:00 /* Africa Egypt Start: Last Friday in AprilEnd: Last Thursday in September * Namibia Start: First Sunday in SeptemberEnd: First Sunday in April Asia Most states of the former USSR Start: Last Sunday in MarchEnd: Last Sunday in October * Israel (Estimate, Israel decides Start: First Friday in AprilEnd: First Friday in September * Lebanon, Kirgizstan Start: Last Sunday in MarchEnd: Last Sunday in October * Mongolia Start: Last Sunday in MarchEnd: Last Sunday in September */ var serverTime = new Date(); var year = serverTime.getFullYear(); var serverJan = new Date(year, 0, 1); var serverJul = new Date(year, 6, 1); var serverDST = serverTime.getTimezoneOffset() < Math.max(serverJan.getTimezoneOffset(), serverJul.getTimezoneOffset()); // cb.sendNotice(year+"\n "+serverTime +" "+serverTime.getTimezoneOffset()+"\n"+serverJan+" "+serverJan.getTimezoneOffset()+"\n"+serverJul+" "+serverJul.getTimezoneOffset()+"\n DST "+serverDST); var day = serverTime.getDate(); var mon = serverTime.getMonth()+1; var year = serverTime.getFullYear(); var TimeZone = Times.indexOf(myTime); var DST =0; if (Times==-1) Times = myTime; // cb.log(Times); // if ((Times>0)&&(Times<8)) DST = ( (year==2014)&&((mon<11)||(day<2)&&(mon==11)) ); var cblocal = serverTime.getTime(); var utc = cblocal + serverTime.getTimezoneOffset() * 60000; // currently 7*60 = 420 mins if ((cb.room_slug=="mattmoney18")) var loc =new Date(utc - 4*60 * 60000); // testing Atlantic time else if ((cb.room_slug=="lolo1964")||(cb.room_slug=="squigglycat")) var loc =new Date(utc - 10*60 * 60000); // testing Hawaii time else if ((cb.room_slug=="lonequark")) var loc =new Date(utc - 10*60 * 60000); // testing Iceland time else if ((cb.room_slug=="sweetjasmine90")) var loc =new Date(utc + 60 * 60000); // testing with 1 hour ahead else if ((cb.room_slug=="caidence23")) TimeZone = 0; // var loc =new Date(utc + 60 * 60000); // testing with 1 hour ahead // dont know what it will do var hours = serverTime.getHours(); var minutes = serverTime.getMinutes(); day = serverTime.getDate(); mon = serverTime.getMonth()+1; year = serverTime.getFullYear(); // test .getTimezoneOffset() //cb.log("utc:"+utc+" with offset "+serverTime.getTimezoneOffset()+ " loc="+serverTime.getHours()+":"+serverTime.getMinutes()); avrows[3]=year; if ((mon>=2)&&(mon<=9)) {avrows[3]="feb"; } if ((day==1)&&(mon==1)) { if (repeat_text == "") {repeat_text="It is "+year+" and The Climate Protection Racket continues!"; } avrows[3]="2014"; } if ((day>=15)&&(mon==12)) {avrows[3]="xmas"; } if ((day>=26)&&(mon==12)) if (repeat_text == "") repeat_text="Merry Twixtmas!"; if ((day>=20)&&(mon==12)) if (repeat_text == "") repeat_text="Merry XXXmas!"; if ((day==31)&&(mon==10)) { cb.sendNotice("Happy Halloween!","","","","bolder"); avrows[3]="halloween"; avtable=":Avatars";} if ((day>19)&&(day<30)&&(mon==11)) { avrows[3]="pilgrim"; } if ((day==28)&&(mon==11)) {cb.sendNotice("Thanksgiving!","","","","bolder"); } if (minutes < 10) minutes = "0" + minutes; // if (hours < 12) minutes = minutes + "a"; else minutes = minutes + "p"; if (hours < 10) hours = "0" + hours; var splashcol=["#CC6600","#000000",'#9932CC']; var backcol=["#FFFFFF","#00FFFF","#FFFF00"]; if (repeat_text != "") // until removed- generate another { var s = Math.floor(Math.random()*(splashcol.length) ); var fore=splashcol[s]; var s = Math.floor(Math.random()*(splashcol.length) ); var back=backcol[s]; var r = (notices.indexOf(repeat_text)+1)%notices.length; // cb.log("initial:"+notices.indexOf(repeat_text)+" len:"+notices.length+" mod:"+r); repeat_text = notices[r]; if (TimeZone==0) cb.sendNotice(repeat_text,"",back, fore, "bolder"); else cb.sendNotice(font(hours + "." + minutes,"subscript") + " " + repeat_text,"",back,fore, "bolder"); } if (guessGame) cb.sendNotice("GuessGame: Players must tip "+ flourish("exactly ") +guessCost+" tokens with tipnote containing the right guess","",warmBack , '#0000FF', "bold","" ); cb.setTimeout(callagain, repeat_time*1000); }; init(); } else { cb.sendNotice('You are not Caidence23! This bot only functions in Caidence23\'s room. Please select another bot to use!',"",'#FFFFFF' , '#3366FF', "bold"); }
© Copyright Chaturbate 2011- 2024. All Rights Reserved.