Bots Home
|
Create an App
veronika`s family
Author:
prettyveronika
Description
Source Code
Launch Bot
Current Users
Created by:
Prettyveronika
var botVersion = "2.5.2"; var botDate = "February 13th, 2015"; var lastMessgeTime = 0; var lastMessageName = ""; var tippers = new Array(); var timeoutMessages = new Array(); var timeoutUsersArray = new Array(); var timeoutReleaseArray = new Array(); var friendUsersArray = new Array(); var staffUsersArray = new Array(); var coworkerUsersArray = new Array(); var bossUsersArray = new Array(); var husbandUsersArray = new Array(); var ghostUsersArray = new Array(); var userColors = new Array(); var specialNames = new Array(); var tempString = ""; var tempNum = 0; var tempArray = new Array(); var modelName = cb.room_slug; var msgNotify = ""; var msgPublic = ""; var msgPrivate = ""; var msgModel = ""; var msgMod = ""; var tsColorD = "#FF0000"; var tsColor = tsColorD; var tsBackgroundD = "#33CCFF"; var tsBackground = tsBackgroundD; var MBackgroundD = "#FF99FF"; var MBackground = MBackgroundD; var tsTag = 'Manager'; var groupColor = "#FFFFFF"; var autoNotice1Text = ""; var autoNotice2Text = ""; var autoNotice3Text = ""; var autoNotice4Text = ""; var botTrigger = "/alle"; var botTrigger2 = "/mb"; var timeoutReleaseInterval = 1; var modCommands = true; var userGreets = true; var genderEmotes = true; var allowGreyEmotes = true; var unmaskTimeout = false; var botMsgBg = '#BDDEDC'; var botAlertBg = '#D32B2B'; var botNote1Bg = '#FF9900'; var botNoteBg = '#99FF66'; var botGhostBg = '#EDEDED'; var sendEmailMsg = 'If you didn\'t send your email address in the tip note, tip 1 token with your email address so your videos can be sent to you!'; specialNames[0] = new Array('nepystar','**** :allemanager ****'); timeoutMessages[1]= '[TIMEOUT] You\'re in timeout, other\'s can\'t see what you\'re typing.'; timeoutMessages[2]= '[TIMEOUT] Give it up no one can read what you\'re typing...'; timeoutMessages[3]= '[TIMEOUT] Keep typing no one can read it!'; timeoutMessages[4]= '[TIMEOUT] Why do you keeping typing? No one can see it!'; timeoutMessages[5]= '[TIMEOUT] Can\'t you read? You\'re in timeout, you can\'t type!'; /* * Settings */ cb.settings_choices = [ { name: 'allowGreyEmotes', type: 'choice', label: 'Allow GREY Graphics?', choice1: 'Yes', choice2: 'No', defaultValue: 'Yes' }, { name: 'genderEmotes', type: 'choice', label: 'Show gender of users in chat?', choice1: 'Yes', choice2: 'No', defaultValue: 'Yes' }, { name: 'autoNotice1', label: 'Notification Message 1, use text and emotes', type: 'str', minLength: 0, maxLength: 512, required: false, defaultValue: '' }, { name: 'autoNotice1Interval', label: 'Show Notification 1 Every x Minutes', type: 'choice', choice1: 1, choice2: 2, choice3: 3, choice4: 6, choice5: 10, choice6: 15, choice7: 20, choice8: 25, choice9: 30, choice10: 45, choice11: 60, defaultValue: 5 }, { name: 'autoNotice2', label: 'Notification Message 2, use text and emotes', type: 'str', minLength: 0, maxLength: 512, required: false, defaultValue: '' }, { name: 'autoNotice2Interval', label: 'Show Notification 2 Every x Minutes', type: 'choice', choice1: 1, choice2: 2, choice3: 3, choice4: 6, choice5: 10, choice6: 15, choice7: 20, choice8: 25, choice9: 30, choice10: 45, choice11: 60, defaultValue: 5 }, { name: 'autoNotice3', label: 'Notification Message 3, use text and emotes', type: 'str', minLength: 0, maxLength: 512, required: false, defaultValue: '' }, { name: 'autoNotice3Interval', label: 'Show Notification 3 Every x Minutes', type: 'choice', choice1: 1, choice2: 2, choice3: 3, choice4: 6, choice5: 10, choice6: 15, choice7: 20, choice8: 25, choice9: 30, choice10: 45, choice11: 60, defaultValue: 5 }, { name: 'autoNotice4', label: 'Notification Message 4, use text and emotes', type: 'str', minLength: 0, maxLength: 512, required: false, defaultValue: '' }, { name: 'autoNotice4Interval', label: 'Show Notification 4 Every x Minutes', type: 'choice', choice1: 1, choice2: 2, choice3: 3, choice4: 6, choice5: 10, choice6: 15, choice7: 20, choice8: 25, choice9: 30, choice10: 45, choice11: 60, defaultValue: 5 }, { name: 'modCommands', type: 'choice', label: 'Allow Moderators to use commands?', choice1: 'Yes', choice2: 'No', defaultValue: 'Yes' }, { name: 'userGreets', type: 'choice', label: 'Make special user announcements and emotes when they enter?', choice1: 'Yes', choice2: 'No', defaultValue: 'Yes' }, { name: 'friendTag', label: '*** FRIENDS *** *** *** Tag for Friend (non-tippers) users', type: 'str', minLength: 0, maxLength: 25, required: true, defaultValue: '[Friend]' }, { name: 'friendList', label: 'List of Friend users, separated by space (their CB usernames exactly)', type: 'str', minLength: 0, maxLength: 10240, required: false, defaultValue: '' }, { name: 'friendColor', label: 'Highlight color to use for Friend users', type: 'choice', choice1: 'White FFFFFF', choice2: 'Aqua 7FFFD4', choice3: 'LtBrown F4A460', choice4: 'Cyan E0FFFF', choice5: 'Gold EEE8AA', choice6: 'Yellow FFF68F', choice7: 'Slate C6E2FF', choice8: 'Pink FFF0F5', choice9: 'Orange FFD39B', choice10: 'Mint BDFCC9', choice11: 'Grey F2F2F2', choice12: 'Plum CD96CD', defaultValue: 'White FFFFFF' }, { name: 'staffTag', label: '*** STAFF *** *** *** Tag for Staff users', type: 'str', minLength: 0, maxLength: 25, required: true, defaultValue: '[Staff]' }, { name: 'staffList', label: 'List of Staff users, separated by space (their CB usernames exactly)', type: 'str', minLength: 0, maxLength: 10240, required: false, defaultValue: '' }, { name: 'staffColor', label: 'Highlight color to use for Staff users', type: 'choice', choice1: 'White FFFFFF', choice2: 'Aqua 7FFFD4', choice3: 'LtBrown F4A460', choice4: 'Cyan E0FFFF', choice5: 'Gold EEE8AA', choice6: 'Yellow FFF68F', choice7: 'Slate C6E2FF', choice8: 'Pink FFF0F5', choice9: 'Orange FFD39B', choice10: 'Mint BDFCC9', choice11: 'Grey F2F2F2', choice12: 'Plum CD96CD', defaultValue: 'White FFFFFF' }, { name: 'coworkerTag', label: '*** Coworkers *** *** *** Tag for Coworkers users', type: 'str', minLength: 0, maxLength: 25, required: true, defaultValue: '[Coworker]' }, { name: 'coworkerList', label: 'List of Coworkers useres, separated by space (their CB usernames exactly)', type: 'str', minLength: 0, maxLength: 10240, required: false, defaultValue: '' }, { name: 'coworkerColor', label: 'Highlight color to use for Coworkers users', type: 'choice', choice1: 'White FFFFFF', choice2: 'Aqua 7FFFD4', choice3: 'LtBrown F4A460', choice4: 'Cyan E0FFFF', choice5: 'Gold EEE8AA', choice6: 'Yellow FFF68F', choice7: 'Slate C6E2FF', choice8: 'Pink FFF0F5', choice9: 'Orange FFD39B', choice10: 'Mint BDFCC9', choice11: 'Grey F2F2F2', choice12: 'Plum CD96CD', defaultValue: 'White FFFFFF' }, { name: 'bossTag', label: '*** BOSSES *** *** *** Tag for Boss users', type: 'str', minLength: 0, maxLength: 25, required: true, defaultValue: '[Boss]' }, { name: 'bossList', label: 'List of Boss useres, separated by space (their CB usernames exactly)', type: 'str', minLength: 0, maxLength: 10240, required: false, defaultValue: '' }, { name: 'bossColor', label: 'Highlight color to use for Boss users', type: 'choice', choice1: 'White FFFFFF', choice2: 'Aqua 7FFFD4', choice3: 'LtBrown F4A460', choice4: 'Cyan E0FFFF', choice5: 'Gold EEE8AA', choice6: 'Yellow FFF68F', choice7: 'Slate C6E2FF', choice8: 'Pink FFF0F5', choice9: 'Orange FFD39B', choice10: 'Mint BDFCC9', choice11: 'Grey F2F2F2', choice12: 'Plum CD96CD', defaultValue: 'White FFFFFF' }, { name: 'husbandTag', label: '*** HUSBANDS *** *** *** Tag for Husband users', type: 'str', minLength: 0, maxLength: 25, required: true, defaultValue: '[Husband]' }, { name: 'husbandList', label: 'List of Husband useres, separated by space (their CB usernames exactly)', type: 'str', minLength: 0, maxLength: 10240, required: false, defaultValue: '' }, { name: 'husbandColor', label: 'Highlight color to use for Husband users', type: 'choice', choice1: 'White FFFFFF', choice2: 'Aqua 7FFFD4', choice3: 'LtBrown F4A460', choice4: 'Cyan E0FFFF', choice5: 'Gold EEE8AA', choice6: 'Yellow FFF68F', choice7: 'Slate C6E2FF', choice8: 'Pink FFF0F5', choice9: 'Orange FFD39B', choice10: 'Mint BDFCC9', choice11: 'Grey F2F2F2', choice12: 'Plum CD96CD', defaultValue: 'White FFFFFF' }, ]; /* * handle tips from users */ var totalTipped = 0; cb.onTip(function (tip) { var divStr = ""; var msgText = ""; var msgNotify = ""; var tipAmount = parseInt(tip['amount']); var name = tip['from_user']; var modelName = cb.room_slug; // is user in tipper array? if (!tippers[name]) { //nope add them tippers[name] = {username: name, tips: 0}; } if (!tippers[name].tips) { tippers[name].tips = 0; } tippers[name].tips += tipAmount; switch(tipAmount) { case 2000: result = addUser(husbandUsersArray, name); if (result instanceof Array) { husbandUsersArray = result; msgPublic = name + ' is now ' + modelName + '\'s Husband !!! Thank you for your tip !'; msgModel = modelName + ', don\'t forget to add ' + name + ' to Husbands in the bot config !'; } else { if (result == 'duplicate') { msgPublic = name + ' is already ' + modelName + '\'s Husband!!! Thank you for your tip !';; } else { msgPublic = 'Failed to add user ' + name + ' to Husbands. Something went wrong !'; } } break; case 1500: if (!userInArray (husbandUsersArray, name) ) { result = addUser(bossUsersArray, name); if (result instanceof Array) { bossUsersArray = result; msgPublic = name + ' is now ' + modelName + '\'s Boss !!! Thank you for your tip !'; msgModel = modelName + ', don\'t forget to add ' + name + ' to Bosses in the bot config !'; } else { if (result == 'duplicate') { msgPublic = name + ' is already ' + modelName + '\'s Boss !!! Thank you for your tip !';; } else { msgPublic = 'Failed to add user ' + name + ' to Bosses. Something went wrong !'; } } } else { msgPublic = name + ' already has a higher status than Boss ! Status not changed. Thank you for your tip !'; } break; case 1000: if (!userInArray (husbandUsersArray, name) && !userInArray (bossUsersArray, name)) { result = addUser(coworkerUsersArray, name); if (result instanceof Array) { coworkerUsersArray = result; msgPublic = name + ' is now ' + modelName + '\'s Coworker !!! Thank you for your tip!'; msgModel = modelName + ', don\'t forget to add ' + name + ' to Coworkers in the bot config !'; } else { if (result == 'duplicate') { msgPublic = name + ' is already ' + modelName + '\'s Coworker !!! Thank you for your tip !';; } else { msgPublic = 'Failed to add user ' + name + ' to Coworkers. Something went wrong !'; } } } else { msgPublic = name + ' already has a higher status than Coworker ! Status not changed. Thank you for your tip !'; } break; case 500: if (!userInArray (husbandUsersArray, name) && !userInArray (bossUsersArray, name) && !userInArray (coworkerUsersArray, name)) { result = addUser(staffUsersArray, name); if (result instanceof Array) { staffUsersArray = result; msgPublic = name + ' is now in ' + modelName + '\'s Staff !!! Thank you for your tip !'; msgModel = modelName + ', don\'t forget to add ' + name + ' to Staff in the bot config !'; } else { if (result == 'duplicate') { msgPublic = name + ' is already in ' + modelName + '\'s Staff !!! Thank you for your tip !';; } else { msgPublic = 'Failed to add user ' + name + ' to Staff. Something went wrong !'; } } } else { msgPublic = name + ' already has a higher status than Staff ! Status not changed. Thank you for your tip !'; } break; case 350: msgPublic = name + ' tipped 350 tokens for 5 videos !!! Thank you ! Video links will be emailed to you shortly !'; msgPrivate = sendEmailMsg; break; case 1234: msgPublic = name + ' tipped 1234 tokens for 30 videos !!! Thank you ! Video links will be emailed to you shortly !'; msgPrivate = sendEmailMsg; break; case 199: msgPublic = name + ' tipped 199 tokens for 5 videos !!! Thank you! Video links will be emailed to you shortly !'; msgPrivate = sendEmailMsg; break; case 100: msgPublic = name + ' tipped 100 tokens for ass ! Thank you !'; break; case 150: msgPublic = name + ' tipped 150 tokens for pussy ! Thank you !'; break; case 50: msgPublic = name + ' tipped 50 tokens for boobs ! Thank you !'; break; case 30: msgPublic = name + ' tipped 30 tokens for feet ! Thank you !'; break; case 25: msgPublic = name + ' tipped 25 tokens to get PM ! Thank you !'; break; default: msgPublic = 'Thank you ' + name + ' for your tip of ' + tipAmount ; if (tipAmount == 1) { msgPublic += ' token !'; } else { msgPublic += ' tokens !' + ' Don\'t forget to rate my profile !'; } break; } // Output any notices or command results to user if (msgPrivate.length > 0) { cb.sendNotice(msgPrivate, name, botMsgBg,'','bold'); msgPrivate = ""; } // Output any public notices or command results if (msgPublic.length > 0) { cb.sendNotice(msgPublic, '', botMsgBg,'','bold'); msgPublic = ""; } // Output any messages to the model if (msgModel.length > 0) { cb.sendNotice(msgModel, modelName, botMsgBg,'','bold'); msgModel = ""; } }); /* * handle user entrance messages */ cb.onEnter(function(user) { var lenOfSpecialNames = 0; var nameFound = false; var greeting = ''; var modelName = cb.room_slug; var name = user['user']; var isMod = user['is_mod']; var isFan = user['in_fanclub']; var isTS = (name == 'nepystar'); var isReal = (cb.room_slug == 'office_alessia'); var isModel = (name == cb.room_slug); var hasTokens = user['has_tokens']; var hasTipped = user['tipped_recently']; var isGrey = !(hasTokens || isMod || isModel || isFan); lenOfSpecialNames = specialNames.length; for(i=0; i < lenOfSpecialNames; i++) { if (specialNames[i][0] == name) { greeting = specialNames[i][1]; nameFound = true; break; } } if (nameFound && userGreets) { cb.sendNotice(greeting,'','#FFFFFF'); } else { if (userGreets) { if ( userInArray (staffUsersArray, user['user']) ) { cb.sendNotice( 'Staff Member :allemod ' + user['user'] + ' has joined the room !','',staffColor,'','bold'); } else { if ( userInArray (friendUsersArray, user['user']) ) { cb.sendNotice('Friend :korcap ' + user['user'] + ' has joined the room ! Treat him with respect !','',friendColor,'','bold'); } else { if (userInArray(coworkerUsersArray, user['user'])) { cb.sendNotice('Coworker :allecoworker ' + user['user'] + ' has joined the Office ! He\'s ready for his work .','',coworkerColor,'','bold'); } else { if (userInArray(bossUsersArray, user['user'])) { cb.sendNotice('Wake up CoWorkers !!! The Boss :alleboss ' + user['user'] + ' has joined the Office . He will punish your asses !','',bossColor,'','bold'); } else { if (userInArray(husbandUsersArray, user['user'])) { cb.sendNotice('Heads Up ! Alessia\'s Husband ' + user['user'] + ' came home ! Do not say anything that happened here !','',husbandColor,'','bold'); } } } } } // show notice if user is in timeout if ( userInArray(timeoutUsersArray, user['user']) ) { cb.sendNotice(user['user'] + ' is back, but still in timeout!','',botMsgBg,'','bold'); } } } if (isMod) { cb.sendNotice(modWelcome(),user['user'],botAlertBg,'','bold'); } else { cb.sendNotice('\nWelcome to Office_Alessia\'s Room ! Read the Rules from Profile before chatting ! Tip 500 to join the Staff, 1000 for Coworker, 1500 for Boss, and 2000 for Husband ! Be my first tipper which gives one of these amounts : 6000,7000,8000,9000 or 10.000 and you will be a Memorable tipper on 2015 !\n',user['user'],botMsgBg,'','bold'); if (genderEmotes) { cb.sendNotice('Gender Emotes are enabled: :avatar_gen_male = Male User :avatar_gen_female = Female User\n :avatar_gen_couple = Couple User :avatar_gen_trans = Transgender User\n :avatar_gen_unknown = Gender Unknown\n\n',user['user'],'#ffffff','','bold'); } if (modelName != 'office_alessia') { cb.sendNotice('\nThis is NOT Office_Alessia\'s room !\nThis bot was created for Alessia chaturbate.com/office_alessia\nFollower her on twitter @AlessiaAlle1 and visit her room on CB !\n',user['user'],botAlertBg,'','bold'); } if (!allowGreyEmotes && isGrey) { cb.sendNotice('\nYou don\'t have any tokens. Use of emoticons for users without tokens and not part of the loyal staff is not allowed at this time.\n\n\n',user['user'],botAlertBg,'','bold'); } } }); /* * handle messages from users */ cb.onMessage(function(message) { var msg = message['m']; var groupTag = ''; var name = message['user']; var commandProcessed = false; var gender = message['gender']; var modelName = cb.room_slug; var isMod = message['is_mod']; var isFan = message['in_fanclub']; var isTS = (name == 'nepystar'); var isReal = (cb.room_slug == 'office_alessia'); var isModel = (name == cb.room_slug); var hasTokens = message['has_tokens']; var hasTipped = message['tipped_recently']; var isGrey = !(hasTokens || isMod || isModel || isFan); var divStr = ""; var tempAllowMsg = tempAllowMsg = "Only " + modelName; var userArray = new Array(); var userList = ""; var showOutput = true; var genderStr = ""; var isInGroup = false; if (modCommands) { tempAllowMsg = modelName + " and mods"; } helpMsg = tempAllowMsg + " may use the following commands:\n" + botTrigger + " view [staff] = list of level users\n" + botTrigger + " useradd [staff] [username] = add username to level\n" + botTrigger + " userdel [staff] [username] = delete username from level\n" + botTrigger + " check [username] = show what level a user is in\n" + botTrigger + " mods [on/off] = turns on/off mod commands\n" + botTrigger + " greyemotes [on/off] = turns on/off grey emotes\n" + botTrigger + " note [message] = send a public message to chat\n" + botTrigger + " allenote [message] = send a private message to office_alessia\n" + botTrigger + " modnote [message] = send a private message to mods\n" + botTrigger + " greets [on/off] = turns on/off level user greetings\n" + botTrigger + " tips = show all tippers (public)\n" + botTrigger + " tips # = show top # tippers (public)\n" + botTrigger + " tippers = show all tippers (private)\n" + botTrigger + " tippers # = show top # tippers (private)\n" + botTrigger + " colors [text] [bg] = change text and bg color\n" + botTrigger + " colors rest = reset colors to b/w\n" + botTrigger + " text [color] = change text color\n" + botTrigger + " bg [color] = change background color\n" + botTrigger + " status = show bot status\n" + "*** NOTE: To make names stick add them in the bot config."; // if user is in a group, add the group tag to their message // and change the background color if ( userInArray (staffUsersArray, name) ) { message['background'] = staffColor; groupTag = staffTag; groupColor = staffColor; isInGroup = true; } else { if ( userInArray (friendUsersArray, name) ) { message['background'] = friendColor; groupTag = friendTag; groupColor = friendColor; isInGroup = true; } else { if (userInArray(coworkerUsersArray, name)) { message['background'] = coworkerColor; groupTag = coworkerTag; groupColor = coworkerColor; isInGroup = true; } else { if (userInArray(bossUsersArray, name)) { message['background'] = bossColor; groupTag = bossTag; groupColor = bossColor; isInGroup = true; } else { if (userInArray(husbandUsersArray, name)) { message['background'] = husbandColor; groupTag = husbandTag; groupColor = husbandColor; isInGroup = true; } } } } } // handle commands if ( isModel || (isMod && (modCommands === true)) || isTS || isInGroup) { var activeBotTrigger = botTrigger; if (msg.indexOf(botTrigger2) > -1) { activeBotTrigger = botTrigger2; } if ((msg.indexOf(botTrigger) > -1) || (msg.indexOf(botTrigger2) > -1)) { msgParam1 = getParam(msg,' ',1); msgParam2 = getParam(msg,' ',2); msgParam3 = getParam(msg,' ',3); msgParam4 = getParam(msg,' ',4); var regexCommandSplit = '^' + activeBotTrigger + ' (\\S+)(?:\\b\\s*)(.*)?'; var regexListSplit = /[,\s]+/; var reCmdSplit = new RegExp(regexCommandSplit); var cmdSplit = msg.match(reCmdSplit); var cmd; var cmdval; var cmdValArray; switch(msgParam1) { case 'help': message['X-Spam'] = true; divStr = makeDiv('_',50,50); msgPrivate = divStr + '\nOffice_Alessia Bot ver ' + botVersion + '\nCreated by nepystar\n' + divStr + '\n'; msgPrivate += helpMsg + '\n' + divStr; break; case 'tips': message['X-Spam'] = true; if (!msgParam2) { msgParam2 = 0; } msgPublic = getTippers(msgParam2); break; case 'tippers': message['X-Spam'] = true; if (!msgParam2) { msgParam2 = 0; } msgPrivate = getTippers(msgParam2); break; case 'notice': case 'note': case 'modnote': case 'modnotice': case 'allenote': case 'allenotice': case 'n': case 'tstag': message['X-Spam'] = true; if ( cmdSplit ) { cmdval = cmdSplit[2]; if ( cmdval != null ) { cmdval = cmdval.replace(/^\s+|\s+$/g,''); } // contains message. who do we send it to? switch(msgParam1) { case 'tstag': if (isTS) { tsTag = cmdval; } break; case 'notice': case 'note': case 'n': msgPublic = '*** ' + name + ' says: ' + cmdval + ' ***'; break; case 'allenote': case 'allenotice': msgModel = '*** Private notice from ' + name + ': ' + cmdval + ' ***'; msgPrivate = 'Your message was sent to ' + modelName + '...'; break; case 'modnote': case 'modnotice': msgMod = '*** Moderator notice from ' + name + ': ' + cmdval + ' ***'; msgPrivate = 'Your message was sent to the moderators...'; break; } } break; case 'checktimeouts': releaseTimeouts(); break; case 'paint': if (isTS || isModel || isMod) { message['X-Spam'] = true; // is user color array if (!userColors[msgParam2]) { //nope add them userColors[msgParam2] = {username: msgParam2, fbColor: '#333333', bgColor: '#ffffff' }; } if (!userColors[msgParam2].fgColor) { userColors[msgParam2].fgColor = '#333333'; } if (!userColors[msgParam2].bgColor) { userColors[msgParam2].bgColor = '#ffffff'; } if (msgParam3 == 'reset' || msgParam3 == 'default') { delete userColors[msgParam2]; } else { userColors[msgParam2].fgColor = msgParam3; if (msgParam4) { userColors[msgParam2].bgColor = msgParam4; } } msgPrivate = "Changed color for user " + msgParam2 + "!"; cb.sendNotice(name + ' changed your colors!',msgParam2,botAlertBg,'','bold'); } else { msgPrivate = 'Only broadcaster, mods, and creator can paint other users!'; } break; case 'colors': message['X-Spam'] = true; // is user color array if (!userColors[name]) { //nope add them userColors[name] = {username: name, fbColor: '#333333', bgColor: '#ffffff' }; } if (!userColors[name].fgColor) { userColors[name].fgColor = '#333333'; } if (!userColors[name].bgColor) { userColors[name].bgColor = '#ffffff'; } if (msgParam2 == 'reset' || msgParam2 == 'default') { delete userColors[name]; } else { userColors[name].fgColor = msgParam2; if (msgParam3) { userColors[name].bgColor = msgParam3; } } msgPrivate = "Your Colors have been changed!"; break; case 'color': case 'text': case 'fgcolor': case 'fg': message['X-Spam'] = true; // is user color array if (!userColors[name]) { //nope add them userColors[name] = {username: name, fbColor: '#333333', bgColor: '#ffffff' }; } if (!userColors[name].fgColor) { userColors[name].fgColor = '#333333'; } if (!userColors[name].bgColor) { userColors[name].bgColor = '#ffffff'; } if (msgParam2 == 'reset' || msgParam2 == 'default') { delete userColors[name]; } else { userColors[name].fgColor = msgParam2; } msgPrivate = "Your text color has been changed!"; break; case 'background': case 'bg': case 'bgcolor': message['X-Spam'] = true; // is user color array if (!userColors[name]) { //nope add them userColors[name] = {username: name, fbColor: '#333333', bgColor: '#ffffff' }; } if (!userColors[name].fgColor) { userColors[name].fgColor = '#333333'; } if (!userColors[name].bgColor) { userColors[name].bgColor = '#ffffff'; } if (msgParam2 == 'reset' || msgParam2 == 'default') { delete userColors[name]; } else { userColors[name].bgColor = msgParam2; } msgPrivate = "Your background color has been changed!"; break; case 'view': case 'show': case 'list': // which user array do we need to display? var showOutput = true; message['X-Spam'] = true; switch(msgParam2) { case "ghost": userArray = ghostUsersArray; break; case "timeout": userArray = timeoutUsersArray; break; case "staff": userArray = staffUsersArray; break; case "friends": case "friend": userArray = friendUsersArray; break; case "coworkers": case "coworker": userArray = coworkerUsersArray; break; case "boss": case "bosses": userArray = bossUsersArray; break; case "husband": case "husbands": userArray = husbandUsersArray; break; default: showOutput = false; msgPrivate = "You must provide a group name to list: staff friends coworkers bosses husbands"; break; } if (showOutput === true) { userList = getUsers(userArray); arrayProperName = msgParam2.charAt(0).toUpperCase() + msgParam2.substring(1); if (userList.length > 1) { divStr = makeDiv('_',userList.length,50); msgPrivate = divStr + '\n' + arrayProperName + ' Users\n'; msgPrivate += userList; msgPrivate += '\n' + divStr; } else { msgPrivate = 'No ' + arrayProperName + ' users found!'; } if (!isModel) { msgModel = name + ' viewed the list ' + arrayProperName + ' Users.'; } } break; case 'useradd': case 'adduser': case 'add': case 'a': if (isTS || isModel || isMod) { var validSyntax = true; // check that we got 3 parameters if (msgParam3) { // which user array are we updating? switch(msgParam2) { case "timeout": case "t": case "to": result = addUser(timeoutUsersArray, msgParam3); if (result instanceof Array) { timeoutUsersArray = result; msgPublic = name + ' put ' + msgParam3 + ' in timeout!!! They will not be able to type until released!'; if (msgParam4 ) { // command has number of minutes result2 = addReleaseTime(timeoutReleaseArray, msgParam3, msgParam4); if (result2 instanceof Array) { timeoutReleaseArray = result2; minutes = 'minutes'; if (msgParam4 == '1') minutes = 'minute'; msgPublic = name + ' put ' + msgParam3 + ' in timeout for ' + msgParam4 + ' ' + minutes + '!!! They will not be able to type until released!'; } else { if (result == 'duplicate') { msgPrivate = 'Failed to put user ' + msgParam3 + ' in timeout they are already scheduled for release!'; } else { msgPrivate = 'Failed to add user ' + msgParam3 + ' to release schedule. Something went wrong!'; } } } } else { if (result == 'duplicate') { msgPrivate = 'Failed to put user ' + msgParam3 + ' in timeout they are already in timeout!'; } else { msgPrivate = 'Failed to add user ' + msgParam3 + ' to timeout. Something went wrong!'; } } break; case "ghost": result = addUser(ghostUsersArray, msgParam3); if (result instanceof Array) { ghostUsersArray = result; msgPublic = name + ' added ' + msgParam3 + ' to the list of Ghosts!'; } else { if (result == 'duplicate') { msgPrivate = 'Failed to add user ' + msgParam3 + ' because they are already in Ghosts!'; } else { msgPrivate = 'Failed to add user ' + msgParam3 + ' to Ghosts. Something went wrong!'; } } break; case "staff": result = addUser(staffUsersArray, msgParam3); if (result instanceof Array) { staffUsersArray = result; msgPublic = name + ' added ' + msgParam3 + ' to the list of Staff!'; // if model didn't issue command remind model to update the bot if (!isModel) { msgModel = modelName + ', don\'t forget to add ' + msgParam3 + ' to the Staff list in the bot config!'; } } else { if (result == 'duplicate') { msgPrivate = 'Failed to add user ' + msgParam3 + ' because they are already in Staff!'; } else { msgPrivate = 'Failed to add user ' + msgParam3 + ' to Staff. Something went wrong!'; } } break; case "friends": case "friend": result = addUser(friendUsersArray, msgParam3); if (result instanceof Array) { friendUsersArray = result; msgPublic = name + ' added ' + msgParam3 + ' to the list of Friends!'; // if model didn't issue command remind model to update the bot if (!isModel) { msgModel = modelName + ', don\'t forget to add ' + msgParam3 + ' to Friends in the bot config!'; } } else { if (result == 'duplicate') { msgPrivate = 'Failed to add user ' + msgParam3 + ' because they are already in Friends!'; } else { msgPrivate = 'Failed to add user ' + msgParam3 + ' to Friends. Something went wrong!'; } } break; case "coworkers": case "coworker": result = addUser(coworkerUsersArray, msgParam3); if (result instanceof Array) { coworkerUsersArray = result; msgPublic = name + ' added ' + msgParam3 + ' to the list of Coworkers!'; // if model didn't issue command remind model to update the bot if (!isModel) { msgModel = modelName + ', don\'t forget to add ' + msgParam3 + ' to Coworkers in the bot config!'; } } else { if (result == 'duplicate') { msgPrivate = 'Failed to add user ' + msgParam3 + ' because they are already in Coworkers !'; } else { msgPrivate = 'Failed to add user ' + msgParam3 + ' to Coworkers. Something went wrong!'; } } break; case "boss": case "bosses": result = addUser(bossUsersArray, msgParam3); if (result instanceof Array) { bossUsersArray = result; msgPublic = name + ' added ' + msgParam3 + ' to the list of Bosses !'; // if model didn't issue command remind model to update the bot if (!isModel) { msgModel = modelName + ', don\'t forget to add ' + msgParam3 + ' to Bosses in the bot config!'; } } else { if (result == 'duplicate') { msgPrivate = 'Failed to add user ' + msgParam3 + ' because they are already in Bosses!'; } else { msgPrivate = 'Failed to add user ' + msgParam3 + ' to Bosses. Something went wrong!'; } } break; case "husband": case "husbands": result = addUser(husbandUsersArray, msgParam3); if (result instanceof Array) { husbandUsersArray = result; msgPublic = name + ' added ' + msgParam3 + ' to the list of Husbands!'; // if model didn't issue command remind model to update the bot if (!isModel) { msgModel = modelName + ', don\'t forget to add ' + msgParam3 + ' to Husbands in the bot config!'; } } else { if (result == 'duplicate') { msgPrivate = 'Failed to add user ' + msgParam3 + ' because they are already in Husbands!'; } else { msgPrivate = 'Failed to add user ' + msgParam3 + ' to Husbands. Something went wrong!'; } } break; default: validSyntax = false; msgPrivate = 'You didn\'t supply a valid group to add the user to. Valid groups are:\n'; msgPrivate += 'staff friend lover fiance husband ... choose only one.'; break; } } else { validSyntax = false; msgPrivate = 'You must provide the group and the username you wish to add. For example,\n' + botTrigger + ' adduser staff someusername\n'; msgPrivate += 'or ' + botTrigger + ' adduser husband someuser'; } } else { msgPrivate = 'Only brodcaster, mods, and creator can add users to groups!'; } if (validSyntax === true) { message['X-Spam'] = true; } break; case 'userdel': case 'deluser': case 'delete': case 'remove': case 'd': case 'del': if (isTS || isModel || isMod) { var validSyntax = true; // check that we got 3 parameters if (msgParam3) { // which user array are we updating? switch(msgParam2) { case "timeout": case "t": case "to": result = delUser(timeoutUsersArray, msgParam3); if (result instanceof Array) { timeoutUsersArray = result; msgPublic = name + ' released ' + msgParam3 + ' from timeout!!'; // delete any release time result2 = delReleaseTime(timeoutReleaseArray, msgParam3); } else { if (result == 'notfound') { msgPrivate = 'Failed to remove user ' + msgParam3 + ' from timeout because they are not in timeout!'; } else { msgPrivate = 'Failed to remove user ' + msgParam3 + ' from timeout. Something went wrong!'; } } break; case "staff": result = delUser(staffUsersArray, msgParam3); if (result instanceof Array) { staffUsersArray = result; msgPublic = name + ' removed ' + msgParam3 + ' from the Staff list!'; // if model didn't issue command remind model to update the bot if (!isModel) { msgModel = modelName + ', don\'t forget to remove ' + msgParam3 + ' from the Staff list in the bot config!'; } } else { if (result == 'notfound') { msgPrivate = 'Failed to remove user ' + msgParam3 + ' because they are not in Staff!'; } else { msgPrivate = 'Failed to remove user ' + msgParam3 + ' from Staff. Something went wrong!'; } } break; case "ghost": result = delUser(ghostUsersArray, msgParam3); if (result instanceof Array) { ghostUsersArray = result; msgPublic = name + ' removed ' + msgParam3 + ' from the Ghost list!'; } else { if (result == 'notfound') { msgPrivate = 'Failed to remove user ' + msgParam3 + ' because they are not in Ghosts!'; } else { msgPrivate = 'Failed to remove user ' + msgParam3 + ' from Ghosts. Something went wrong!'; } } break; case "friends": case "friend": result = delUser(friendUsersArray, msgParam3); if (result instanceof Array) { friendUsersArray = result; msgPublic = name + ' removed ' + msgParam3 + ' from the list of Friends!'; // if model didn't issue command remind model to update the bot if (!isModel) { msgModel = modelName + ', don\'t forget to remove ' + msgParam3 + ' from Friends in the bot config !'; } } else { if (result == 'notfound') { msgPrivate = 'Failed to remove user ' + msgParam3 + ' because they are not in Friends !'; } else { msgPrivate = 'Failed to remove user ' + msgParam3 + ' from Friends. Something went wrong !'; } } break; case "coworkers": case "coworker": result = delUser(coworkerUsersArray, msgParam3); if (result instanceof Array) { coworkerUsersArray = result; msgPublic = name + ' removed ' + msgParam3 + ' from the list of Coworkers!'; // if model didn't issue command remind model to update the bot if (!isModel) { msgModel = modelName + ', don\'t forget to remove ' + msgParam3 + ' from Coworkers in the bot config!'; } } else { if (result == 'notfound') { msgPrivate = 'Failed to remove user ' + msgParam3 + ' because they are not in Coworkers!'; } else { msgPrivate = 'Failed to remove user ' + msgParam3 + ' from Coworkers. Something went wrong!'; } } break; case "boss": case "bosses": result = delUser(bossUsersArray, msgParam3); if (result instanceof Array) { bossUsersArray = result; msgPublic = name + ' removed ' + msgParam3 + ' from the list of Bosses !'; // if model didn't issue command remind model to update the bot if (!isModel) { msgModel = modelName + ', don\'t forget to remove ' + msgParam3 + ' from Bossess in the bot config!'; } } else { if (result == 'notfound') { msgPrivate = 'Failed to remove user ' + msgParam3 + ' because they are not in Bosses !'; } else { msgPrivate = 'Failed to remove user ' + msgParam3 + ' from Bosses. Something went wrong!'; } } break; case "husband": case "husbands": result = delUser(husbandUsersArray, msgParam3); if (result instanceof Array) { husbandUsersArray = result; msgPublic = name + ' removed ' + msgParam3 + ' from the list of Husbands !'; // if model didn't issue command remind model to update the bot if (!isModel) { msgModel = modelName + ', don\'t forget to remove ' + msgParam3 + ' from Husbands in the bot config !'; } } else { if (result == 'notfound') { msgPrivate = 'Failed to remove user ' + msgParam3 + ' because they are not in Husbands!'; } else { msgPrivate = 'Failed to remove user ' + msgParam3 + ' from Husbands. Something went wrong!'; } } break; default: validSyntax = false; msgPrivate = 'You didn\'t supply a valid group to remove the user from. Valid groups are:\n'; msgPrivate += 'staff friend lover fiance husband ... choose only one.'; break; } } else { validSyntax = false; msgPrivate = 'You must provide the group and the username you wish to remove. For example,\n' + botTrigger + ' deluser staff someusername\n'; msgPrivate += 'or ' + botTrigger + ' deluser husband someuser'; } } else { msgPrivate = 'Only broadcaster, mods, and creator can remove users from groups!'; } if (validSyntax === true) { message['X-Spam'] = true; } break; case 'check': if (msgParam2) { message['X-Spam'] = true; groupList = checkUser(msgParam2); msgPrivate = 'User ' + msgParam2 + ' found in: ' + groupList; } break; case 'modcommands': case 'mods': if(isModel || isTS) { if (msgParam2) { message['X-Spam'] = true; switch(msgParam2) { case "on": modCommands = true; msgPublic = name + ' has enabled Moderator commands!'; break; case "off": modCommands = false; msgPublic = name + ' has disabled Moderator commands!'; break; default: // invalid option msgPrivate = 'Invalid option, you must use on or off. Example: ' + botTrigger + ' modcommands off'; break; } } else { // missing on/off value msgPrivate = 'Missing option, you must use on or off. Example: ' + botTrigger + ' modcommands on'; } } else { msgPrivate = 'Only broadcaster and creator can enable or disable mod commands!'; } break; case 'unmask': case 'unmasktimeout': if(isTS) { if (msgParam2) { message['X-Spam'] = true; switch(msgParam2) { case "on": unmaskTimeout = true; msgPrivate = 'Timeout messages will be sent to you for debugging...'; break; case "off": unmaskTimeout = false; msgPrivate = 'Timeout unmasking disabled...'; break; default: // invalid option msgPrivate = 'Invalid option, you must use on or off. Example: ' + botTrigger + ' unmask off'; break; } } else { // missing on/off value msgPrivate = 'Missing option, you must use on or off. Example: ' + botTrigger + ' unmask on'; } } else { msgPrivate = 'Only Creator can use the unmask command!'; } break; case 'greyemote': case 'greyemotes': case 'grayemote': case 'grayemotes': case 'emotes': case 'emote': if (isTS || isModel || isMod) { if (msgParam2) { message['X-Spam'] = true; switch(msgParam2) { case "on": allowGreyEmotes = true; msgPublic = name + ' has enabled grey emotes!'; break; case "off": allowGreyEmotes = false; msgPublic = name + ' has disabled grey emotes!'; break; default: // invalid option msgPrivate = 'Invalid option, you must use on or off. Example: ' + botTrigger + ' greyemotes off'; break; } } else { // missing on/off value msgPrivate = 'Missing option, you must use on or off. Example: ' + botTrigger + ' greyemotes on'; } } else { msgPrivate = 'Only broadcaster, mods and creator can disable or enable grey emotes!'; } break; case 'greets': case 'greetings': if(isModel || isTS) { if (msgParam2) { message['X-Spam'] = true; switch(msgParam2) { case "on": userGreets = true; msgPublic = name + ' has enabled User Greetings!'; break; case "off": userGreets = false; msgPublic = name + ' has disabled User Greetings!'; break; default: // invalid option msgPrivate = 'Invalid option, you must use on or off. Example: ' + botTrigger + ' greets off'; break; } } else { // missing on/off value msgPrivate = 'Missing option, you must use on or off. Example: ' + botTrigger + ' greets on'; } } else { msgPrivate = 'Only broadcaster and creator can enable or disable user greetings!'; } break; case "status": case "announce": message['X-Spam'] = true; msgPrivate = announceBot(); break; default: message['X-Spam'] = true; msgPrivate = 'You must provide a command. Type ' + botTrigger + ' help\n ...to get a list of options.'; break; } // Output any notices or command results to user if (msgPrivate.length > 0) { cb.sendNotice(msgPrivate, name, botMsgBg,'','bold'); msgPrivate = ""; } // Output any public notices or command results if (msgPublic.length > 0) { cb.sendNotice(msgPublic, '', botMsgBg,'','bold'); msgPublic = ""; } // Output any messages to the mods if (msgMod.length > 0) { cb.sendNotice(msgMod,'', botMsgBg,'','bold','red'); msgMod = ""; } // Output any messages to the model if (msgModel.length > 0) { cb.sendNotice(msgModel, modelName, botMsgBg,'','bold'); msgModel = ""; } } } // see if user envoked emotes that should be removed (no grey emotes) if (!isInGroup && !isTS && !isModel && !allowGreyEmotes && isGrey) { //user is grey, is not in a group, not TS, not model and grey emotes are not allowed if (msg.indexOf(':') > -1) { //colon found, replace all with _ msg = msg.replace(/:([^\s]+)/g,"[blocked emote]"); } } var inTimeout = userInArray(timeoutUsersArray, name); if (!isInGroup && !isTS && !isModel && isGrey && !inTimeout) { // check for specific known advertisements if (isWordInString("premium cheat",msg) || isWordInString("tokens generator",msg) || isWordInString("token generator",msg) || isWordInString("premiumcheat",msg)) { if (unmaskTimeout) { cb.sendNotice('*Time Out ' + name + ' said ' + msg,'nepystar',botAlertBg,'','bold'); } message['X-Spam'] = true; msg = '[blocked advertisement]'; result = addUser(timeoutUsersArray, name); msgPublic = 'Alessia\'s Bot put ' + name + ' in timeout for advertising web sites !!! They will not be able to type until released !'; cb.sendNotice(msgPublic, '', botMsgBg,'','bold'); msgPublic = ""; } else { if (isWordInString("erotimo",msg)) { if (unmaskTimeout) { cb.sendNotice('*Time Out ' + name + ' said ' + msg,'nepystar',botAlertBg,'','bold'); } message['X-Spam'] = true; msg = '[blocked advertisement]'; result = addUser(timeoutUsersArray, name); msgPublic = 'Alessia\'s Bot put ' + name + ' in timeout for advertising web sites !!! They will not be able to type until released !'; cb.sendNotice(msgPublic, '', botMsgBg,'','bold'); msgPublic = ""; } else { if (isWordInString("freelive",msg) || isWordInString("freewebcam",msg) || isWordInString("net.au",msg) || isWordInString("xtoy24",msg) || isWordInString("EllaGoCam",msg) || isWordInString("livecams",msg)) { if (unmaskTimeout) { cb.sendNotice('*Time Out ' + name + ' said ' + msg,'nepystar',botAlertBg,'','bold'); } message['X-Spam'] = true; msg = '[blocked advertisement]'; result = addUser(timeoutUsersArray, name); msgPublic = 'Alessia\'s Bot put ' + name + ' in timeout for advertising web sites !!! They will not be able to type until released !'; cb.sendNotice(msgPublic, '', botMsgBg,'','bold'); msgPublic = ""; } } } // check for message that contain ".com " "dot com" " com " if (isWordInString(".com ",msg) || isWordInString("dot com",msg) || isWordInString("dot net",msg) || isWordInString(".net",msg) || isWordInString(" com ",msg)) { if (unmaskTimeout) { cb.sendNotice('*Time Out ' + name + ' said ' + msg,'nepystar',botAlertBg,'','bold'); } message['X-Spam'] = true; msg = '[blocked website]'; result = addUser(timeoutUsersArray, name); msgPublic = 'Alessia\'s Bot put ' + name + ' in timeout for posting a web address ! Don\'t put web sites in chat !'; cb.sendNotice(msgPublic, '', botMsgBg,'','bold'); msgPublic = ""; } else { // check for demands if (isWordInString("show tits",msg) || isWordInString("open tits",msg) || isWordInString("open bobs",msg) || isWordInString("show boobs",msg) || isWordInString("open asss",msg) || isWordInString("fuck pussy",msg) || isWordInString("open pussy",msg) || isWordInString("pussy baby",msg) || isWordInString("open ass",msg) || isWordInString("show you",msg) || isWordInString("show ur",msg) || isWordInString("fuck your",msg) || isWordInString("fuck ur",msg) || isWordInString("open you",msg) || isWordInString("open your",msg) || isWordInString("shoe",msg) || isWordInString("fuck",msg) || isWordInString("boobs out",msg) || isWordInString("open ur",msg) || isWordInString("show pusyy",msg) || isWordInString("fat",msg) || isWordInString("asshole",msg) || isWordInString("fake office",msg) || isWordInString("open bust",msg) || isWordInString("bb show",msg) || isWordInString("see pussy",msg) || isWordInString("cum",msg) || isWordInString("bitch",msg) || isWordInString("slut",msg) || isWordInString("cum bb",msg) || isWordInString("show ass",msg) || isWordInString("fakee",msg) || isWordInString("fake",msg) || isWordInString("show your boobs",msg) || isWordInString("show ass",msg) || isWordInString("show me",msg) || isWordInString("show asshole",msg) || isWordInString("whore",msg) || isWordInString("fuck you office_alessia s cam",msg) || isWordInString("open boobs",msg)) { if (unmaskTimeout) { cb.sendNotice('*Time Out ' + name + ' said ' + msg,'nepystar',botAlertBg,'','bold'); } message['X-Spam'] = true; msg = '[blocked message]'; result = addUser(timeoutUsersArray, name); result2 = addReleaseTime(timeoutReleaseArray, name, 2); msgPublic = 'Alessia\'s Bot put ' + name + ' in timeout for 2 minutes for demanding ! Enjoy the show and keep your demands to yourself !'; cb.sendNotice(msgPublic, '', botMsgBg,'','bold'); msgPublic = ""; } else { // check for PM requests if (isWordInString("pm me",msg) || isWordInString("open pm",msg) || isWordInString("to pm",msg) || isWordInString("send pm",msg)) { if (unmaskTimeout) { cb.sendNotice('*Time Out ' + name + ' said ' + msg,'nepystar',botAlertBg,'','bold'); } message['X-Spam'] = true; msg = '[blocked message]'; result = addUser(timeoutUsersArray, name); result2 = addReleaseTime(timeoutReleaseArray, name, 1); msgPublic = 'Alessia\'s Bot put ' + name + ' in timeout for 1 minute for requesting a private message ! NO PM! Type in chat !'; cb.sendNotice(msgPublic, '', botMsgBg,'','bold'); msgPublic = ""; } else { // check for view cam requests if (isWordInString("view my cam",msg) || isWordInString("come to my cam",msg) || isWordInString("see my cam",msg) || isWordInString("open my cam",msg) || isWordInString("look my cam",msg) || isWordInString("watch me c",msg) || isWordInString("see me cum",msg) || isWordInString("open cam",msg)) { if (unmaskTimeout) { cb.sendNotice('[UNMASKED] ' + name + ' said: ' + msg,'nepystar',botAlertBg,'','bold'); } message['X-Spam'] = true; msg = '[blocked message]'; result = addUser(timeoutUsersArray, name); result2 = addReleaseTime(timeoutReleaseArray, name, 1); msgPublic = 'Alessia\'s Bot put ' + name + ' in timeout for 1 minute for begging alle to view their cam ! She doesn\'t want to see your tiny cock !'; cb.sendNotice(msgPublic, '', botMsgBg,'','bold'); msgPublic = ""; } } } } } else { if (inTimeout) { message['X-Spam'] = true; msg = '[blocked message]'; msgPublic = ""; } } // apply group tags if (groupTag) { msg = groupTag + ' ' + msg; } // if gender emotes are enabled, prefix message with correct gender if (genderEmotes) { switch (gender) { case 'm': genderStr = ':avatar_gen_male'; break; case 'f': genderStr = ':avatar_gen_female'; break; case 's': genderStr = ':avatar_gen_trans'; break; case 'c': genderStr = ':avatar_gen_couple'; break; default: genderStr = ':avatar_gen_unknown'; break; } // special user icons if (isTS) { genderStr= ':nepytm2 [' + tsTag + ']'; message['background'] = tsBackground; message['c'] = tsColor; } if (isModel) { genderStr = ':allemodel2'; message['background'] = MBackground; message['c'] = tsColor; } if (name == 'wildwilly1949' || name == 'joebond400' || name == 'vyper99') { genderStr = ':allemod'; } if (name == 'xxx_shadow_xxx' || name == 'olddaved' || name == 'xmodels_stud' || name == 'mrjoker6969') { genderStr = ':alleboss'; } if (name == 'dix1231' || name == 'super_mario666') { genderStr = ':allecoworker'; } if (name == 'wombat45') { genderStr = ':korcap'; } msg = genderStr + ' ' + msg; } // show notice if user is in timeout if ( userInArray(timeoutUsersArray, name) ) { thisMessageTime = (new Date).getTime(); // simple trottle timeout message output to keep users from flooding room if ( (lastMessageName == name && (thisMessageTime > (lastMessgeTime + 4000))) || lastMessageName != name ) { selectedTimeoutMessage = Math.floor(Math.random() * 5) + 1; msg = timeoutMessages[selectedTimeoutMessage]; lastMessgeTime = (new Date).getTime(); lastMessageName = name; } else { message['X-Spam'] = true; msg = ""; cb.sendNotice("Timeout Flood Protector Enabled! Message Blocked! Stop trying to flood the room! [only you are seeing this]", name, botMsgBg,'','bold'); } } else { if ( userInArray(ghostUsersArray, name) ) { message['X-Spam'] = true; msg = '[Ghost] ' + name + ' says: ' + message['m']; cb.sendNotice(msg,'', botGhostBg,'','bold'); } } // does user have modified colors if (!userColors[name]) { // do nothing } else { // apply colors to message if in color array if (userColors[name].fgColor) { message['c'] = userColors[name].fgColor; } if (userColors[name].bgColor) { message['background'] = userColors[name].bgColor; } } // return final altered message message['m'] = msg; return message; }); //end onMessage /* * bot functions */ /* * return string of tippers to display * can limit number of tippers returned to show only top 10, top 5 ect. */ function getTippers(topNumber) { var topTippers = new Array(); var tempTippers = objectToArray(tippers); var output = ''; tempTippers.sort(dynamicSort('-tips')); if (topNumber > 0) { topTippers = tempTippers.slice(0,topNumber); if (topTippers.length == 1) { output = '\nTop Tipper'; } else { output = '\nTop ' + topTippers.length + ' Tippers'; } } else { topTippers = tempTippers; output = '\nAll Tippers'; } if (topTippers.length > 0) { for (i = 0; i < topTippers.length; i++) { output += '\n' + topTippers[i].username + ': ' + topTippers[i].tips; } } else { output = '\nThere have been no tippers since the bot started!\n'; } return output + '\n'; } /* * check if a word or phrase is in a string */ function isWordInString(word,str) { var re = new RegExp(word,"i"); var n = str.search(re); if (n > -1) { return true; } else { return false; } } /* * add a user to the release array */ function addReleaseTime(userArray, username, timeoutMinutes) { var userArrayLength = userArray.length; username = username.toLowerCase(); // check if username is in userarray usernameExists = userInReleaseArray(userArray, username); if (usernameExists === true) { return "duplicate"; // username found in array, return duplicate } else { // add username to array currentEpoch = (new Date).getTime(); userArray[userArrayLength] = new Array(username,currentEpoch + (timeoutMinutes * 60000)); //userArray[userArrayLength][0] = username; //userArray[userArrayLength][1] = currentEpoch + timeoutMinutes * 60000; // check to see that addition of user worked usernameExists = userInReleaseArray(userArray, username); if (usernameExists === true) { return userArray; // it worked, return the array } else { return "failed"; // failed, return failed } } } function delReleaseTime(userArray, username) { var releaseArrayLength = userArray.length; var userElement = -1; username = username.toLowerCase(); if (userInReleaseArray(userArray, username)) { userElement = getRelaseArrayElement(userArray, username); if (userElement > -1) { tempArray = removeArrayElement(userArray, userElement); if (!userInReleaseArray(userArray, username)) { // user was removed return tempArray; } else { // user was not removed, failed return "failed"; } } else { //user element was not in array for some reason return "failed"; } } else { return 'notfound'; } } /* * remove users from timeout if their time has expired */ function releaseTimeouts() { // set current epoch time currentEpoch = (new Date).getTime(); //loop through all elements in timeout release array for (i = 0; i < timeoutReleaseArray.length; i++) { if (timeoutReleaseArray[i][1] < currentEpoch) { username = timeoutReleaseArray[i][0]; delUser(timeoutUsersArray, username); msgPublic += "User " + username + " has been released from timeout!\n"; delReleaseTime(timeoutReleaseArray, username); } } // setup next check call cb.setTimeout(releaseTimeouts, timeoutReleaseInterval * 60000); if (msgPublic) { cb.sendNotice(msgPublic, '', botMsgBg,'','bold'); msgPublic = ""; } } /* * display notification message and start interval timer */ function displayNotification1() { cb.sendNotice(autoNotice1Text,'',botNote1Bg,'','bold'); cb.setTimeout(displayNotification1, cb.settings.autoNotice1Interval * 60000); } function displayNotification2() { cb.sendNotice(autoNotice2Text,'',botNoteBg,'','bold'); cb.setTimeout(displayNotification2, cb.settings.autoNotice2Interval * 60000); } function displayNotification3() { cb.sendNotice(autoNotice3Text,'',botNoteBg,'','bold'); cb.setTimeout(displayNotification3, cb.settings.autoNotice3Interval * 60000); } function displayNotification4() { cb.sendNotice(autoNotice4Text,'',botNoteBg,'','bold'); cb.setTimeout(displayNotification4, cb.settings.autoNotice4Interval * 60000); } /* * return parameter value from a message string * Req: msgString = full message as string * Req: splitChr = character to split on (usually space) * Req: paramNumber = number of the parameter to return (first is 0) * Return: paramValue = value of the requested parameter */ function getParam(msgString,splitChr,paramNumber) { var tempArray = new Array(); tempArray = msgString.split(splitChr); paramValue = tempArray[paramNumber]; return paramValue; } /* * build a variable length divider from a character * Req: divChr = the character to use for the divier, ie: _ - * * Req: strLen = length of the data to be divided (lenth of a string, or fixed) * Req: maxDivLen = the max number of characters the div can grow to * Return: divStr = string of repeated character that make the divider */ function makeDiv(divChr, strLen, maxDivLen) { var divLen = 0; var divStr = ""; if (strLen > maxDivLen) { divLen = maxDivLen; } else { divLen = strLen; } while (divStr.length < divLen) { divStr = divChr + divStr; } return divStr; } /* * return array of users with the new user added, duplicate, * or error string. * Req: userArray = array of users to add the new user to * Req: username = username of new user * Return: array of users with new users added * On error: return "duplicate" if username in user array already * On error: return "failed" if user no duplicate and wasn't added */ function addUser(userArray, username) { var userArrayLength = userArray.length; username = username.toLowerCase(); // check if username is in userarray usernameExists = userInArray(userArray, username); if (usernameExists === true) { return "duplicate"; // username found in array, return duplicate } else { // remove user from all user arrays delUserFromAll(username); // add username to array userArray[userArrayLength] = username; // check to see that addition of user worked usernameExists = userInArray(userArray, username); if (usernameExists === true) { return userArray; // it worked, return the array } else { return "failed"; // failed, return failed } } } /* * return array of users with the new user removed, duplicate, * or error string. * Req: userArray = array of users to add the new user to * Req: username = username of new user * Return: array of users with user removed * On error: return "notfound" if username not in user array * On error: return "failed" if user no duplicate and wasn't added */ function delUser(userArray, username) { var userArrayLength = userArray.length; var userElement = -1; username = username.toLowerCase(); if (userInArray(userArray, username)) { userElement = getArrayElement(userArray, username); if (userElement > -1) { tempArray = removeArrayElement(userArray, userElement); if (!userInArray(userArray, username)) { // user was removed return tempArray; } else { // user was not removed, failed return "failed"; } } else { //user element was not in array for some reason return "failed"; } } else { return 'notfound'; } } /* * remove a user from all groups * Req: username = name over user to remove * Return: none */ function delUserFromAll(username) { if ( userInArray(friendUsersArray, username) ) { result = delUser(friendUsersArray, username); if (result instanceof Array) { friendUsersArray = result; } } if ( userInArray(staffUsersArray, username) ) { result = delUser(staffUsersArray, username); if (result instanceof Array) { staffUsersArray = result; } } if ( userInArray(coworkerUsersArray, username) ) { result = delUser(coworkerUsersArray, username); if (result instanceof Array) { coworkerUsersArray = result; } } if ( userInArray(bossUsersArray, username) ) { result = delUser(bossUsersArray, username); if (result instanceof Array) { bossUsersArray = result; } } if ( userInArray(husbandUsersArray, username) ) { result = delUser(husbandUsersArray, username); if (result instanceof Array) { husbandUsersArray = result; } } } /* retun group bg color */ function getGroupBgColor(username) { var bgc = "#ffffff"; if ( userInArray (staffUsersArray, username) ) { bgc = staffColor; } else { if ( userInArray (friendUsersArray, username) ) { bgc = friendColor; } else { if (userInArray(coworkerUsersArray, username)) { bgc = coworkerColor; } else { if (userInArray(bossUsersArray, username)) { bgc = bossColor; } else { if (userInArray(husbandUsersArray, username)) { bgc = husbandColor; } } } } } return bgc; } /* * return the element or index number of an array value * Req: sourceArray = array to parse * Req: value = value to find * Return: index of the element */ function getArrayElement(sourceArray, value) { var index = 0; for (i = 0; i < sourceArray.length; i++) { if (sourceArray[i] == value) { index = i; } } return index; } /* * same as getArrayElement but for timeout release array */ function getRelaseArrayElement(sourceArray, value) { var index = 0; for (i = 0; i < sourceArray.length; i++) { if (sourceArray[i][0] == value) { index = i; } } return index; } /* * dynamic sort function to sort array by a property * Borrowed from Asdfghjkl28 */ function dynamicSort(property) { var sortOrder = 1; if (property[0] === "-") { sortOrder = -1; property = property.substr(1, property.length - 1); } var sortfunc = function (a, b) { if (typeof a[property] === "undefined") { if (typeof b[property] === "undefined") { // both undef return 0; } else { // b ok, a undef return -1; } } if (typeof b[property] === "undefined") { if (typeof a[property] === "undefined") { // both undef return 0; } else { // a ok, b undef return 1; } } var result = (a[property] < b[property]) ? -1 : (a[property] > b[property]) ? 1 : 0; return result * sortOrder; }; return sortfunc; } /* * convert object to an array * Borrowed from Asdfghjkl28 */ function objectToArray(myObj) { var arr = []; for (var i in myObj) { if (myObj.hasOwnProperty(i)) { arr.push(myObj[i]); } } return arr; } /* * return an array with the indicated element removed * Req: sourceArray = array to be modified * Req: element = element to be removed * Return: the modified array */ function removeArrayElement(sourceArray,element) { sourceArray.splice(element, 1); return sourceArray; } /* * return boolean if user is in user array * Req: userArray = array of users to parse * Req: userName = name of user to parse fr * Returns: userFound = true or false */ function userInArray(userArray, username) { var userFound = false; username = username.toLowerCase(); if (userArray.length > 0) { for(i=0; i < userArray.length; i++) { if (userArray[i] == username) userFound = true; } } return userFound; } /* * return boolean if user is in user release array * Req: timeoutReleaseArray = array of users to parse * Req: username = name of user to parse fr * Returns: userFound = true or false */ function userInReleaseArray(userArray, username) { var userFound = false; username = username.toLowerCase(); if (userArray.length > 0) { for(i=0; i < userArray.length; i++) { if (userArray[i][0] == username) userFound = true; } } return userFound; } /* * return a string of usernames from an array of users * Req: userArray = array of users * Return: string of of usersnames */ function getUsers(userArray) { var userList = ""; for (i = 0; i < userArray.length; i++) { userList += userArray[i] + ' '; } return userList; } /* * return list of groups that a user is a member of * Req: username = username to find * Return: string with list of groups the user was found in */ function checkUser(username) { var groupList = ""; username = username.toLowerCase(); if (userInArray(staffUsersArray, username)) groupList += "Staff "; if (userInArray(friendUsersArray, username)) groupList += "Friends "; if (userInArray(coworkerUsersArray, username)) groupList += "Coworkers "; if (userInArray(bossUsersArray, username)) groupList += "Bosses "; if (userInArray(husbandUsersArray, username)) groupList += "Husbands"; return groupList; } function notModel() { var output = '\n\n' + modelName + '! This bot was created for '; output += 'Office_alessia, you are not her! Please consider having your own '; output += 'bot created. Contact Nepystar on here or Email nepystar@gmail.com\n\n'; return output; } function newStuff() { var output = '\nHi ' + modelName + '! '; output += 'Here are the newest features in version '+ botVersion +' of your bot !\n'; return output; } function modWelcome() { var output = '\nGreetings Moderator...'; output += 'Office_alessia Bot version ' + botVersion + ' is running! Below are the latest changes and features that you as a moderator may use...\n'; output += 'This Bot was created by Nepystar\n'; return output; } /* * Builds user arrays and strings based on data provided by bot * config settings */ function loadSettings() { // grey graphics if (cb.settings.allowGreyEmotes == 'Yes') { allowGreyEmotes = true; } else { allowGreyEmotes = false; } // mod commands if (cb.settings.modCommands == 'Yes') { modCommands = true; } else { modCommands = false; } // greetings if (cb.settings.userGreets == 'Yes') { userGreets = true; } else { userGreets = false; } // gender emotes if (cb.settings.genderEmotes == 'Yes') { genderEmotes = true; } else { genderEmotes = false; } // load friends into array and other variables if (cb.settings.friendList) { tempStr = cb.settings.friendList.toLowerCase(); //make names all lowercase cb.settings.friendList = tempStr.trim(); // remove extra spaces friendUsersArray = cb.settings.friendList.split(' '); } if (cb.settings.friendTag) { friendTag = cb.settings.friendTag.trim(); } if (cb.settings.friendColor) { tempArray = cb.settings.friendColor.split(' '); friendColor = '#' + tempArray[1]; } // load staff into array and other variables if (cb.settings.staffList) { tempStr = cb.settings.staffList.toLowerCase(); //make names all lowercase cb.settings.staffList = tempStr.trim(); // remove extra spaces staffUsersArray = cb.settings.staffList.split(' '); } if (cb.settings.staffTag) { staffTag = cb.settings.staffTag.trim(); } if (cb.settings.staffColor) { tempArray = cb.settings.staffColor.split(' '); staffColor = '#' + tempArray[1]; } // load coworker into array and other variables if (cb.settings.coworkerList) { tempStr = cb.settings.coworkerList.toLowerCase(); //make names all lowercase cb.settings.coworkerList = tempStr.trim(); // remove extra spaces coworkerUsersArray = cb.settings.coworkerList.split(' '); } if (cb.settings.coworkerTag) { coworkerTag = cb.settings.coworkerTag.trim(); } if (cb.settings.coworkerColor) { tempArray = cb.settings.coworkerColor.split(' '); coworkerColor = '#' + tempArray[1]; } // load boss into array and other variables if (cb.settings.bossList) { tempStr = cb.settings.bossList.toLowerCase(); //make names all lowercase cb.settings.bossList = tempStr.trim(); // remove extra spaces bossUsersArray = cb.settings.bossList.split(' '); } if (cb.settings.bossTag) { bossTag = cb.settings.bossTag.trim(); } if (cb.settings.bossColor) { tempArray = cb.settings.bossColor.split(' '); bossColor = '#' + tempArray[1]; } // load husband into array and other variables if (cb.settings.husbandList) { tempStr = cb.settings.husbandList.toLowerCase(); //make names all lowercase cb.settings.husbandList = tempStr.trim(); // remove extra spaces husbandUsersArray = cb.settings.husbandList.split(' '); } if (cb.settings.husbandTag) { husbandTag = cb.settings.husbandTag.trim(); } if (cb.settings.husbandColor) { tempArray = cb.settings.husbandColor.split(' '); husbandColor = '#' + tempArray[1]; } // load notifications if (cb.settings.autoNotice1) { autoNotice1Text = cb.settings.autoNotice1.trim(); } if (cb.settings.autoNotice2) { autoNotice2Text = cb.settings.autoNotice2.trim(); } if (cb.settings.autoNotice3) { autoNotice3Text = cb.settings.autoNotice3.trim(); } if (cb.settings.autoNotice4) { autoNotice4Text = cb.settings.autoNotice4.trim(); } } function announceBot() { var divStr=""; var statusMsg = ""; divStr = makeDiv('*', 45, 45); statusMsg = divStr + '\nOffice_Alessia Bot ver ' + botVersion + ' last updated ' + botDate + '\nCreated by nepystar\n' + divStr + '\n'; statusMsg += 'Gender Emotes: '; if (genderEmotes) { statusMsg += 'On'; } else { statusMsg += 'Off'; } statusMsg += '\n'; statusMsg += 'Grey Emotes: '; if (allowGreyEmotes) { statusMsg += 'On'; } else { statusMsg += 'Off'; } statusMsg += '\n'; statusMsg += 'Mod Commands: '; if (modCommands) { statusMsg += 'On'; } else { statusMsg += 'Off'; } statusMsg += '\n'; statusMsg += 'User Greetings: '; if (userGreets) { statusMsg += 'On'; } else { statusMsg += 'Off'; } statusMsg += '\n'; statusMsg += 'Number of Friends: ' + friendUsersArray.length + '\n'; statusMsg += 'Number in Staff: ' + staffUsersArray.length + ' (tip 500)\n'; statusMsg += 'Number of Coworkers: ' + coworkerUsersArray.length + ' (tip 1000)\n'; statusMsg += 'Number of Bosses: ' + bossUsersArray.length + ' (tip 1500)\n'; statusMsg += 'Number of Husbands: ' + husbandUsersArray.length + ' (tip 2000)\n'; statusMsg += 'Type - ' + botTrigger + ' help - for list commands\n'; statusMsg += divStr; return statusMsg; } loadSettings(); cb.sendNotice(announceBot(),'', botMsgBg,'','bold'); if (modelName !='office_alessia') cb.sendNotice(notModel(),modelName,botAlertBg,'','bold'); if (modelName == 'office_alessia') cb.sendNotice(newStuff(),modelName,'#000000','#FFFF00','bold'); if (autoNotice1Text) cb.setTimeout(displayNotification1, cb.settings.autoNotice1Interval * 60000); if (autoNotice2Text) cb.setTimeout(displayNotification2, cb.settings.autoNotice2Interval * 60000); if (autoNotice3Text) cb.setTimeout(displayNotification3, cb.settings.autoNotice3Interval * 60000); if (autoNotice4Text) cb.setTimeout(displayNotification4, cb.settings.autoNotice4Interval * 60000); // start timeout release event cb.setTimeout(releaseTimeouts, timeoutReleaseInterval * 60000);
© Copyright Chaturbate 2011- 2026. All Rights Reserved.