Bots Home
|
Create an App
etestserwer
Author:
boopityblah
Description
Source Code
Launch Bot
Current Users
Created by:
Boopityblah
/******************************************************* * Title: SarahMinageBot * * Author: 'spectregrimm'. * * * Version: 1.0 (24/10/2019) * Build: .001 *******************************************************/ /* Original scripting and ideas from badbadbubba (rotating notifier and tip menu) and acrazyguy (crazynote) */ /********** Constants **********/ const appName = "'SarahMinageBot'"; // Script name const appType = 'Bot'; // Script type: bot|app const SCRIPT_VERSION = '1.0'; // Internal: Script version number const SCRIPT_BUILD = '.001'; // Internal: Script build number const DEVELOPER_ONE = 'spectregrimm'; // main developer 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_TIPMENU = 'tipmenu' // Post tipmenu 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 dashLine = "------------------------------------------------------"; /************* API *************/ cb.onTip(function(tip) { var tUser = tip['from_user']; var tipAmount = parseInt(tip['amount']); }); 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']; switch (cmd) { /***** Tipmenu *****/ case COMMAND_TIPMENU: cb.sendNotice(tipmsg, u); 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; /***** 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; } // switch }); // onMessage() cb.onEnter(function(viewer) { if (viewer['is_mod']) { cb.sendNotice("\nBroadcaster '" + broadcaster.toUpperCase()+ "' is running SarahMinageBot.\n\nType /cnhelp for a list of available commands.\n",viewer['user'],'',COLOR_NOTICE,'bold'); } }); /********** Functions **********/ function getCommandList() { var cmdlist = "\n----- CRAZYNOTE 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"; return cmdlist; } function printObject(o) { var out=""; for (var p in o) { out += "* "+p+": "+o[p]+"\n"; } return out; } /* // moving to main init below function init() { user('add',broadcaster,false); var startNote = dashLine+"\n* "+appName+" Version: "+SCRIPT_VERSION+SCRIPT_BUILD+" has started.\n"; startNote += "* Type /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 /cnhelp for a list of available commands.\n",'','',COLOR_NOTICE,'bold','red'); } */ // Rotating notifier (15 max) and tip menu (30 items max) var index=0; var MAXITEMS1=15; var HEART = '\u2665'; // ♥ BDIAMOND = '\u2666'; // ♦ BSTAR = '\u2605'; // ★ var tip_amt = 0; var separator_char = "| "; var tipmsg; var msg; var MAXITEMS=30; var tipmenuprice = []; var tipmenuitem= []; var MAXSEP = 13; separators = [ {label:'Hearts',shortcut:':heart2'}, {label:'Glitter',shortcut:':pixelglitter'}, {label:'Flowers',shortcut:':tinyflower2'}, {label:'Bow',shortcut:':bluebow'}, {label:'Hearts2',shortcut:':pixelheart'}, {label:'Smiley',shortcut:':smile'}, {label:'Text Heart',shortcut:HEART}, {label:'Text Diamond',shortcut:BDIAMOND}, {label:'Text Star',shortcut:BSTAR}, {label:'Bulbasaur',shortcut:':bulbaSM'}, {label:'Pikachu',shortcut:':pikaSM'}, {label:'Squirtle',shortcut:':squirtSM'}, {label:'Mario',shortcut:':marioiSM'}, ] cb.settings_choices = [ {name:'settings', type: 'choice', required: false, label: '------The following section is for general bot settings------'}, {name: 'chat_ad', type:'int', minValue: 1, maxValue: 999, defaultValue: 2, label: 'Delay in minutes between notices being displayed (minimum 1)'}, {name:'msgcolor', type:'str', label:'Notice color (html code default purple #9F0F9F)', defaultValue: '#9F0F9F'}, {name:'secton1', type: 'choice', required: false, label: '------The following section is for the frequently asked questions and their responses------'}, {name:'secton2', type: 'choice', required: false, label: '------The following section is for the rotating notifications------'}, {name: 'msgonentry', type: 'choice', choice1: 'yes', choice2: 'no', defaultValue: 'yes', label: "Display Message 1 privately on entry - set to no for busy rooms"}, {name:'msg1', type:'str', required: true, label:'Message 1',}, {name:'msg2', type:'str', required: false, label:'Message 2',}, {name:'msg3', type:'str', required: false, label:'Message 3',}, {name:'msg4', type:'str', required: false, label:'Message 4',}, {name:'msg5', type:'str', required: false, label:'Message 5',}, {name:'msg6', type:'str', required: false, label:'Message 6',}, {name:'msg7', type:'str', required: false, label:'Message 7',}, {name:'msg8', type:'str', required: false, label:'Message 8',}, {name:'msg9', type:'str', required: false, label:'Message 9',}, {name:'msg10', type:'str', required: false, label:'Message 10',}, {name:'msg11', type:'str', required: false, label:'Message 11',}, {name:'msg12', type:'str', required: false, label:'Message 12',}, {name:'msg13', type:'str', required: false, label:'Message 13',}, {name:'msg14', type:'str', required: false, label:'Message 14',}, {name:'msg15', type:'str', required: false, label:'Message 15',}, {name:'secton3', type: 'choice', required: false, label: '------The following section is for the tipmenu (please note this counts as Message 0 in above rotation------'}, {name: 'sepchar', type: 'choice', choice1: 'Vertical Bar', choice2: 'Hearts', choice3:'Glitter',choice4:'Flowers',choice5:'Bow',choice6:'Hearts2',choice7:'Smiley',choice8:'Text Heart', choice9:'Text Diamond', choice10:'Text Star', choice11:'Bulbasaur', choice12:'Pikachu', choice13:'Squirtle', choice14:'Mario', defaultValue: 'Vertical Bar', label: "Separator character"}, {name:'item1', type:'str', label:'Item 1 (eg 10--flash tits)',}, {name:'item2', type:'str', required: false, label:'Item 2',}, {name:'item3', type:'str', required: false, label:'Item 3',}, {name:'item4', type:'str', required: false, label:'Item 4',}, {name:'item5', type:'str', required: false, label:'Item 5',}, {name:'item6', type:'str', required: false, label:'Item 6',}, {name:'item7', type:'str', required: false, label:'Item 7',}, {name:'item8', type:'str', required: false, label:'Item 8',}, {name:'item9', type:'str', required: false, label:'Item 9',}, {name:'item10', type:'str', required: false, label:'Item 10',}, {name:'item11', type:'str', required: false, label:'Item 11',}, {name:'item12', type:'str', required: false, label:'Item 12',}, {name:'item13', type:'str', required: false, label:'Item 13',}, {name:'item14', type:'str', required: false, label:'Item 14',}, {name:'item15', type:'str', required: false, label:'Item 15',}, {name:'item16', type:'str', required: false, label:'Item 16',}, {name:'item17', type:'str', required: false, label:'Item 17',}, {name:'item18', type:'str', required: false, label:'Item 18',}, {name:'item19', type:'str', required: false, label:'Item 19',}, {name:'item20', type:'str', required: false, label:'Item 20',}, {name:'item21', type:'str', required: false, label:'Item 21',}, {name:'item22', type:'str', required: false, label:'Item 22',}, {name:'item23', type:'str', required: false, label:'Item 23',}, {name:'item24', type:'str', required: false, label:'Item 24',}, {name:'item25', type:'str', required: false, label:'Item 25',}, {name:'item26', type:'str', required: false, label:'Item 26',}, {name:'item27', type:'str', required: false, label:'Item 27',}, {name:'item28', type:'str', required: false, label:'Item 28',}, {name:'item29', type:'str', required: false, label:'Item 29',}, {name:'item30', type:'str', required: false, label:'Item 30',} ]; cb.onEnter(function(user) { if (cb.settings['msgonentry'] == 'yes') { cb.sendNotice('Welcome ' + user['user'] + '! ' + cb.settings['msg1'],user['user'],'',cb.settings['msgcolor'],'bold'); } }); cb.onTip(function (tip) { tip_amt=parseInt(tip['amount']); for (var i = 1; i <= MAXITEMS; i++) { if (tip_amt == tipmenuprice[i]) { cb.sendNotice(tip['from_user'] + ' tipped for ' + tipmenuitem[i],'','',cb.settings['noticecolor'],'bold'); } } }); function chatAd() { while (cb.settings['msg' + (index + 1)] == 0) { //skip empty messages index++; index %= MAXITEMS1; } if (index==0 && msg!=tipmsg) { msg=tipmsg; } else { msg = cb.settings['msg' + (index + 1)]; index++; index %= MAXITEMS1; } if(msg==''){ index = -1; } cb.sendNotice(msg,'','',cb.settings['msgcolor'],'bold'); cb.setTimeout(chatAd, (cb.settings.chat_ad * 60000)); } cb.setTimeout(chatAd, (cb.settings.chat_ad * 60000)); function init() { //user('add',broadcaster,false); var startNote = dashLine+"\n* "+appName+" Version: "+SCRIPT_VERSION+SCRIPT_BUILD+" has started.\n"; startNote += "* Type /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 /cnhelp for a list of available commands.\n",'','',COLOR_NOTICE,'bold','red'); for (i=0;i<=MAXSEP-1;i++) { if (cb.settings['sepchar'] == separators[i].label) { separator_char = separators[i].shortcut + ' '; } } tipmsg = 'Tip Menu: '; for (i=1;i<=MAXITEMS;i++) { var tmp; tmp=cb.settings['item' + i]; if (tmp) { var arr= tmp.split('--'); if (arr[1]===undefined) { cb.sendNotice('Error-You need two dashes to separate the tip amount and menu item for item no '+ i,'','',cb.settings['noticecolor'],'bold'); } else { var amt=parseInt(arr[0]); if (amt>0) { tipmenuprice[i]=amt; tipmenuitem[i]=arr[1]; if (i>=2) { tipmsg += separator_char; } tipmsg += arr[1] + '(' + amt + ') '; } } } } if (tipmsg!= 'Tip Menu: ') { cb.sendNotice(tipmsg,'','',cb.settings['msgcolor'],'bold'); } else { cb.sendNotice('Error-No menu items found','','',cb.settings['msgcolor'],'bold'); } } init();
© Copyright Chaturbate 2011- 2026. All Rights Reserved.