Bots Home
|
Create an App
Kira's FUNmuter
Author:
d_styles
Description
Source Code
Launch Bot
Current Users
Created by:
D_Styles
// Title: "KiraDivine's FUNmuter" // Author: d_styles // August 28th 2018 // FUNmuter is in the first place meant to be funny // Users can mute each other for fun for a specified time // Filters grey comments. // Added a lovense tipmenu as the actual lovense tipmenu often gives much lag and is slow. // This bot doesn't activate the toy, it only replaces the slow lovense tipmenu. // Time for the actual lovense tipmenu has to be set high in the extension to not show it. // Variables and arrays var mutedArray = []; var usersinroomArray = []; var freeloadersArray = []; var releasedArray = []; var nochatArray = []; var InRoom =0; var MutedMembers = 0; var Muter = ""; var UnMuter = ""; var NameFirstInRow = ""; var idMuter; var MuteStarted = true; var LovenseStarted = false; var EndtimeFirstInRow; //Endtime of the first person in the array var MuteTimeMS; //Mute time in ms var numbFreeloaders = 0; var lovenseMsg; var helpBC; mutereasons = [ {regexp: /(?=.*\b(f?ck|view|watch|sex|finger|my|suck|show|visit|check|click|smell|zoom|flash|blow|down|lower|open|where|fuck|see|touch|spread|lick)\b)(?=.*\b(bio|me|my|town|room|profile|site|cam|titties|body|from|live|panties|you|ass|butt?|booty|clit|pussy|boobies|boobs?|bobs?|tits?|vagina|legs|nipples?|breasts?|asshole|dick|cock|penis|vagina|face)\b)/i, notice: 'demands', index: 0}, {regexp: /:\b/, notice: 'graphics', index: 1}, {regexp: /(.)\1{2}/, notice: 'sticky keys', index: 2}, {regexp: /((?=.*pm)|(?=.*c2c)|(?=.*c.?2.?c)|(?=.*guys)|(?=.*boys)|(?=.*private)|(?=.*pvt)|(?=.*prvt?)|(?=.*privet?)|(?=.*watch.?m.?)|(?=.*view.?m.?)|(?=.*see.?m.?)|(?=.*visit.?m.?)|(?=.*check.?m.?)|(?=.*look.?m.?)|(?=.*message))/i, notice: 'Requests', index: 3}, {regexp: /((?=.*1.?f cam)|(?=.*leaked)|(?=.*lanus)|(?=.*google)|(?=.*text)|(?=.*textt)|(?=.*texxt)|(?=.*sexlife)|(?=.*citylove)|(?=.*city)|(?=.*sky)|(?=.*www)|(?=.*streamingnaked)|(?=.*1.?female)|(?=.*pornhub)|(?=.*pornmeds)|(?=.*snapmilfs)|(?=.*viagra)|(?=.*cialis)|(?=.*online)|(?=.*erotimo)|(?=.*freecam)|(?=.*freecambook)|(?=.*amecam)|(?=.*1.? f)|(?=.*bestwork)|(?=.*p.*r.*e.*m.*i.*u.*m.*c.*h.*e.*a.*t)|(?=.*patched)|(?=.*ellagocam)|(?=.*visit this)|(?=.*dot)|(?=.*com)|(?=.*fucktubate)|(?=.*tokens)|(?=.*swipegirls)|(?=.*generator))/i, notice: 'spam', index: 4}, {regexp: /\b[A-Z]{2,}\b/, notice: 'all caps', index: 5}, {regexp: /((?=.*bb)|(?=.*baby)|(?=.*babby)|(?=.*daddy)|(?=.*babe))/i, notice: 'bb or baby', index: 6}, {regexp: /((?=.*f.?e.?e.?t)|(?=.*f33t?)|(?=.*foot)|(?=.*dick)|(?=.*cock)|(?=.*soles?)|(?=.*toes?))/i, notice: 'feet', index: 7}, {regexp: /[^\x00-\x7F]+/, notice: 'non-english', index: 8}, {regexp: /((?=.*bitch)|(?=.*slut)|(?=.*dumbass)|(?=.*mommy)|(?=.*mama)|(?=.*mom)|(?=.*mother)|(?=.*escort)|(?=.*milf)|(?=.*piss)|(?=.*whore)|(?=.*putt?a)|(?=.*ugly)|(?=.*fat)|(?=.*pee)|(?=.*poo)|(?=.*peeing)|(?=.*fart)|(?=.*cunt)|(?=.*filthy)|(?=.*fuckable)|(?=.*fuck))/i, notice: 'rudeness', index: 9}, {regexp: /((?=.*please?)|(?=.*plzz?)|(?=.*pregnant?)|(?=.*behind?)|(?=.*pls)|(?=.*pleaze?)|(?=.*pleez)|(?=.*plee?se)|(?=.*instagram)|(?=.*twitter)|(?=.*sky?pe?)|(?=.*milk)|(?=.*tips?))/i, notice: 'demands', index: 10}, {regexp: /((?=.*mast.?rbate)|(?=.*squirt)|(?=.*fist)|(?=.*kiss)|(?=.*strip)|(?=.*cum)|(?=.*twerk)|(?=.*ass)|(?=.*boobs?)|(?=.*pussy)|(?=.*doggy)|(?=.*doggie)|(?=.*anal)|(?=.*zoom)|(?=.*show)|(?=.*tits)|(?=.*titties)|(?=.*stand up)|(?=.*face)|(?=.*watch my cam)|(?=.*blowjob)|(?=.*watch me)|(?=.*deepthroat))/i, notice: 'demands', index: 11}, ] cb.settings_choices = [ {name: 'mute_amount', label: 'Enter the tokens needed to mute someone.', type: 'int', minValue: 1, maxValue: 100, defaultValue: 11}, {name: 'unmute_amount', label: 'Enter the tokens needed to unmute.(can not be the same as mute amount)', type: 'int', minValue: 1, maxValue: 100, defaultValue: 9}, {name: 'mute_time', label: 'Enter the time someone will be muted in minutes.', type: 'int', minValue: 1, maxValue: 5, defaultValue: 2}, {name: 'self_unmute', label: 'Can someone unmute himself?', type: 'choice', choice1: 'Yes', choice2: 'No', defaultValue: 'Yes'}, {name: 'others_unmute', label: 'Can someone unmute someone else?', type: 'choice', choice1: 'Yes', choice2: 'No', defaultValue: 'Yes'}, {name: 'always_silent', label: 'These users won\'t be able to chat? (enter the names separated with a comma and no spaces)', type: 'str', minLength: 1, maxLength: 2000, defaultValue: '', required: false}, {name: 'lov_level_tip1', label: 'Lovense level 1 tip amount.', type: 'str', minLength: 1, maxLength: 100, defaultValue: '1 to 15 tokens'}, {name: 'lov_level_time1', label: 'Lovense level 1 time.', type: 'str', minLength: 1, maxLength: 100, defaultValue: '5 SECONDS'}, {name: 'lov_level_power1', label: 'Lovense level 1 power.', type: 'choice', choice1: 'LOW', choice2: 'MEDIUM', choice3: 'HIGH', choice4: 'ULTRA HIGH', defaultValue: 'LOW'}, {name: 'lov_level_tip2', label: 'Lovense level 2 tip amount.', type: 'str', minLength: 1, maxLength: 100, defaultValue: '16 to 69 tokens'}, {name: 'lov_level_time2', label: 'Lovense level 2 time.', type: 'str', minLength: 1, maxLength: 100, defaultValue: '15 SECONDS'}, {name: 'lov_level_power2', label: 'Lovense level 2 power.', type: 'choice', choice1: 'LOW', choice2: 'MEDIUM', choice3: 'HIGH', choice4: 'ULTRA HIGH', defaultValue: 'MEDIUM'}, {name: 'lov_level_tip3', label: 'Lovense level 3 tip amount.', type: 'str', minLength: 1, maxLength: 100, defaultValue: '70 to 99 tokens'}, {name: 'lov_level_time3', label: 'Lovense level 3 time.', type: 'str', minLength: 1, maxLength: 100, defaultValue: '25 SECONDS'}, {name: 'lov_level_power3', label: 'Lovense level 3 power.', type: 'choice', choice1: 'LOW', choice2: 'MEDIUM', choice3: 'HIGH', choice4: 'ULTRA HIGH', defaultValue: 'MEDIUM'}, {name: 'lov_level_tip4', label: 'Lovense level 4 tip amount.', type: 'str', minLength: 1, maxLength: 100, defaultValue: '100 to 299 tokens'}, {name: 'lov_level_time4', label: 'Lovense level 4 time.', type: 'str', minLength: 1, maxLength: 100, defaultValue: '35 SECONDS'}, {name: 'lov_level_power4', label: 'Lovense level 4 power.', type: 'choice', choice1: 'LOW', choice2: 'MEDIUM', choice3: 'HIGH', choice4: 'ULTRA HIGH', defaultValue: 'HIGH'}, {name: 'lov_level_tip5', label: 'Lovense level 5 tip amount.', type: 'str', minLength: 1, maxLength: 100, defaultValue: '300 to 499 tokens'}, {name: 'lov_level_time5', label: 'Lovense level 5 time.', type: 'str', minLength: 1, maxLength: 100, defaultValue: '55 SECONDS'}, {name: 'lov_level_power5', label: 'Lovense level 5 power.', type: 'choice', choice1: 'LOW', choice2: 'MEDIUM', choice3: 'HIGH', choice4: 'ULTRA HIGH', defaultValue: 'HIGH'}, {name: 'lov_level_tip6', label: 'Lovense level 6 tip amount.', type: 'str', minLength: 1, maxLength: 100, defaultValue: '500 to 999 tokens'}, {name: 'lov_level_time6', label: 'Lovense level 6 time.', type: 'str', minLength: 1, maxLength: 100, defaultValue: '115 SECONDS'}, {name: 'lov_level_power6', label: 'Lovense level 6 power.', type: 'choice', choice1: 'LOW', choice2: 'MEDIUM', choice3: 'HIGH', choice4: 'ULTRA HIGH', defaultValue: 'ULTRA HIGH'}, {name: 'lov_level_tip7', label: 'Lovense level 7 tip amount.', type: 'str', minLength: 1, maxLength: 100, defaultValue: '1000 to 10000 tokens'}, {name: 'lov_level_time7', label: 'Lovense level 7 time.', type: 'str', minLength: 1, maxLength: 100, defaultValue: '225 SECONDS'}, {name: 'lov_level_power7', label: 'Lovense level 7 power.', type: 'choice', choice1: 'LOW', choice2: 'MEDIUM', choice3: 'HIGH', choice4: 'ULTRA HIGH', defaultValue: 'ULTRA HIGH'}, {name: 'lov_special_tip1', label: 'Lovense SPECIAL COMMAND 1 tip amount.', type: 'str', minLength: 1, maxLength: 100, defaultValue: '69 tokens'}, {name: 'lov_special_power1', label: 'Lovense SPECIAL COMMAND 1 powerlevel.', type: 'str', minLength: 1, maxLength: 100, defaultValue: 'Will randomly choose a level'}, {name: 'lov_special_tip2', label: 'Lovense SPECIAL COMMAND 2 tip amount.', type: 'str', minLength: 1, maxLength: 100, defaultValue: '88 tokens'}, {name: 'lov_special_power2', label: 'Lovense SPECIAL COMMAND 2 powerlevel.', type: 'str', minLength: 1, maxLength: 100, defaultValue: 'Send 88 second wave pattern'}, {name: 'lov_special_tip3', label: 'Lovense SPECIAL COMMAND 3 tip amount.', type: 'str', minLength: 1, maxLength: 100, defaultValue: '13 tokens'}, {name: 'lov_special_power3', label: 'Lovense SPECIAL COMMAND 3 powerlevel.', type: 'str', minLength: 1, maxLength: 100, defaultValue: 'Send 13 second pulse pattern'}, {name: 'lov_special_tip4', label: 'Lovense SPECIAL COMMAND 4 tip amount.', type: 'str', minLength: 1, maxLength: 100, defaultValue: '66 tokens'}, {name: 'lov_special_power4', label: 'Lovense SPECIAL COMMAND 4 powerlevel.', type: 'str', minLength: 1, maxLength: 100, defaultValue: 'Send 66 second earthquake pattern'}, {name: 'lov_special_tip5', label: 'Lovense SPECIAL COMMAND 5 tip amount.', type: 'str', minLength: 1, maxLength: 100, defaultValue: '777 tokens'}, {name: 'lov_special_power5', label: 'Lovense SPECIAL COMMAND 5 powerlevel.', type: 'str', minLength: 1, maxLength: 100, defaultValue: 'Send 177 second fireworks pattern'}, ]; cb.onEnter(function(user) { if (!is_broadcaster(user['user'])) { var idx = usersinroomArray.indexOf(user['user']); if (!(idx >= 0)) { usersinroomArray.splice(InRoom, 0, user['user']); InRoom++; } } if (user['has_tokens'] && !(user['user'] == cb.room_slug)) { var idx = releasedArray.indexOf(user['user']); if (idx < 0) { checkInFreeL(user['user']); } } }); cb.onLeave(function(user) { if (!is_broadcaster(user['user'])) { var idx = usersinroomArray.indexOf(user['user']); if (!(idx < 0)) { usersinroomArray.splice(idx, 1); InRoom--; } } if (user['has_tokens'] && !(user['user'] == cb.room_slug)) { var idx = releasedArray.indexOf(user['user']); if (idx < 0) { checkOutFreeL(user['user']); } } }); cb.onMessage(function(msg) { if (nochatArray.indexOf(msg['user']) >= 0) { msg['X-Spam'] = true; return; } else if (!is_broadcaster(msg['user'])) { //Is the user muted? for(var i = 0; i < mutedArray.length; i++) { if(mutedArray[i][0] == msg['user']) { var emo = Math.floor((Math.random() * 10) + 1); msg['m'] = ':xsf' + emo.toString(); return msg; } } } if ((!msg['has_tokens']) && (!msg['is_mod']) && (!msg['in_fanclub']) && (!is_broadcaster(msg['user']))) { checkmsg(msg); } else if (is_broadcaster(msg['user'])) { if (msg['m'].indexOf('/mute') == 0) { var str_subtract = msg['m'].substring(5).trim(); Muter = msg['user']; muteUser(str_subtract); msg['X-Spam'] = true; } else if (msg['m'].indexOf('/unmute') == 0) { var str_subtract = msg['m'].substring(7).trim(); UnMuter = msg['user']; unmuteUserTipped(str_subtract); msg['X-Spam'] = true; } else if (msg['m'].indexOf('/self') == 0) { if (cb.settings.self_unmute == 'No') { cb.settings.self_unmute = 'Yes'; } else { cb.settings.self_unmute = 'No'; } cb.sendNotice('Unmute yourself is turned ' + (cb.settings.self_unmute == 'Yes' ? 'on by Kira.' : 'off by Kira.' ),'','#eaeaea','','bold'); msg['X-Spam'] = true; } else if (msg['m'].indexOf('/others') == 0) { if (cb.settings.others_unmute == 'No') { cb.settings.others_unmute = 'Yes'; } else { cb.settings.others_unmute = 'No'; } cb.sendNotice('Unmute others is turned ' + (cb.settings.others_unmute == 'Yes' ? 'on by Kira.' : 'off by Kira.' ),'','#eaeaea','','bold'); msg['X-Spam'] = true; } else if (msg['m'].indexOf('/startmute') == 0) { if (MuteStarted == false) { MuteStarted = true; cb.sendNotice('Kira\'s FUNmute bot has started','','#eaeaea','','bold'); displayHelp(); } msg['X-Spam'] = true; } else if (msg['m'].indexOf('/stopmute') == 0) { if (MuteStarted == true) { MuteStarted = false; cb.sendNotice('FUNmute bot has been stopped by Kira.','','#eaeaea','','bold'); cb.sendNotice('Anyone still muted will be unmuted after the set time.','','#eaeaea','','bold'); } msg['X-Spam'] = true; } else if (msg['m'].indexOf('/startlovense') == 0) { if (LovenseStarted == false) { LovenseStarted = true; lovenseHelp(); } msg['X-Spam'] = true; } else if (msg['m'].indexOf('/stoplovense') == 0) { if (LovenseStarted == true) { LovenseStarted = false; cb.sendNotice('Lovense tipmenu disabled.',cb.room_slug,'#FFA749','','bold'); } msg['X-Spam'] = true; } else if (msg['m'].indexOf('/helpmute') == 0) { bcHelp(); msg['X-Spam'] = true; } else if (msg['m'].indexOf('/listmute') == 0) { showMuted(); msg['X-Spam'] = true; } else if (msg['m'].indexOf('/freeload') == 0) { showFreeL(); msg['X-Spam'] = true; } } }); cb.onTip(function (tip) { if (MuteStarted == true) { var mssg = tip['message'].toLowerCase(); switch (tip['amount']) { case cb.settings.mute_amount: if (mssg.indexOf('mute') == 0) { var str_subtract = mssg.substring(4).trim(); Muter = tip['from_user']; muteUser(str_subtract); } else if (mssg.indexOf('unmute') == 0) { cb.sendNotice('Wrong tip amount to unmute. Unmute is ' + cb.settings.unmute_amount + ' tokens.',tip['from_user'],'#eaeaea','','bold'); } break; case cb.settings.unmute_amount: if (mssg.indexOf('unmute') == 0) { var str_subtract = mssg.substring(6).trim(); UnMuter = tip['from_user']; unmuteUserTipped(str_subtract); } else if (mssg.indexOf('mute') == 0) { cb.sendNotice('Wrong tip amount to mute. Mute is ' + cb.settings.mute_amount + ' tokens.',tip['from_user'],'#eaeaea','','bold'); } } } var idx = releasedArray.indexOf(tip['from_user']); if (idx < 0) { release(tip['from_user']); } }); function checkmsg(msg) { var i, tmpmsg; tmpmsg = msg['m']; for (i=0; i<= 11; i++) { if (tmpmsg.search(mutereasons[i].regexp) != -1){ msg['X-Spam'] = true; break; } } } // ********************************************************************** // *********************** Start FUNmute part *************************** // ********************************************************************** function muteUser(user) { //Check if broadcaster will be muted. var spanks = false; if (user == cb.room_slug) { if (Muter == cb.room_slug) {return;} cb.sendNotice(cb.room_slug + ' can\'t be muted, as a punish you will be muted yourself ' + Muter + '. :Spank','','#eaeaea','','bold'); spanks = true; user = Muter; } else { //Is user in the room? var tstinroom = usersinroomArray.indexOf(user); if (tstinroom < 0) { cb.sendNotice('User ' + user + ' is not in the room and can not be muted.',Muter,'#eaeaea','','bold'); return; } } // If in the room, is he already muted? for(var i = 0; i < mutedArray.length; i++) { if(mutedArray[i][0] == user) { if (spanks == false) { cb.sendNotice('User ' + user + ' is already muted.',Muter,'#eaeaea','','bold'); } return; } } // Add the user to the muted array var d = new Date(); var m = d.getMinutes(); var s = d.getSeconds(); var StartTime = (m * 60000) + (s * 1000); mutedArray[MutedMembers] = []; mutedArray[MutedMembers][0] = user; mutedArray[MutedMembers][1] = StartTime; MutedMembers++; if (spanks == true) { cb.sendNotice(user + ' is muted for ' + cb.settings.mute_time + ' minutes by himself.','','#eaeaea','','bold'); } else { cb.sendNotice(user + ' is muted for ' + cb.settings.mute_time + ' minutes by ' + Muter + '.','','#eaeaea','','bold'); } if (MutedMembers == 1) { EndtimeFirstInRow = StartTime + MuteTimeMS; //In case the first in row is released earlier NameFirstInRow = user; idMuter = cb.setTimeout(unmuteUserTimed, MuteTimeMS); } } function unmuteUserTimed() { // Is the user muted? if(mutedArray[0][0] == NameFirstInRow) { calcNext(0); mutedArray.splice(0,1); MutedMembers--; cb.sendNotice('Mute time for ' + NameFirstInRow + ' has elapsed, user is unmuted.','','#eaeaea','','bold'); if (mutedArray.length < 1) { NameFirstInRow = ""; } else { NameFirstInRow = mutedArray[0][0]; EndtimeFirstInRow = mutedArray[0][1] + MuteTimeMS; } } } function unmuteUserTipped(user) { // Is the user unmuting himself? if (user == "me") { user = UnMuter; } //Test if allowed to unmute if (!testUnmuteAllowed(UnMuter, user )) { UnMuter = ""; return; } // Is the user muted? for(var i = 0; i < mutedArray.length; i++) { if(mutedArray[i][0] == user) { if (i == 0) { cb.cancelTimeout(idMuter); var d = new Date(); var m = d.getMinutes(); var s = d.getSeconds(); var AddTime = EndtimeFirstInRow - ((m * 60000) + (s * 1000)); if (AddTime >= 3600000) { AddTime = AddTime - 3600000; } calcNext(AddTime); mutedArray.splice(0,1); if (mutedArray.length < 1) { NameFirstInRow = ""; } else { NameFirstInRow = mutedArray[0][0]; EndtimeFirstInRow = mutedArray[0][1] + MuteTimeMS; } } else { mutedArray.splice(i,1); } if (user == UnMuter) { cb.sendNotice('User ' + user + ' unmuted himself.','','#eaeaea','','bold'); } else { cb.sendNotice('User ' + user + ' is unmuted by ' + UnMuter + '.','','#eaeaea','','bold'); } UnMuter = ""; MutedMembers--; return; } } cb.sendNotice('User ' + user + ' is not muted, unable to unmute.',UnMuter,'#eaeaea','','bold'); } function testUnmuteAllowed(fromuser, touser){ if (fromuser == touser && cb.settings.self_unmute == 'No') { cb.sendNotice('Unmuting yourself is disabled ' + fromuser + '.','','#eaeaea','','bold'); return 0; } else if (fromuser != touser && cb.settings.others_unmute == 'No') { cb.sendNotice('Unmuting others is disabled ' + fromuser + '.','','#eaeaea','','bold'); return 0; } return 1; } function calcNext(add) { if (mutedArray.length > 1) { var calcTime = mutedArray[1][1] - mutedArray[0][1] + add; if (calcTime < 0) { calcTime = (mutedArray[1][1] + 3600000) - mutedArray[0][1] + add; } idMuter = cb.setTimeout(unmuteUserTimed, calcTime); } } function showMuted(){ if (mutedArray.length > 0) { var d = new Date(); var m = d.getMinutes(); var s = d.getSeconds(); var CurTime; var minutesLeft; var secondsLeft; for(var i = 0; i < mutedArray.length; i++) { CurTime = (m * 60000) + (s * 1000); if (i == 0) { cb.sendNotice('\nMuted time left.','','#eaeaea','','bold'); } if (CurTime < mutedArray[i][1]) { CurTime = CurTime + 3600000; } minutesLeft = parseInt((mutedArray[i][1] + MuteTimeMS - CurTime)/60000); secondsLeft = ((mutedArray[i][1] + MuteTimeMS - CurTime) % 60000) / 1000; cb.sendNotice(mutedArray[i][0] + ' has ' + minutesLeft + ' min. and ' + secondsLeft + ' sec. mutetime left.','','#eaeaea','','bold'); } } else { cb.sendNotice('No one is muted.',cb.room_slug,'#eaeaea','','bold'); } } // ********************************************************************** // ************************* End FUNmute part *************************** // ********************************************************************** // ********************************************************************** // *********************** Start freeload part ************************** // ********************************************************************** function checkInFreeL(user) { var StartTime = countMinutes(); for (var i = 0; i < freeloadersArray.length; i++) { if (freeloadersArray[i][0] == user) { freeloadersArray[i][2] = StartTime; return; } } freeloadersArray[numbFreeloaders] = []; freeloadersArray[numbFreeloaders][0] = user; freeloadersArray[numbFreeloaders][1] = 0; freeloadersArray[numbFreeloaders][2] = StartTime; numbFreeloaders++; } function checkOutFreeL(user) { var TimeInRoom = 0; for (var i = 0; i < freeloadersArray.length; i++) { if (freeloadersArray[i][0] == user) { var EndTime = countMinutes(); TimeInRoom = EndTime - freeloadersArray[i][2]; freeloadersArray[i][1] = freeloadersArray[i][1] + TimeInRoom; freeloadersArray[i][2] = 0; } } } function release(user){ releasedArray.splice(releasedArray.length, 0, user); for (var i = 0; i < freeloadersArray.length; i++) { if (freeloadersArray[i][0] == user) { freeloadersArray.splice(i, 1); numbFreeloaders--; } } } function showFreeL() { if (freeloadersArray.length >= 1) { var TimeInRoom = 0; var EndTime = countMinutes(); var StartTime = EndTime; var HoursIn = 0; var MinutesIn = 0; for (var i = 0; i < freeloadersArray.length; i++) { //Update the total time before sorting and showing if (freeloadersArray[i][2] != 0) { TimeInRoom = EndTime - freeloadersArray[i][2]; freeloadersArray[i][1] = freeloadersArray[i][1] + TimeInRoom; freeloadersArray[i][2] = StartTime; } } freeloadersArray.sort(function(a, b){ return b[1] - a[1]; }); var lines = 20; if (freeloadersArray.length < 20) { lines = freeloadersArray.length; } var txtmsg = '\n****** Freeloaders top ' + lines + '\n'; for (var i = 0; i < lines; i++) { HoursIn = parseInt(freeloadersArray[i][1] /60); MinutesIn = parseInt(freeloadersArray[i][1] % 60); txtmsg += freeloadersArray[i][0] + ' --- ' + HoursIn + ' hr. ' + MinutesIn + ' min.\n'; } cb.sendNotice(txtmsg,cb.room_slug,'','','bold'); } else { cb.sendNotice('No freeloaders yet',cb.room_slug,'','','bold'); } } function countMinutes() { var d = new Date(); var t = d.getTime(); return parseInt(t/60000); } // ********************************************************************** // ************************* End freeload part ************************** // ********************************************************************** function is_broadcaster(testforslug) { return (testforslug == cb.room_slug); } function bcHelp() { cb.sendNotice(helpBC,cb.room_slug,'#eaeaea','','bold'); } function displayHelp() { if (MuteStarted == true) { var HelpMsg = '\nThe FUNmute bot is meant to have fun with in Kira\'s room.\n' + ' -- Usage:\n' + ' -- Tip ' + cb.settings.mute_amount + ' tokens to mute someone.\n' + ' -- Tip ' + cb.settings.unmute_amount + ' tokens to unmute someone.\n' + ' -- Tipnote must start with mute or unmute,\n' + ' -- followed by a space and the username to mute or unmute.\n' + ' -- To unmute yourself use unmute me. (If set to allowed)\n' + ' -- Mute time is ' + cb.settings.mute_time + ' minutes.\n' + ' -- Unmute yourself is set to: ' + cb.settings.self_unmute + '.\n' + ' -- Unmute others is set to: ' + cb.settings.others_unmute + '.\n' + '\n -- Kira can\'t be muted (yet).\n'; cb.sendNotice(HelpMsg,'','#eaeaea','','bold'); cb.setTimeout(displayHelp, 600000); } } function lovenseHelp() { if (LovenseStarted == true) { cb.sendNotice(lovenseMsg,'','','#9d144b','bold'); cb.setTimeout(lovenseHelp, 600000); } } function init() { // ********************************************************************** // ****************** Create array with silenced users ****************** // ********************************************************************** if (cb.settings.always_silent != '' && cb.settings.always_silent != null) { var n = cb.settings.always_silent; nochatArray = n.split(','); } // ********************************************************************** // *********************** Create lovense tipmenu *********************** // ********************************************************************** lovenseMsg = '***** My Lovense toy responds to tips, here are my levels:\n'; for (var x = 1; x <= 7; x++) { if (cb.settings['lov_level_tip' + x] != '') { lovenseMsg += '\n***** ' + cb.settings['lov_level_tip' + x] + ': ' + cb.settings['lov_level_power' + x] + ' VIBRATIONS for ' + cb.settings['lov_level_time' + x]; } } lovenseMsg += '\n *****'; lovenseMsg += '\n ***** Special commands'; for (var y = 1; y <= 5; y++) { if (cb.settings['lov_special_tip' + y] != '') { lovenseMsg += '\n***** [' + cb.settings['lov_special_tip' + y] + '] = ' + cb.settings['lov_special_power' + y]; } } // ********************************************************************** // ****************** Create broadcaster help message ******************* // ********************************************************************** helpBC = 'BROADCASTER INSTRUCTIONS\n' + ' -- Only you can use mute or unmute in the chatwindow.\n' + ' -- Others have to tip to mute or unmute someone.\n' + ' -- Type \/mute or \/unmute, followed by a space and the username.\n' + ' -- There are a few other commands that start with a \/.\n' + ' -- \/helpmute, to show this help.\n' + ' -- \/startmute, to enable muting.\n' + ' -- \/stopmute, to disable muting.\n' + ' -- \/self, a switch to disable\/enable unmute themselves.\n' + ' -- \/others a switch to disable\/enable unmuting others.\n' + ' -- \/listmute, to show a list in chat with the muted members.\n' + ' -- \/freeload, show a list of freeloaders. (top 20 or less) \n'; + ' -- \/startlovense, show the lovense tipmenu \n'; + ' -- \/stoplovense, hide the lovense tipmenu \n'; // ********************************************************************** // ********************************************************************** // ********************************************************************** bcHelp(); displayHelp(); MuteTimeMS = cb.settings.mute_time * 60000; } init();
© Copyright Freesexcam 2011- 2024. All Rights Reserved.