Bots Home
|
Create an App
BouncyBot
Author:
ready3777
Description
Source Code
Launch Bot
Current Users
Created by:
Ready3777
/******************************************************* * Title: BouncyBot * * CrazyNote with added features for Bouncy Britney * * Author: this guy * Version: 0.1 (Aug 2014) * * Based on CrazeNoteBot: * Version: 1.0 (March 2014) * Build: .004 * Original authors: 'acrazyguy' and 'phatkatmeow'. * * *******************************************************/ /********** Constants **********/ const appName = "'BouncyBot'"; // Script name const appType = 'Bot'; // Script type: bot|app const SCRIPT_VERSION = '0.1'; // Internal: Script version number const SCRIPT_BUILD = '.004'; // Internal: Script build number const COLOR_NOTICE = '#6900CC'; // Chat notice colour - Purple const COLOR_HIGHLIGHT = '#EEE5FF'; const COLOR_SYNTAX = '#995B00'; // Usage notice colour - Brownish const COLOR_AMBER = '#E56B00'; // Amber const COLOR_MODCAST = '#D80A00'; // Text colour for the '/bc' '/tm' commands - Red const COLOR_HILITE = '#FFFFBF'; // Background colour for the '/bc' and '/tm' // commands - Yellow const COLOR_HELP = '#144D8C'; // Text colour for help - Blue-grey const COLOR_INFO = '#144D8C'; // neutral notice - Blue-grey const ONLY_MODERATORS = "* Command is only available to moderators."; const broadcaster = cb.room_slug; const commandPrefix = '/'; const COMMAND_CN = 'cn'; // Send general notice to the public const COMMAND_BC = 'bc'; // Send private notice to the broadcaster (mods only) const COMMAND_TM = 'tm'; // Send private notice to mods as a group const COMMAND_CNHELP = 'cnhelp'; // Send command list to mod/broadcaster const COMMAND_TPRICE = 'tprice'; const COMMAND_ADD = 'add'; // Add one or more viewers to ticket list const COMMAND_ADDUSER = 'adduser'; // Add user(s) alias const COMMAND_AU = 'au'; // Add user(s) alias const COMMAND_ADDLIST = 'addlist'; // Add user(s) alias const COMMAND_DEL = 'del'; // Delete a user const COMMAND_DELUSER = 'deluser'; // Del user alias const COMMAND_REMOVE = 'remove'; // Del user alias const COMMAND_REVOKE = 'revoke'; // Del user alias const COMMAND_TLIST = 'tlist'; // Lists users who paid for a ticket const COMMAND_SS = 'ss'; // SS const COMMAND_SSDEL = 'ssdel'; // SS del const COMMAND_SSLIST = 'sslist'; // SS list const dashLine = "------------------------------------------------------"; /********** Variables **********/ var userList = new Array(); var ssList = new Array(); var ticketList = {}; // Temp for raffle only var ticketsSold = 0; var ticketPrice = 0; var priceFlag = false; /************* API *************/ cb.onTip(function (tip) { var tUser = tip['from_user']; var tipAmount = parseInt(tip['amount']); if (tipAmount >= ticketPrice && priceFlag) { if (!cbjs.arrayContains(userList, tUser)) { user('add', tUser, false); } } }); cb.onMessage(function (msg) { var regexCommandSplit = '^' + commandPrefix + '(\\S+)(?:\\b\\s*)(.*)?'; var regexListSplit = /[,\s]+/; var reCmdSplit = new RegExp(regexCommandSplit); var cmdSplit = msg['m'].match(reCmdSplit); var cmd; var cmdval; var cmdValArray; if (cmdSplit) { cmd = cmdSplit[1]; cmdval = cmdSplit[2]; if (cmdval != null) { cmdval = cmdval.replace(/^\s+|\s+$/g, ''); } if (cmdval != null) { cmdValArray = cmdval.split(regexListSplit); } else { cmdValArray = ''; } } // for convenience var m = msg['m']; var u = msg['user']; var isMod = msg['is_mod']; // SS this message if (cbjs.arrayContains(ssList, u)) { msg['X-Spam'] = true; } switch (cmd) { /***** SS *****/ case COMMAND_SS: if (isMod || u == broadcaster) { ssList.push(cmdval); cb.sendNotice("* " + cmdval + " has been added to the SS list", broadcaster, '', COLOR_NOTICE, 'bold'); } msg['X-Spam'] = true; // Suppress command break; /***** SS DEL *****/ case COMMAND_SSDEL: if (isMod || u == broadcaster) { if (cbjs.arrayContains(ssList, cmdval)) { cbjs.arrayRemove(ssList, cmdval); cb.sendNotice("* " + cmdval + " has been removed from the SS list", broadcaster, '', COLOR_NOTICE, 'bold'); } else { cb.sendNotice("* " + cmdval + " was not on the SS list", broadcaster, '', COLOR_NOTICE, 'bold'); } } msg['X-Spam'] = true; // Suppress command break; /***** SS LIST *****/ case COMMAND_SSLIST: if (isMod || u == broadcaster) { cb.sendNotice("* SS List: " + cbjs.arrayJoin(ssList, ", "), broadcaster, '', COLOR_NOTICE, 'bold'); } msg['X-Spam'] = true; // Suppress command break; /***** Public Notice *****/ case COMMAND_CN: if (isMod || u == broadcaster) { if (cmdval) { cb.sendNotice('* ' + cmdval, '', '', COLOR_NOTICE, 'bold'); } else { cb.sendNotice('* Syntax: /cn <message>', u, '', COLOR_SYNTAX, 'bold'); } } else { cb.sendNotice(ONLY_MODERATORS, u, '', COLOR_NOTICE, 'bold'); } msg['X-Spam'] = true; // Suppress command break; /***** Message to Broadcaster *****/ case COMMAND_BC: if (isMod) { if (cmdval) { cb.sendNotice("* " + u.toUpperCase() + ": " + cmdval, broadcaster, COLOR_HILITE, COLOR_MODCAST, 'bold'); cb.sendNotice("* " + u.toUpperCase() + ": " + cmdval, u, COLOR_HILITE, COLOR_MODCAST, 'bold'); } else { cb.sendNotice("* Syntax: /bc <message>", u, '', COLOR_SYNTAX, 'bold'); } } else { cb.sendNotice(ONLY_MODERATORS, u, '', COLOR_NOTICE, 'bold'); } msg['X-Spam'] = true; // Suppress command break; /***** Message to Mods *****/ case COMMAND_TM: if (isMod || u === broadcaster) { if (cmdval) { cb.sendNotice("* " + u.toUpperCase() + ": " + cmdval, '', COLOR_HILITE, COLOR_MODCAST, 'bold', 'red'); } else { cb.sendNotice("* Syntax: /tm <message>", u, '', COLOR_SYNTAX, 'bold'); } } else { cb.sendNotice(ONLY_MODERATORS, u, '', COLOR_NOTICE, 'bold'); } msg['X-Spam'] = true; // Suppress command break; /***** Ticket Price *****/ case COMMAND_TPRICE: if (isMod || u == broadcaster) { if (cmdval) { if (parseInt(cmdval)) { ticketPrice = cmdval; cb.sendNotice("* Ticket price set at " + cmdval + " tokens.", u, '', COLOR_NOTICE, 'bold'); priceFlag = true; } else { cb.sendNotice("* '" + cmdval + "' not a valid argument.", u, '', COLOR_NOTICE, 'bold'); } } else { cb.sendNotice("* Syntax: " + commandPrefix + COMMAND_TPRICE + " <price>", u, '', COLOR_SYNTAX, 'bold'); } } else { cb.sendNotice(ONLY_MODERATORS, u, '', COLOR_NOTICE, 'bold'); } msg['X-Spam'] = true; break; /***** Help *****/ case COMMAND_CNHELP: if (isMod || u === broadcaster) { cb.sendNotice(getCommandList(), u, '', COLOR_HELP, 'bold'); } else { cb.sendNotice(ONLY_MODERATORS, u, '', COLOR_NOTICE, 'bold'); } msg['X-Spam'] = true; // Suppress command break; /***** Add user(s) *****/ case COMMAND_AU: case COMMAND_ADD: case COMMAND_ADDUSER: case COMMAND_ADDLIST: if (isMod || u == broadcaster) { if (cmdval) { if (cmdValArray.length > 1) { for (var i = 0; i < cmdValArray.length; i++) { if (!user('check', cmdValArray[i])) { user('add', cmdValArray[i], false); } } // end for } else { user('add', cmdval, false); } // end if cmdValArray.length } else { if (!user('check', msg['user'])) { user('add', msg['user'], false); } } // end if cmdval } msg['X-Spam'] = true; break; /***** Delete user *****/ case COMMAND_DEL: case COMMAND_DELUSER: case COMMAND_REMOVE: case COMMAND_REVOKE: if (isMod || u === broadcaster) { if (cmdval) { if (user('check', cmdval)) { user('del', cmdval); } } } msg['X-Spam'] = true; break; /***** Show ticket list *****/ case COMMAND_TLIST: cb.sendNotice("\nTicket holders: " + userList.length + "\n\n" + (userList.length < 1 == true ? "No tickets sold!" : cbjs.arrayJoin(userList, ", ")) + "\n", u, '', COLOR_NOTICE, 'bold'); msg['X-Spam'] = true; break; } // switch }); // onMessage() cb.onEnter(function (viewer) { if (viewer['is_mod']) { cb.sendNotice("\nBroadcaster '" + broadcaster.toUpperCase() + "' is running BlazeyNote (based on the awesome CrazyNote by acrazyguy and phatkatmeow, with added features for BlazeFyre).\n\nType " + COMMAND_CNHELP + " for a list of available commands.\n", viewer['user'], '', COLOR_NOTICE, 'bold'); } }); /********** Functions **********/ function getCommandList() { var cmdlist = "\n----- BouncyBot COMMANDS -----\n\n"; cmdlist += commandPrefix + COMMAND_CN + " <message> - Sends a one time public notice\n\n"; cmdlist += commandPrefix + COMMAND_BC + " <message> - Sends a private message to the broadcaster\n\n"; cmdlist += commandPrefix + COMMAND_TM + " <message> - Sends a private message to the moderators as a group\n\n"; cmdlist += commandPrefix + COMMAND_SS + " <username> - SS a user\n\n"; cmdlist += commandPrefix + COMMAND_SSDEL + " <username> - un-SS a user\n\n"; cmdlist += commandPrefix + COMMAND_SSLIST + " - tell the broadcaster the contents of the current SS list\n\n"; cmdlist += commandPrefix + COMMAND_TLIST + " - Sends a list of ticket holders to the chat\n\n"; cmdlist += commandPrefix + COMMAND_TPRICE + " <price> - Tells BouncyApp the ticket price that CrazyTicket will be using\n"; return cmdlist; } function user(command, user, sendpass) { if ((command == 'add') && (!cbjs.arrayContains(userList, user))) { userList.push(user); } // end if add if ((command == 'del') && (cbjs.arrayContains(userList, user))) { cbjs.arrayRemove(userList, user); } // end if del if (command == 'check') { if (cbjs.arrayContains(userList, user)) { return true; } else { return false; } } // end if check } // end function user function printObject(o) { var out = ""; for (var p in o) { out += "* " + p + ": " + o[p] + "\n"; } return out; } function init() { user('add', broadcaster, false); var startNote = dashLine + "\n* " + appName + " Version: " + SCRIPT_VERSION + SCRIPT_BUILD + " has started.\n"; startNote += "* Type " + COMMAND_CNHELP + " for a list of available commands.\n" + dashLine; cb.sendNotice(startNote, broadcaster, '', COLOR_INFO, 'bold'); cb.sendNotice("\n *Broadcaster '" + broadcaster + "' is running " + appName + ".\n\nType " + COMMAND_CNHELP + " for a list of available commands.\n", '', '', COLOR_NOTICE, 'bold', 'red'); } /*** Ok, let's kick this off ***/ init(); /** ..gspp.. .d$$S$$S$$Sb. dS$$S$$S$PS$$Sb :$$S$S^^'";TSS$$; ; SSP' : T$$SS/; $$ \ `^^'/ :$ `-ggd: :.=-. .-=.:SSS ; <@>` <@> $$$$ : SS$$ ' -. $$S; ' .--. s$$S _ `. `--' .$$S$; .-"" "-._.-'`.__.' $$$S; : :S$$S ; :l "-. '^S$$b /`-. ;: " .--""""""^-. :"-. "" : /) ; ;`- : /: : :`- `. \ / '-.t `+.__ `. ;/ .-' -.; ; "-. "-. : .-" --: ; ;. "^:" .-""-.`.; : -^"`. "-.+' \/ ; `. "- ; : .^. / \ .-" "-. .' `._.-" "-._.-": ; : ; : : : ; \ ; ; : ; ; : ; : : / ; : \ ; ; : : ; ; : : : ; ; ; ; c : : : : ; /""--..__ ; : : ""--..__ ; ; "-. --..__ ""--..__: :`-._ "-._ "" _; ; "-._ """---...---""" : **/
© Copyright Chaturbate 2011- 2026. All Rights Reserved.