Bots Home
|
Create an App
TinaXLevel
Author:
amy_nancy
Description
Source Code
Launch Bot
Current Users
Created by:
Amy_Nancy
///Lovense Lush Levels and Special Commands + Welcome & Follow Message /// //please fill in YOUR OWN SETTINGS!!! //visit the lovense website for info on how to set up your toy for camming! //https://www.lovense.com/cam-model ///or watch this youtube video //https://youtu.be/NNXIGWPxcTY // //emoji codes for: // //RANDOM LEVEL RESPONSE :lslvl1 //WAVE PADDERN :lslvl3 //PULSE PADDERN :lslvl2 //EARTHQUAKE PADDERN :lslvl4 //FIREWORKS PADDERN :lslvl5 //SPECIAL COMMAND :lslvl6 // //more special command samples //:lslvl3 WAVE Pattern 20 seconds :lushsm 133 Tokens //:lslvl2 PULSE Pattern 20 seconds :lushsm 134 Tokens //:lslvl4 EARTHQUAKE Pattern 20 seconds :lushsm 135 Tokens //:lslvl5 FIREWORKS Pattern 20 seconds :lushsm 136 Tokens // // //based on Lovense Settings Bot/Room Rules bot cb.settings_choices = [ { name: "banner_emote", label: "Add emote or text at top of list", type: "str", minLength: 1, maxLength: 255, defaultValue: ":lovense130", required: true, }, {name:'Level1', type:'str', minLength:1, maxLength:255, defaultValue:'Tip 1-14 LOW :lushsm 1 second', label:'Lush Level #1', required:true}, {name:'Level2', type:'str', minLength:1, maxLength:255, defaultValue:'Tip 15-49 MEDIUM :lushsm 3 seconds', label:'Lush Level #2', required:false}, {name:'Level3', type:'str', minLength:1, maxLength:255, defaultValue:'Tip 50-99 HIGH :lushsm 5 seconds', label:'Lush Level #3', required:false}, {name:'Level4', type:'str', minLength:1, maxLength:255, defaultValue:'Tip 100-499 HIGH :lushsm 20 seconds', label:'Lush Level #4', required:false}, {name:'Level5', type:'str', minLength:1, maxLength:255, defaultValue:'Tip 500-999 ULTRA HIGH :lushsm 45 seconds', label:'Lush Level #5', required:false}, {name:'Level6', type:'str', minLength:1, maxLength:255, defaultValue:'Tip 1000+ ULTRA HIGH :lushsm 100 seconds', label:'Lush Level #6', required:false}, {name:'Level7', type:'str', minLength:1, maxLength:255, label:'Lush Level #7', required:false}, {name:'Level8', type:'str', minLength:1, maxLength:255, label:'Lush Level #8', required:false}, {name:'Level9', type:'str', minLength:1, maxLength:255, label:'Lush Level #9', required:false}, {name:'SpecialCommand1', type:'str', minLength:1, maxLength:255, defaultValue:':lslvl1 RANDOM Level Response :lushsm 77 Tokens', label:'Lush Special Command', required:false}, {name:'SpecialCommand2', type:'str', minLength:1, maxLength:255, label:'Lush Special Command\n \n(more emotes in description)', required:false}, {name:'SpecialCommand3', type:'str', minLength:1, maxLength:255, label:'Lush Special Command', required:false}, {name:'SpecialCommand4', type:'str', minLength:1, maxLength:255, label:'Lush Special Command', required:false}, {name:'SpecialCommand5', type:'str', minLength:1, maxLength:255, label:'Lush Special Command', required:false}, {name:'SpecialCommand6', type:'str', minLength:1, maxLength:255, label:'Lush Special Command', required:false}, {name:'advertisement_wait_time', type:"int", minValue : 1, maxValue : 60, defaultValue : 5, label:'Lush Level Notification Time (in minutes 1-60)', }, { name: "random_bg", label: "Random background colors for messages", type: "choice", choice1: "on", choice2: "off", defaultValue: "off", required: true, }, { name: "random_emote", label: "Add random emotes at the end of messages", type: "choice", choice1: "on", choice2: "off", defaultValue: "off", required: true, } ]; "use strict"; var meanBroadcasters = ['missilex']; var emo=[":cutehug",":angel",":heheface3a",":dance3",":blush",":cool",":huh",":roll",":mellow",":ohmy",":smile",":thumbup",":wink",":woot",":bounce",":hello",":angel",":crazy",":thumbsup",":yes",":hearts",":happy1a",":innocent",":gangsta",":dancingbanana",":kissy",":help",":bow",":hello",":huh",":drool",":shi",":twerky1a",":hihi",":shello",":lolll"]; var color=["#ffb6c1","#ff82ab","#ee6aa7","#ff83fa","#d8bfd8","#eeaeee","#6495ed","#bcd2ee","#63b8ff","#87cefa","#8ee5ee","#00f5ff","#8deeee","#00eeee","#76eec6","#4eee94","#b4eeb4","#9aff9a","#7fff00","#adff2f","#bcee68","#9acd32","#cdcdb4","#eeee00","#ffd700","#ffc125","#eecfa1","#e3a869","#eecbad","#ff7256","#eeb4b4","#71c671","#c5c1aa","#ff9999","#fff68f","#f4862a"]; function isCmd(txt) { if (txt.charAt(0) === "/") return true; if (txt.charAt(0) === "!") return true; else return false;} cb.onMessage(function(message){ var txt = message.m; var i=Math.floor((Math.random()*35)+1); var j=Math.floor((Math.random()*35)+1); if (cb.settings.random_bg == "on" && !isCmd(txt)) message.background=color[i]; if (cb.settings.random_emote == "on" && !isCmd(txt)) message.m +=" ... "+emo[j]; return message; }); cb.onEnter(function(user) { if(meanBroadcasters.indexOf(cb.room_slug) < 0) { cb.sendNotice('Welcome to my room, ' + user['user'] + '! \nMy Lovense Lush is set to react to your tips. \nYour tips give me pleasure! So let\'s have fun! \nIf you\'re new, please don\'t forget to hit the :follow2a button.', user['user'], '#FFF0DE', '#9C2868', 'bold'); displayLevels(user); } }); function displayLevels(user) { var username = ''; var banner = cb.settings.banner_emote; if(user) username = user['user']; var notices = banner; notices += '\n===== My Lovense Lush Levels ====='; for(var i=1; i<=10;i++) { if(cb.settings['Level' + i]) notices += '\n:llvlc'+ i +' ' + cb.settings['Level'+i]; } if (cb.settings.SpecialCommand1 !== '') notices += '\n====== Special Commands ======='; for(var j=1; j<=10;j++) { if(cb.settings['SpecialCommand' + j]) notices += '\n' + cb.settings['SpecialCommand'+j]; } cb.sendNotice(notices, username, '#FFF0DE', '#9C2868', 'normal'); if(!user || user == null) cb.setTimeout(displayLevels, cb.settings.advertisement_wait_time * 60000); } function init() { if(meanBroadcasters.indexOf(cb.room_slug) < 0) displayLevels(); } init(); cb.settings_choices = function () { var output = []; var ins_index = 0; makeInstructions('[LOVENSE LEVELS] ----------- Set the below options to the same as in your Lovense control panel.'); makeLevel(1, 1, 14, 7, 'Low'); makeLevel(2, 15, 74, 7, 'Medium'); makeLevel(3, 75, 199, 15, 'High'); makeLevel(4, 200, 499, 20, 'Ultra High'); makeLevel(5, 500, 99999, 30, 'Ultra High'); makeLevel(6, 500, 99999, 30, 'Ultra High'); // makeInstructions('[LOVENSE SPECIAL COMMANDS] ----------- Set the below options to the same as in your Lovense control panel. To disable an option, set the price to 0.'); // output.push({name: 'pause_price', label: '[PAUSE THE QUEUE] --- Price', type: 'int', minValue: 0, defaultValue: 0}); // output.push({name: 'pause_time', label: 'Time', type: 'int', minValue: 1, defaultValue: 10}); makeInstructions('[TIP NOTICES] ----------- This messages will appear when a user triggers the Lovense with a tip. {pwr} will be replaced with the power, {sec} with the duration, and {user} with the user who tipped.'); output.push({name: 'response', label: 'Response text', type: 'str', defaultValue: 'Vibrating at {pwr} power for {sec} seconds! (from {user})', required: false}); output.push({name: 'tColor', label: 'Text foreground color', type: 'str', defaultValue: '#DC5500', required: false}); output.push({name: 'tBg', label: 'Text background color', type: 'str', defaultValue: '#FFFF33', required: false}); makeInstructions('[ROTATING NOTICES] ----------- These messages will appear periodically to remind viewers of the lovense settings.'); output.push({name: 'header', label: 'Header', type: 'str', defaultValue: '--- Tip the numbers below to trigger the toy! ---'}); output.push({name: 'freq', label: 'Frequency in seconds (0 = off)', type: 'int', defaultValue: 120}); output.push({name: 'rColor', label: 'Text foreground color', type: 'str', defaultValue: '#DC5500', required: false}); output.push({name: 'rBg', label: 'Text background color', type: 'str', defaultValue: '#FFFF33', required: false}); function makeLevel(num, lo, hi, sec, pow) { output.push({name: 'use' + (num - 1), label: '[LEVEL ' + num + '] --- Enabled', type: 'choice', choice1: 'Yes', choice2: 'No', defaultValue: 'Yes'}); output.push({name: 'min' + (num - 1), label: 'Minimum Tokens', type: 'int', defaultValue: lo, minValue: 1}); output.push({name: 'max' + (num - 1), label: 'Maximum Tokens', type: 'int', defaultValue: hi, minValue: 1}); output.push({name: 'sec' + (num - 1), label: 'Time', type: 'int', defaultValue: sec, minValue: 1}); output.push({name: 'pwr' + (num - 1), label: 'Power', type: 'choice', choice1: 'Low', choice2: 'Medium', choice3: 'High', choice4: 'Ultra High', defaultValue: pow}); output.push({name: 'txt' + (num - 1), label: 'Text', type: 'str', required: false}) } function makeInstructions(text) { output.push({name: 'instructions_' + ins_index, label: text, type: 'choice', choice1: '', required: false}); ins_index++; } return output; }(); var freq = $('freq'); var rBg = $('rBg'); var rColor = $('rColor'); var tBg = $('tBg'); var tColor = $('tColor'); var noticeResponse = $('response'); var specMenu = function () { var obj = {}; return obj; }(); var tipMenu = function () { var arr = []; for (var i = 0; i < 6; i++) { if ($('use' + i) === 'Yes') { var obj = { min: $('min' + i), max: $('max' + i), sec: $('sec' + i), pwr: $('pwr' + i, true), txt: $('txt' + i) }; arr.push(obj); } } return arr; }(); var rotatorText = function () { var output = $('header') || '--- Tip the numbers below to trigger the toy! ---'; for (var i = 0; i < tipMenu.length; i++) { var item = tipMenu[i]; output += '\n[' + item.min + ' to ' + item.max + ' tokens] = '; if (item.txt && item.txt.trim().length > 0) { output += item.txt; } else { output += item.sec + ' seconds (' + item.pwr + ' vibrations)'; } } return output; }(); /********** ------------ TIPS ------------ **********/ cb.onTip(function (tip) { react(tip); }); function react(tip) { cb.log('Reacting to ' + tip.amount + ' (' + tipMenu.length + ')'); for (var i = 0; i < tipMenu.length; i++) { var item = tipMenu[i]; if (tip.amount >= item.min && tip.amount <= item.max) { var notice = noticeResponse.replace(/\{pwr\}/g, item.pwr).replace(/\{sec\}/g, item.sec).replace(/\{user}/g, tip.from_user); say(notice, '', tColor, tBg); break; } } } /********** ------------ COMMUNICATION ------------ **********/ //send a message to the user function say(text, user, color, bg) { cb.sendNotice(newLines(text), user, bg, color, 'bold', ''); } /********** ------------ MISC ------------ **********/ function $ (str, uc) { var setting = cb.settings[str]; if (typeof setting === 'string') { if (uc) setting = setting.toUpperCase(); setting = setting.trim(); if (setting.length > 0) return setting; } else { if (setting) return setting; } } function newLines(input) { return '\u25A0 ' + input.replace(new RegExp('\n', 'g'), '\n\u25A0 '); } /********** ------------ EXECUTE ------------ **********/ if (freq && freq > 0) { (function rotate() { say(rotatorText, '', rColor, rBg); cb.setTimeout(rotate, freq * 1000); })(); }
© Copyright Chaturbate 2011- 2026. All Rights Reserved.