Bots Home
|
Create an App
Nerd Bot
Author:
latexnerd
Description
Source Code
Launch Bot
Current Users
Created by:
Latexnerd
/** * @author latexnerd */ // ######################### // CB SETTINGS // ######################### cb.settings_choices = [ { name: 'default_notice', label: 'Notice when the bots starts', type: 'str', minLength: 1, maxLength: 1000, defaultValue: 'The awesome bot has just came to work!', required: true }, { name: 'textColorBG', type: 'str', label: 'Background Color (html code default White #FFFFFF)', defaultValue: '#FFFFFF' }, { name: 'userTextColorBG', type: 'str', label: 'Background Color for general user (html code default #A0A0A0)', defaultValue: '#e0e0e0' }, { name: 'richUserTextColorBG', type: 'str', label: 'Background Color for general user with tokens (html code default #8CC1E7)', defaultValue: '#8CC1E7' }, { name: 'fanClubTextColorBG', type: 'str', label: 'Background Color for general fan club user (html code default #C7FFC0)', defaultValue: '#C7FFC0' }, { name: 'modTextColorBG', type: 'str', label: 'Background Color for mods (html code default #F6CECE)', defaultValue: '#F6CECE' }, { name: 'hostTextColorBG', type: 'str', label: 'Background Color for broadcaster (html code default #176FFF)', defaultValue: '#176FFF' }, { name: 'hostEmoji', type: 'str', label: 'Emoji for broadcaster (default :chiefdance)', defaultValue: ':chiefdance' } ]; // ######################### // VARIABLES // ######################### roomHost = cb.room_slug; totalTipCount = 0; // ######################### // CUSTOM COMMANDS // ######################### // todo: add list of commands // ######################### // CB EVENTS // ######################### cb.onTip(function (tip) { totalTipCount += parseInt(tip['amount']); var bgColor = cb.settings['userTextColorBG']; if (!tip['is_anon_tip']) { if (tip['from_user_has_tokens']) { bgColor = cb.settings['richUserTextColorBG']; } if (tip['from_user_in_fanclub']) { bgColor = cb.settings['fanClubTextColorBG']; } if (tip['from_user_is_mod']) { bgColor = cb.settings['modTextColorBG']; } var genderEmoji = getGenderEmoji(tip['from_user_gender']); cb.sendNotice(tip['from_user'] + " " + genderEmoji + " tipped " + tip['amount'], '', bgColor, '#ffffff', 'bold'); cb.sendNotice('Thank you for ' + tip['amount'] + ' tokens!!', tip['from_user'], '#4a0000', '#ffffff', 'bold') } }); cb.onMessage(function (message) { cb.log(message); cb.log(roomHost); [isCmd, success] = checkForCommand(message) if (isCmd) { cb.log('cmd detected'); if (!success) { cb.log('cmd not exist') message['X-Spam'] = true; } } let color = '#353535' let bgColor = cb.settings['userTextColorBG']; let emoji = getGenderEmoji(message['gender']); if (message['has_tokens']) { bgColor = cb.settings['richUserTextColorBG']; } if (message['in_fanclub']) { bgColor = cb.settings['fanClubTextColorBG']; } if (message['is_mod']) { bgColor = cb.settings['modTextColorBG']; } if (message['user'] === roomHost) { bgColor = cb.settings['hostTextColorBG']; color = '#FFF' emoji = cb.settings['hostEmoji']; } message['background'] = bgColor; message['c'] = color; message['m'] = emoji + ' ' + message['m']; return message; }); cb.onEnter(function(user) { const color = getBackgroundByUser(user); cb.chatNotice(user['user'] + ' entered the room!', roomHost, '#FFF', color, 'bold'); }); cb.onLeave(function(user) { const color = getBackgroundByUser(user); cb.chatNotice(user['user'] + ' left the room!', roomHost, '#FFF', color, 'bold'); }); // ######################### // CUSTOM FUNCTIONS // ######################### function getGenderEmoji(gender) { let emoji = ':genderG'; switch (gender) { case 'm': cb.log('male user'); emoji = ':genderM'; break; case 'f': cb.log('female user'); emoji = ':genderF'; break; case 's': cb.log('trans user'); emoji = ':genderS'; break; case 'c': cb.log('a couple'); emoji = ':genderC'; break; default: cb.log('unknown') break; } return emoji; } function checkForCommand(msg) { // for convenience var m = msg.m; var u = msg.user; var isMod = msg.is_mod; var isRoomHost = (u == roomHost); var viewer, msgToViewer; if (m[0] !== "/") { return [false, false] } var regexCommandSplit = "^" + "/" + "(\\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 = ""; } } var ONLY_MODS = "* Not enough privileges to use \"" + cmd + "\".\n* This command is restricted to moderators."; cb.log(cmd); var success = false; return [true, success] } function getBackgroundByUser(user) { var bgColor = cb.settings['userTextColorBG']; if (user['has_tokens']) { bgColor = cb.settings['richUserTextColorBG']; } if (user['in_fanclub']) { bgColor = cb.settings['fanClubTextColorBG']; } if (user['is_mod']) { bgColor = cb.settings['modTextColorBG']; } return bgColor; } // ######################### // INIT // ######################### function init() { cb.log('init'); cb.sendNotice(cb.settings['default_notice'], '', cb.settings['textColorBG']); } init();
© Copyright Chaturbate 2011- 2026. All Rights Reserved.