Bots Home
|
Create an App
sdfsdfxvsdvsdv
Author:
lillytestet
Description
Source Code
Launch Bot
Current Users
Created by:
Lillytestet
var txt=['spamWordlistNotice', 'Your message was not sent because it was flagged by the wordlist. Be nice and don\'t make demands, don\'t ask for something without tipping, don\'t talk about religion or politics, no racist comments or posting spam and no bb, babe, baby, or feet. Be a Tipper or Fanclub member to keep from being silenced by the bot for spammy words!', 'shift', 'no such variable', 'parseInt', 'is_mod', 'tipped_recently', 'Custom Wordlist', 'background', '/note', '/sendnotice', '/cn', 'You can\'t send a blank message.\x0aThe correct syntax for this command is \"/cn r message\".', 'red', 'You can\'t send a blank message.\x0aThe correct syntax for this command is \"/cn message\".', '/cndh', 'You can\'t send a blank message.\x0aThe correct syntax for this command is \"/cndh r message\".', '/cnd', 'You can\'t send a blank message.\x0aThe correct syntax for this command is \"/cnd message\".', '/cnh', 'You can\'t send a blank message.\x0aThe correct syntax for this command is \"/cnh r message\".', 'You can\'t send a blank message.\x0aThe correct syntax for this command is \"/cnh message\".', '/tb', '/pmm', 'You can\'t send a blank message.\x0aThe correct syntax for this command is \"/tb message\".', '/tm', 'You can\'t send a blank message.\x0aThe correct syntax for this command is \"/tm message\".', '/tbm', 'You can\'t send a blank message.\x0aThe correct syntax for this command is \"/tbm message\".', '/tv', 'You didn\'t specify a username.\x0aThe correct syntax for this command is \"/tv username message\".', 'You can\'t send a blank message.\x0aThe correct syntax for this command is \"/tv username message\".', 'Talking to yourself is a little odd...', '/emod', '/tiptotal', '/tt', 'Total tips: ', ' tokens', '/clearchat', '/cc', ' Clearing Chat! ', ' Chat has been Cleared! ', '/req', ' GUYS! ', '/eng', '/bio', ' :ReadBioInteresting ', '/node', ' :nodemandmov2 ', '/tipif', ' :tipifyou ', '/classy', ' :classytip ', '/nickname', 'Sorry the broadcaster has not allowed Mods to modify nicknames', 'Missing arguments, the right command is /nickname user nick', '/nicknames', 'Nicknames List: ', '(empty)', '/nickmod', 'Mod Access : ENABLED', '/blocknotice', 'Adding multiple users to the VIP list.', ' is already on the list. Skipping.', 'Added ', ' to the list.', ' has added you to the VIP list.', 'All users were added and notified.', ' has added multiple users to the VIP list.\x0aUsers added: ', 'Only moderators and broadcasters are able to use that command.\x0aType \"/hbhelp commands\" to see a full list of the available commands.', '/viplist', 'Users currently on the VIP List: ', 'arrayJoin', '/export', '/add ', 'There\'s no one on the VIP list.', '/silencelevel', '/greysoff', '/greyoff', '/graysoff', '/silencegreys', '/silencegrays', '/greyon', '/grayson', '/grayon', '/unsilencegrays', '/graphiclevel', '/silence', '/us', '/unsilencelast', '/silencelast', '/addnice', '/removenice', '/rn', '/addgrey', '/addgray', '/ag', '/removegray', '/rg', '/starttimerg', '/stg', '/addtimeg', '/atg', '/minustimeg', '/mtg', '/stoptimerg', '/endtimerg', '/etg', '/starttimers', '/sts', '/addtimes', '/minustimes', '/mts', '/endtimers', '/ets', '/starttimerm', '/addtimem', '/atm', '/mtm', '/endtimerm', '/etm', '/starttimerl', '/stl', '/atl', '/mtl', '/stoptimerl', '/etl', '/notifierspam', '/leaderboardspam', '/shownotices', '\x0a-------------------------\x0a', ': \x0a', 'There are no rotating notices set.', '/removenotice', 'splice', 'You have removed notice #', '\' is not a valid notice.', 'You did not enter a valid notice.', '/addnotice', '/addnote', 'You have successfully added a new notice!', '/addword', '/aw', 'You have successfully added \'', '\' to the custom wordlist!', 'You did not enter a valid word.', '/noticetimer', ' minutes.', 'You did not enter a valid value for /noticetimer.', '/hbhelp', '/leaderboard', '/lb', '/timeleftg', '/tlg', '/timelefts', '/tls', '/timeleftm', '/tlm', '/timeleftl', '/tll', '/tipmenu', '/changefcicon', 'You have successfully changed ', ' icon to ', '/csfci', '\" is not a valid command.\x0aType \"/lbhelp\u00a0commands\" to see a full list of the available commands.', '/changecrownicon', '/cci', 'You have successfully changed the daily crown icon to ', '/fanclubtoggle', '/fct', '/specialfanclubtoggle', '/sfct', '/whispertoggle', '/swlt', '/cwlt', '/greywordlisttoggle', '/limitcamtoggle', '/lct', '/tipmenutoggle', '/tipmenunotifiertoggle', '/tmnt', '/tipmenumessagetoggle', '/tmmt', '/fanclubtipstoggle', '/fctip', '/specialfanclubtipstoggle', '/sfctip', '/invalidcommandtoggle', '/ict', '/whisper', '/pm', '/ignorelevel', '/unignore', 'The broadcaster has disabled the \"whisper\" feature', '#EEE', '#AAA', '/ignore', '/sv', 'debug', '\" command.\x0aType \"/hbhelp\u00a0commands\" to see a full list of the available commands.', 'toUpperCase', '$1$1$1', 'addFC', 'Adding ', ' member ', 'removeFC', 'Removing ', 'showfc', 'Current ', 'fchelp', ' Bot Actions\x0a', '---------------------------------\x0a', 'REMEMBER TO ADD USER TO BOT BEFORE LAUNCH\x0a', '/addFC <membername> : Adds ', ' member\x0a', '/removeFC <membername> : Removes ', ' members\x0a', '#E7E7E7', 'addSFC', 'removeSFC', 'showsfc', ' members ', 'sfchelp', '/showsfc: List of ', 'onTip', 'amount', 'from_user', 'message', ' tipped for ', ' is the new high tip King! ', ' is the new monthly high tip King! ', 'chatNotice', ' has joined ', 'tipMessage', '{username}', ' there is a new ', ' has joined the room! ', 'reTextColor', 'Welcome to ', '\'s room. ', ' is running MrBot. This bot automatically blocks certain messages that contain words and phrases that are deemed abusive, inappropriate, or annoying.\x0a', 'Your blocked message notices are currently ON. To stop seeing them, type: /blocknotice\u00a0off.\x0a', 'Your blocked message notices are currently OFF. To see them again, type: /blocknotice\u00a0on.\x0a', 'To view commands type /hbhelp, To view Fan Club commands type /fchelp /sfchelp', 'onLeave', ' has left the room! ', ':kissy', 'random', 'No one will be able to chat except for your mods and fan club members. Did you mean to do this?\x0aFor more information, type \"/hbhelp\u00a0silencelevel\" ', 'greyList', 'MrBot - MODERATOR NOTICE', ' has just started MrBot. This bot automatically blocks certain messages that contain words and phrases that are deemed abusive, inappropriate, or annoying.\x0a', 'To view commands type /hbhelp, To view Fan Clubs commands type /fchelp /sfchelp', 'MrBot - BROADCASTER NOTICE', 'To stop seeing them, type \"/blocknotice\u00a0off\"\x0a', 'Or set \"Notify broadcaster\" to \"No\" under Section 3 Section 4 and Section 5 of the bot launch screen.', 'split', 'length', 'toLowerCase', 'trim', 'join', 'Error: malformed alias record (user@alias): ', 'hasOwnProperty', 'push', '\' added.', 'exec', 'filter', 'replace', '\\\\u', 'fromCharCode', '$1:smile ', '$1:woot ', 'test', '\\u0020', '\\u002c', '\\u0040', 'charCodeAt', 'toString', 'slice', 'settings', 'atkingTipperToggle', 'Be the new \"All Time High Tip King\" tip more than ', ' to replace ', 'setTimeout', 'atkingTipperNotifier', 'Yes', 'mkingTipperToggle', 'Be the new \"Monthly High Tip King\" tip more than ', ' as the new \"Monthly High Tip King\" and wear the monthly high tip ', 'mkingTipperNotifier', 'sepchar', 'label', 'shortcut', 'Tip Menu: ', 'item', 'Theme', 'tipMenuColorscheme', 'bgcolor', 'txtcolor', 'Whoops. You selected a custom color scheme for tip messages but you didn\'t fill in the colors. Reverted to default color scheme.', 'bold', 'Tip menu is not in use', 'tipMenuToggle', 'sendNotice', 'msg1', 'msg3', 'sUser', 'nTotal', 'sort', 'arrayContains', 'arrayRemove', 'roomWhisperLevel', 'charAt', 'onlyMods', 'modsAndEmods', 'roomHost', 'modsAndHost', 'All members', 'Only \"color\" names', 'Only \"dark blue\" names and higher', 'Only members who have tipped in the room', 'The silence level has been set to ', '\" is not a valid silence level.\x0aType \"/hbhelp\u00a0silencelevel\" to see how to use /silencelevel.', 'You did not enter a valid silence level.\x0aType \"/hbhelp\u00a0silencelevel\" to see how to use /silencelevel.', 'The graphic level has been set to ', ' can use graphics in chat.', '\" is not a valid graphic level.\x0aType \"/hbhelp\u00a0graphiclevel\" to see how to use /graphiclevel.', 'You did not enter a valid graphic level.\x0aType \"/hbhelp\u00a0graphiclevel\" to see how to use /graphiclevel.', 'You have set your whisper ignore level to ', ' can send you whispers.\x0a', '\" is not a valid ignore level.\x0aType \"/hbhelp\u00a0ignorelevel\" to see how to use /ignorelevel.', 'You did not enter a valid ignore level.\x0aType \"/hbhelp\u00a0ignorelevel\" to see how to use /ignorelevel.', 'You can not silence yourself.', 'You can not silence the broadcaster.', 'Broadcaster must revoke ', 'You must revoke ', '\'s emergency moderator status before silencing. (Type \"/emod remove ', 'You must remove ', ' from the nice list before silencing. (Type \"/removenice ', 'You must specify a user to silence.', ' has already been silenced.', ' has silenced ', ' has unsilenced ', ' does not need to be unsilenced.', 'No last silenced user record', 'pop', ' has just silenced ', ' using the /silencelast command. Please wait at least 5 seconds before using this command again.', 'The bot has not automatically silenced anyone yet, or they have all been silenced already.', 'timerWarningIcon', ' General Timer has Five minutes remaining! ', ' One minute remaining for General Timer! ', 'timerStopIcon', ' General Timer... Time is up! ', 'indexOf', 'timerStartIcon', ' has set a General Timer for ', ' minutes! ', '\' is not a valid option for /starttimerg.\x0aType \"/hbhelp\u00a0starttimerg\" to see how to use /starttimerg.', 'You did not enter a valid option for /starttimerg.\x0aType \"/hbhelp\u00a0starttimerg\" to see how to use /starttimerg.', 'General Timer running already.', 'setSeconds', 'getSeconds', 'getMinutes', 'getHours', 'timerAddMinusIcon', ' has added ', ' minute', ' to General Timer! ', '\' is not a valid option for /addtimeg.\x0aType \"/hbhelp\u00a0addtimeg\" to see how to use /addtimeg.', 'You did not enter a valid option for /addtimeg.\x0aType \"/hbhelp\u00a0addtimeg\" to see how to use /addtimeg.', ' has has subtracted ', 'There is no General Timer running.', '\' is not a valid option for /minustimeg.\x0aType \"/hbhelp\u00a0minustimeg\" to see how to use /minustimeg.', 'You did not enter a valid option for /minustimeg.\x0aType \"/hbhelp\u00a0minustimeg\" to see how to use /minustimeg.', ' has cancelled the General Timer. ', 'General Timer is not running.', 'floor', 'Time Remaining for General Timer: ', 'There\'s no General Timer running.', ' Silence has Five minutes remaining! ', ' One minute remaining for Silence! ', 'Silence... Time is up! ', '\' is not a valid option for /starttimers.\x0aType \"/hbhelp\u00a0starttimers\" to see how to use /starttimers.', 'You did not enter a valid option for /starttimers.\x0aType \"/hbhelp\u00a0starttimers\" to see how to use /starttimers.', 'Silence timer running already.', ' to Silence timer! ', 'Silence timer is not running.', '\' is not a valid option for /addtimes.\x0aType \"/hbhelp\u00a0addtimes\" to see how to use /addtimes.', 'You did not enter a valid option for /addtimes.\x0aType \"/hbhelp\u00a0addtimes\" to see how to use /addtimes.', 'There is no Silence timer running.', '\' is not a valid option for /minustimes.\x0aType \"/hbhelp\u00a0minustimes\" to see how to use /minustimes.', 'You did not enter a valid option for /minustimes.\x0aType \"/hbhelp\u00a0minustimes\" to see how to use /minustimes.', ' has cancelled the Silence timer. ', 'Time Remaining for Silence: ', 'There\'s no timer running for Silence.', ' Mystery timer has Five minutes remaining! ', ' One minute remaining for Mystery timer! ', 'Mystery... Time is up! ', ' has set a Mystery timer for ', '\' is not a valid option for /starttimerm.\x0aType \"/hbhelp\u00a0starttimerm\" to see how to use /starttimerm.', 'You did not enter a valid option for /starttimerm.\x0aType \"/hbhelp\u00a0starttimerm\" to see how to use /starttimerm.', 'Mystery timer running already.', ' to Mystery timer! ', 'You did not enter a valid option for /addtimem.\x0aType \"/hbhelp\u00a0addtimem\" to see how to use /addtimem.', ' from the Mystery timer! ', 'There is no Mystery timer running.', '\' is not a valid option for /minustimem.\x0aType \"/hbhelp\u00a0minustimem\" to see how to use /minustimem.', 'You did not enter a valid option for /minustimem.\x0aType \"/hbhelp\u00a0minustimem\" to see how to use /minustimem.', 'Mystery timer is not running.', 'Time Remaining for Mystery: ', 'There\'s no timer running for Mystery.', ' Log Off has Fifteen minutes remaining! ', ' Log Off has Ten minutes remaining! ', ' One minute remaining before Log Off! ', 'Log Off... Time is up! ', ' has set a Log Off timer for ', '\' is not a valid option for /starttimerl.\x0aType \"/hbhelp\u00a0starttimerl\" to see how to use /starttimerl.', 'You did not enter a valid option for /starttimerl.\x0aType \"/hbhelp\u00a0starttimerl\" to see how to use /starttimerl.', 'Log Off timer running already.', ' to Log Off timer! ', 'Log Off timer is not running.', '\' is not a valid option for /addtimel.\x0aType \"/hbhelp\u00a0addtimel\" to see how to use /addtimel.', 'You did not enter a valid option for /addtimel.\x0aType \"/hbhelp\u00a0addtimel\" to see how to use /addtimel.', ' from the Log Off timer! ', '\' is not a valid option for /minustimel.\x0aType \"/hbhelp\u00a0minustimel\" to see how to use /minustimel.', 'You did not enter a valid option for /minustimel.\x0aType \"/hbhelp\u00a0minustimel\" to see how to use /minustimel.', ' has cancelled the Log Off timer. ', 'Time Remaining for Log Off: ', 'There\'s no timer running for Log Off.', 'You didn\'t specify who you want to add to the VIP list.\x0aType \"/hbhelp addvip\" to see how to use /addvip.\x0aAdditionally, check the viplist help section for more info.', 'You have added ', ' to the VIP list.', ' has added you to the VIP list. You will have free access to any future \"CrazyTicket\" show.', 'Room hosts, moderators, and emergency moderators don\'t need to be added to the VIP List.', 'You didn\'t specify who you want to remove from the VIP list.\x0aType \"/hbhelp removevip\" to see how to use /removevip.\x0aAdditionally, check the viplist help section for more info.', 'You have removed all users from the VIP list.', ' has removed you from the VIP list.', 'You have removed ', ' is not on the VIP list.', 'The VIP list is currently empty.', 'div', '\x0a� ', '#F00000', 'divh', '#FFE5E5', 'default', 'crazyNoteColorscheme', 'crazyNoteBackground', 'crazyNoteText', 'Whoops. You selected a custom color scheme for crazy note but you didn\'t fill in the colors. Reverted to default color scheme.', 'You can\'t send a blank message.\x0aType a message and try again.', 'to_mods', '� Sent to Mods � ', 'to_caster', ': ', '? Sent to Broadcaster ? ', 'to_mods_and_caster', '� Sent to Broadcaster and Mods � ', 'to_viewer', 'You didn\'t specify who should receive the message.\x0aPlease enter a username and try again.', ' � ', '� Sent to ', ':cb_lightbubble [Whisper from: ', ']\u00a0 ', 'log', 'You did not specify a message.', 'Reply not sent.', 'Whisper not sent.', 'You did not enter a whisper recipient.', 'You do not have whispering privileges. Your message was not sent.', ' is ignoring whispers from all members who haven\'t tipped in the room.', ' is ignoring whispers from you. Your message was not sent.', 'Talking to yourself is a little odd... You need to consult a therapist!', 'No one has whispered you.', 'You can\'t ignore yourself. You need to consult a therapist.', 'You are now ignoring whispers from ', 'My, you are an odd one, aren\'t you?', 'You are no longer ignoring whispers from ', ' is not being ignored. There is no need to unignore ', 'You did not specify a user to unignore. Type \"/hbhelp\u00a0unignore\" to see how to use /unignore.', 'add', ' has already been granted emergency moderator powers.', 'Emergency moderator powers have been granted to ', 'You have been granted emergency moderator powers by ', 'Emergency moderator powers have been removed from ', 'Your emergency moderator powers have been removed by ', ' has not been granted emergency moderator powers.', ' is not a valid option for /emod. Type \"/hbhelp\u00a0emod\" to see how to use /emod.', 'You did not enter a valid option for /emod. Type \"/hbhelp\u00a0emod\" to see how to use /emod.', 'Your Blocked Message notices are already turned on', 'You have turned ON Blocked Message notices. To turn them back off again, type: /blocknotice\u00a0off', 'off', 'Your Blocked Message notices are already turned off', ' is not a valid option for /blocknotice. Type \"/hbhelp\u00a0blocknotice\" to see how to use /blocknotice.', 'You did not enter a valid option for /blocknotice. Type \"/hbhelp\u00a0blocknotice\" to see how to use /blocknotice.', 'crownIcon', ' Tip a total of ', ' to be my new ', 'kingMessage', 'No tips yet', '.\u00a0\u00a0', '\u00a0\u00a0(', ' tokens)', ' Daily Leader Board ', 'leaderBoard', 'The room host has decided not to use the daily Leaderboard feature.', 'spamMessage1', 'spamMessage2', 'spamMessage3', 'spamMessage4', 'spamMessage6', 'spamMessage8', 'spamMessage9', 'spamMessage10', '((^|\\s)[^\\s]\\s[^\\s]\\s[^\\s]($|\\s))', '\\b((May b eSex?)|(Ma y beSex?)|(M aybeSex?)|(M aybe Sex?)|(Ma ybeSex?)|(Ma ybe Sex?)|(May beSex?)|(Mayb eSex?)|(Mayb e Sex?)|(May be Sex?)|(MaybeSex?)|(Maybe Sex?)|(May b eFuck?)|(Ma y beFuck?)|(M aybeFuck?)|(M aybe Fuck?)|(Ma ybeFuck?)|(Ma ybe Fuck?)|(May beFuck?)|(Mayb eFuck?)|(Mayb e Fuck?)|(May be Fuck?)|(MaybeFuck?)|(Maybe Fuck?)|(Who Fuck Me)|(Fuck Me)|(Fuckme)|(Who Will Fuck Me)|(Who Fuckme)|(Whofuckme)|(Whofuck Me)\\b|\\b(Watch My Page)|(add me)|(nice view)|(i am very sexy girl)|(guys watch my)|(tap my show)|(my chat)|(m m)|(mm rubbing)|(watch me)|(i am new on chrb)|(new here)|(im new)|(i am new)|(i m new)|(i n new)|(im newbie)|(i am newbie)|(i m newbie)|(i n newbie)|(i am wet)|(i am so wet)|(im wet)|(i m wet)|(i m so wet)|(i n wet)|(i n so wet)|(im so wet)\\b|\\b(im hot)|(i m hot)|(i n hot)|(i am hot)|(i am so hot)|(im so hot)|(i m so hot)|(i n so hot)|(my profile)|(see my profile)|(see my bio)|(look in my profile)|(look at my profile)|(look in my bio)|(look at my bio)|(Watch)|(hot and delicious)|(delicious and hot)|(I\'m fingering)|(I can\'t stop fingering)|(I can\'t wait I\'m fingering)\\b|\\b(check my profile)|(want to date)|(check my bio)|(click on me)|(click my profile)|(click on my profile)|(click on my bio)|(tap my bio)|(tap my profile)|(i just signed)|(link in my bio)|(link in my profile)|(want free tokens)|(free chaturbate tokens)|(tok??en ge?ner?at??or)|(Cant tip)|(see my page for free tokens)|(open my bio)|(open my profile)|(open me now))\\b', 'search', 'Spam Wordlist 3', 'Spam Wordlist 1', 'Spam Wordlist 2', '\\b(s+o+l+e+s*|t+o+e+s*)\\b|(f+e+e+t|f+o+o+t|p+e+d+i+c+u|f+o+t+j+o+b)', '\\b([a-g|i-z]*(h+u+)*m+m+h*|u+f+|#+)\\b', '\\b(s+q+u+i+r+t|k+e+e+p|s+m+e+l+l|s+t+i+c+k|p+l+a+y|s+l+a+p|s+p+a+n+k|f+a+k+e|f+a+c+k|t+i+p|t+i+p+s|a+s+s+h+o+l+e|a+n+a+l|h+o+l+e|c+u+n+t|w+a+n+t|w+a+n+n+a|m+o+r+e|e+a+t|t+a+s+t+e|t+a+s+t+i+n+g|t+a+s+t+y|l+i+c+k|l+i+c+k+i+n+g|t+u+r+d|e+n+e+m+a|d+e+f+e+c+a+t|a+t+m|s+h+i+t|s+h+a+r+t|c+r+a+p|p+o+o+p|p+o+o|p+i+s+s|f+a+r+t|d+a+d|d+a+u+g+h+t+e+r|s+i+s+t+e+r|b+r+o+t+h+e+r|r+a+p+e|r+a+p+i+s+t|s+l+u+t|s+k+a+n+k|w+h+o+r+e|b+i+t+c+h|b+o+r+e+d|b+o+r+i+n+g|d+i+e|f+a+t|u+g+l+y|a+r+b+y+s|r+o+a+s+t|b+e+e+f|r+o+a+s+t+b+e+e+f|b+u+r+g+e+r)\\b|\\b(m+e+a+t+y|m+e+a+t|t+r+a+n+s|t+r+a+n+n+y|t+r+a+n|d+i+c+k|d+i+c+k+s|b+o+n+e+r|c+o+k+k|c+o+c+k+k|c+o+c+k|c+o+c+k+s|w+a+n+k|j+e+r+k|j+e+r+k+i+n+g|f+c+k|p+o+u+n+d|s+h+o+v+e|s+m+a+c+k|f+i+n+g+e+r|f+i+n+g+e+r+i+n+g|b+l+o+w|b+l+o+w+j+o+b|o+p+e+n|d+o+g+g+y|d+o+g+g+i+e|s+h+o+w|f+l+a+s+h|h+a+r+d|h+a+r+d+e+r|h+o+r+n+y|c+2+c|p+r+i+v+a+t+e|p+v+t|z+o+o+m|s+p+r+e+a+d|g+a+p+e|b+a+n+g|c+u+m|f+u+c+k|f+u+c+k+e+r|f+u+c+k+i+n+g|d+e+e+p|d+e+e+p+e+r|d+e+p+e+r|d+p|f+i+s+t|s+t+r+o+k|w+a+n+k|f+a+p|b+e+a+t|d+e+s+t+r+o+y|k+i+l+l|s+h+o+o+t|s+h+o+t|t+h+r+o+b|e+x+p+lo+d+e)\\b|\\b(s+u+c+k|s+u+c+k+i+n+g|p+u+t|p+u+s+h|b+i+g|h+u+g+e|p+u+s+s+y|p+u+s+s+i|a+s+s|o+f+f)\\b', '\\b((barack)|(obama)|(hillary)|(clinton)|(trump)|(brexit)|(anarchist)|(socialist)|(socialism)|(communist)|(communism)|(capitalist)|(capitalism)|(liberals)|(conservatives)|(vote)|(dnc)|(dnp)|(dpp)|(sdp)|(dems)|(democrat)|(democrats)|(gop)|(rnc)|(reps)|(republican)|(republicans)|(government)|(obamacare)|(affordable health care)|(vice)|(president)|(hitler)|(putin))\\b', '\\b((holy)|(pope)|(church)|(jesus)|(god)|(amen)|(christian)|(christians)|(anti)|(christ)|(antichrist)|(heathen)|(heatherns)|(athiest)|(atheists)|(atheism)|(jew)|(jews)|(muslim)|(muslims)|(isil)|(isis)|(gihad)|(jihad)|(infidel)|(buddha)|(buddism)|(satan)|(satanic)|(satanism))\\b', '\\b((nigger)|(nigga)|(negro)|(raghead)|(towelhead)|(burrhead)|(nappy)|(headed)|(sandnigger)|(african)|(brotha)|(bruh)|(brah)|(coon)|(jig)|(wigger)|(redneck)|(hillbilly)|(cracker)|(honkey)|(honky)|(pawg)|(blm)|(blacklivesmatter)|(blackpanthers)|(naacp)|(kkk)|(bbc)|(bwc))\\b', 'Grey Wordlist', 'customWordlist', 'fanclubIcon', 'fanclubToggle', 'The fan club is already turned on.', 'You have turned on the fan club.', 'The fan club is already turned off.', ' is not a valid option for /fct.', 'You did not enter a valid option for /fct.', 'The special fan club is already turned on.', 'You have turned on the special fan club.', 'specialfanclubToggle', ' is not a valid option for /sfct.', 'You did not enter a valid option for /sfct.', 'whisperToggle', 'The whisper function is already turned on.', 'You have turned on the whisper function.', 'You have turned off the whisper function.', ' is not a valid option for /wt.', 'You did not enter a valid option for /wt.', 'spamWordlistToggle', 'The spam wordlist is already turned on.', 'You have turned on the spam wordlist.', 'The spam wordlist is already turned off.', 'You have turned off the spam wordlist.', 'You did not enter a valid option for /swlt.', 'customWordlistToggle', 'The custom wordlist is already turned on.', 'You have turned on the custom wordlist.', 'You have turned off the custom wordlist.', 'You did not enter a valid option for /cwlt.', 'greyWordlistToggle', 'The grey wordlist is already turned on.', 'The grey wordlist is already turned off.', 'You have turned off the grey wordlist.', ' is not a valid option for /gwlt.', 'You did not enter a valid option for /gwlt.', 'The limit cam is already turned on.', 'limitCam_start', 'room_slug', 'You have turned on the limit cam.', 'Limit cam is already turned off.', 'limitCam_stop', 'You have turned off the limit cam.', ' is not a valid option for /lct.', 'The tip menu is already turned on.', 'You have turned on the tip menu.', ' is not a valid option for /tmt.', 'You did not enter a valid option for /tmt.', 'The tip menu is already turned off.', 'You have turned off the tip menu.', ' is not a valid option for /tmnt.', 'You did not enter a valid option for /tmnt.', 'The tip menu messages are already turned on.', 'You have turned on the tip menu messages.', 'You have turned off the tip menu messages.', ' is not a valid option for /tmmt.', 'You did not enter a valid option for /tmmt.', 'fanclubtips', 'Fan club tips is already turned off.', ' is not a valid option for /fctip.', 'You did not enter a valid option for /fctip.', 'Special fan club tips is already turned on.', 'specialfanclubtips', 'You have turned on special fan club tips.', 'Special fan club tips is already turned off.', 'You have turned off special fan club tips.', ' is not a valid option for /sfctip.', 'You did not enter a valid option for /sfctip.', 'invalidToggle', 'You have turned on invalid command error messages.', 'You have turned off invalid command error messages.', ' is not a valid option for /ict.', 'You did not enter a valid option for /ict.', 'Auto Silence Spam is already turned on.', 'You have turned on Auto Silence Spam.', 'autoSilenceSpamToggle', 'Auto Silence Spam is already turned off.', 'You have turned off Auto Silence Spam.', 'You did not enter a valid option for /asst.', ' is already on the nice list.', ' has added you to the nice list. You will be able to chat and use graphics regardless of the global room settings. Thank you for being nice!', ' from the nice list.', ' is not on the nice list.', 'Uh oh. You didn\'t specify a user.\x0aType \"/hbhelp\u00a0nicelist\" to see how to use the nice list.', ' to the grey list.', ' from the grey list.', 'Uh oh. You didn\'t specify a user.\x0aType \"/hbhelp\u00a0greylist\" to see how to use the grey list.', 'kingTipper', 'The room host has decided not to use the daily King Tipper feature', 'The daily King Tipper spam is already turned on.', 'You have turned on daily King Tipper spam.', 'The daily King Tipper spam is already turned off.', 'You have turned off the daily King Tipper spam.', ' is not a valid option for /kingspam.\x0aType \"/hbhelp\u00a0kingspam\" to see how to use /kingspam.', 'The Notifier spam is already turned on.', 'You have turned on the Notifier spam.', 'You have turned off the Notifier spam.', 'You did not enter a valid option for /notifierspam.\x0aType \"/hbhelp\u00a0notifierspam\" to see how to use /notifierspam.', 'The daily Leaderboard spam is already turned on.', 'The daily Leaderboard spam is already turned off.', 'You have turned off the daily Leaderboard spam.', ' is not a valid option for /leaderboardspam.\x0aType \"/hbhelp\u00a0leaderboardspam\" to see how to use /leaderboardspam.', 'You did not enter a valid option for /leaderboardspam.\x0aType \"/hbhelp\u00a0leaderboardspam\" to see how to use /leaderboardspam.', '[Optional', 'substr', '0123456789abcdefABCDEF', '\" is not a valid color option.', 'colorscheme', 'darkcolor', 'lightcolor', 'Custom', 'Whoops. You selected a custom color scheme but you didn\'t fill in the colors. Reverted to default color scheme.', 'Whoops. You selected a custom color scheme but you didn\'t select a text color. Reverted to default color scheme.', 'Pink on Grey', 'Black on Blue', 'Black on Green', 'Blue on Green', 'Orange on Black', 'Red on Pink', ' MrBot Help Menu ', 'Type \"/hbhelp\u00a0x\", where x is one of the following choices, for more detailed information.\x0aEx: /hbhelp\u00a0commands', 'commands\x0anicelist\x0agreylist\x0aabout', 'commands', ' MrBot Command List ', 'Type \"/hbhelp\u00a0x\", where x is one of the following commands, for more detailed information.\x0aEx: /hbhelp\u00a0silencelevel', '/greyson\x0a/greysoff\x0a/silencelevel\x0a/graphiclevel\x0a/silence\x0a/unsilence\x0a/silencelast\x0a/starttimerg\x0a/stoptimerg\x0a/addtimeg\x0a/minustimeg\x0a/timeleftg\x0a/starttimers\x0a/stoptimers\x0a/addtimes\x0a/minustimes\x0a/timelefts\x0a/starttimerm\x0a/stoptimerm\x0a/addtimem\x0a/minustimem\x0a/timeleftm\x0a/starttimerl\x0a/stoptimerl\x0a/addtimel\x0a/minustimel\x0a/timeleftl\x0a/n\x0a/note\x0a/notice\x0a/cn\x0a/cnd\x0a/cndh\x0a/cnh\x0a/tb\x0a/tm\x0a/tbm\x0a/tv\x0a/addnotice\x0a/removenotice\x0a/shownotices\x0a/noticetimer\x0a/whisper\x0a/reply\x0a/ignore\x0a/unignore\x0a/ignorelevel\x0a/emod\x0a/addnice\x0a/removenice\x0a/addgrey\x0a/removegrey\x0a/addword\x0a/leaderboard\x0a/tipmenu\x0a/viplist\x0a/addvip\x0a/removevip\x0a/nickmod\x0a/nickname\x0a/nicknames\x0a/kingspam\x0a/usl\x0a/unsilencelast', 'nicelist', 'The \"Nice\" List', 'Sometimes, there are users whose comments are desirable, but they either do not have tokens or do not tip frequently. When rooms get rowdy, hosts and mods are forced to do things like silence users without tokens or who have not tipped and those groups often includes the users whose comments hosts would like to see. To fix this problem, hosts and mods can add users to the Nice List. Users who are on the nice list can send messages regardless of the global silence setting.', 'The \"Grey\" List', 'Sometimes, there are users whose comments are annoying, in spite of the fact that they may have tokens or even tip. It isn\'t always desireable to silence these people entirely, especially if they\'ve been tipping, but it can be useful to apply the same word list restrictions that apply to greys, so that the more annoying messages don\'t get through to the room. To fix this problem, hosts and mods can add users to the \"Grey\" List. Users who are on the grey list will have their messages subjected to the wordlists that apply to greys.', 'viplist', 'The VIP List', 'Sometimes, there\'re users who are trusted regulars, and then the room host decides to do a \"CrazyTicket\" show, but these users don\'t have tokens to buy a ticket. It isn\'t always desirable (and it may even seem unfair) to leave these users out of the show. To fix this problem, hosts and mods can add these users to the VIP List. Users who are on the VIP List will have free access to any future CrazyTicket show, provided the list is exported to the app via the \"/export\" command.\x0aTo show the VIP list at any time, type /viplist.', 'addvip', '/addvip Help', '/addvip is a command that is usable by moderators and room hosts.\x0aThe syntax for using addvip is \"/addvip x\", where x is the username of the user you want to add to the VIP list.\x0aAdding a user to the VIP list grants them free access to a future \"CrazyTicket\" show. \x0aUsers can be removed from the VIP list by using the command /removevip.\x0aSee the help section for viplist for more information on the VIP list.', 'removevip', '/removevip Help', '/removevip is a command that is usable by moderators and room hosts.\x0aThe syntax for using removevip is \"/removevip x\", where x is the username of the user you want to remove from the VIP list.\x0aSee the help section for viplist for more information on the VIP list.', 'about', ' About MrBot ', '\"MrBot\" is based on \"All In One Bot\". \x0aThe purpose of \"MrBot\" is to make the lives of the host and mods as easy as possible. It adds popular features such as Daily King Tipper, Monthly King Tipper, All Time High Tip King, Daily Leaderboard, Rotating Notifier, Tip Menu, Fanclubs, Nicknames, CrazyNote, Grey, Custom, and Spam wordlist that blocks abusive messages and auto silences spam bots, 4 Timers: General, Silence, Mystery, and Logoff, Customizable color schemes, Special access mod of any color can help with commands, Whispers in the main chat window that has 4 levels or can be turned on or off, plus many more features. ', 'greyon', 'grayon', 'selencegrays', '/greyson Help', '/greyson is a command that is usable by moderators and room hosts.\x0aThe syntax for using greyson is \"/greyson\".\x0aThe effect of /greyson is the same as silence level 0, which allows voice priveleges from greys.\x0a/greyon, /grayson, /grayon, /silencegreys, and /silencegrays are all available commands that will turn greys on.\x0aThe effect of /greyson can be reversed by using the command /greysoff.', 'greyoff', 'grayoff', 'unselencegrays', '/greysoff Help', '/silencelevel Help', '/silencelevel is a command that is usable by moderators and room hosts.\x0aThe syntax for using silencelevel is \"/silencelevel\u00a0x\", where x is a number between 0 and 3.\x0aSetting the Silence Level to 0 will grant voice privileges to all users, setting it to 1 will revoke voice privileges from greys, setting it to 2 will revoke voice privileges from greys and light blues, setting it to 3 will revoke voice privileges from users who have not tipped,and setting it to 4 will revoke voice privileges from everyone other than mods and fans.\x0aThe default setting for /silencelevel is 0.\x0aRoom hosts, moderators, and fan club members are unaffected by the Silence Level.', '/graphiclevel Help', '/graphiclevel is a command that is usable by moderators and room hosts.\x0aThe syntax for using graphiclevel is \"/graphiclevel\u00a0x\", where x is a number between 0 and 3.\x0aSetting the Graphic Level to 0 will grant graphic privileges to all users, setting it to 1 will revoke graphic privileges from greys, setting it to 2 will revoke graphic privileges from greys and light blues, setting it to 3 will revoke graphic privileges from users who have not tipped,and setting it to 4 will revoke graphic privileges from everyone other than mods and fans.\x0aThe default setting for /graphiclevel is 1.\x0aRoom hosts, moderators, and fan club members are unaffected by the Graphic Level.', 'silence', '/silence or /s is a command that is usable by moderators and room hosts.\x0aThe syntax for using silence is \"/silence\u00a0x\" or \"/s\u00a0x\", where x is the username of the user you want to silence.\x0aThe effect of /silence or /s is the same as Chaturbate\'s silence feature, except that it lasts for the duration of the current session instead of for six hours.\x0aThe effect of /silence or /s can be reversed by using the command /unsilence or /us.', 'unsilence', '/unsilence or /us Help', '/unsilence or /us is a command that is usable by moderators and room hosts.\x0aThe syntax for using unsilence is \"/unsilence\u00a0x\" or \"/us\u00a0x\", where x is the username of the user you want to unsilence.\x0aunsilence or /us simply grants voice privileges back to a user who was previously silenced.\x0aNOTE: /unsilence or /us WILL NOT undo the effect of Chaturbate\'s silence feature!\x0a/unsilence or /us WILL ONLY reverse the effect of /silence or /s!', 'silencelast', '/silencelast or /sl Help', '/silencelast or /sl is a command that is usable by moderators and room hosts.\x0aThe syntax for using silence last is \"/silencelast\" or sl is \"/sl\", this will silence the most recent user that typed in chat.\x0aThe effect of /silencelast or /sl is the same as Chaturbate\'s silence feature, except that it lasts for the duration of the current session instead of for six hours.\x0aThese are available commands that will silence last.\x0aThe effect of /silence or /sl can be reversed by using the command /unsilence.', 'starttimerg', 'stg', '/starttimerg or /stg Help', 'etg', '/stoptimerg or /endtimerg or /etg Help', '/stoptimerg or /endtimerg or /etg is a command that is usable by moderators and room hosts.\x0aThe syntax for using stoptimerg is \"/stoptimerg\" or endtimerg is \"/endtimerg\" or etg is \"/etg\", this will stop the current General Timer that is running.\x0aThese are available commands that will stop the General Timer.', 'atg', '/addtimeg or /atg Help', '/addtimeg or /atg is a command that is usable by moderators and room hosts.\x0aThe syntax for using addtimeg is \"/addtimeg\u00a0x\" or atg is \"/atg\u00a0x\" , where x is the amount of time you want to add in minutes.\x0a/addtimeg or /atg will accept whole numbers only.\x0aSee the help section for starttimerg for more information on timerg.', 'minustimeg', 'mtg', '/minustimeg or /mtg Help', '/minustimeg or /mtg is a command that is usable by moderators and room hosts.\x0aThe syntax for using minustimeg is \"/minustimeg\u00a0x\", where x is the amount of time you want to subtract in minutes.\x0aThe syntax for using mtgg is \"/mtg\u00a0x\", where x is the amount of time you want to subtract in minutes.\x0a/minustimeg or /mtg will accept whole numbers only.\x0aSee the help section for starttimerg for more information on timerg.', 'timeleftg', 'tlg', '/timeleftg or /tlg Help', '/timeleftg is a command that is usable by everyone.\x0aThe syntax for using timeleftg is /timeleftg or tlg is /tlg\x0a/timeleftg will display the amount of time left on the General Timer in the format 00:00:00\x0aSee the help section for starttimerg for more information on timerg.', 'starttimers', '/starttimers or /sts Help', '/starttimers or /sts is a command that is usable by moderators and room hosts.\x0aThe syntax for using starttimers is \"/starttimers\u00a0x\" or sts is \"/sts\u00a0x\", where x is the desired duration of the Silence timer in minutes.\x0a/starttimers or /sts will accept whole numbers only.\x0aThe Silence timer will make announcements at five minutes remaining and at one minute remaining.\x0a/addtimes or /ats can be used to add time to a currently running Silence timer.\x0a/minustimes or /mts can be used to subtract time from a currently running Silence timer.\x0a/timelefts or /tls can be used to display the amount of time remaining on the Silence timer.', 'stoptimers', 'endtimers', '/stoptimers or /endtimers or /ets Help', '/stoptimers or /endtimers or /ets is a command that is usable by moderators and room hosts.\x0aThe syntax for using stoptimers or endtimers or ets is \"/stoptimers\" or \"/endtimers\" or \"/ets\" , this will stop the current Silence timer that is running.\x0aThese are available commands that will stop the Silence timer.', 'ats', '/addtimes or /ats Help', '/addtimes or /ats is a command that is usable by moderators and room hosts.\x0aThe syntax for using addtimes is \"/addtimes\u00a0x\" or ats is \"/ats\u00a0x\" , where x is the amount of time you want to add in minutes.\x0a/addtimes or /ats will accept whole numbers only.\x0aSee the help section for starttimers for more information on timers.', 'minustimes', 'mts', '/minustimes or /mts Help', '/minustimes or /mts is a command that is usable by moderators and room hosts.\x0aThe syntax for using minustimes is \"/minustimes\u00a0x\" or mts is \"/mts\u00a0x\", where x is the amount of time you want to subtract in minutes.\x0a/minustimes or /mts will accept whole numbers only.\x0aSee the help section for starttimers for more information on timers.', 'timelefts', '/timelefts or /tls Help', '/timelefts or /tls is a command that is usable by everyone.\x0aThe syntax for using timelefts is /timelefts or tls is /tls\x0a/timelefts or /tls will display the amount of time left on the Silence timer in the format 00:00:00\x0aSee the help section for starttimers for more information on timers.', 'stm', '/starttimerm or /stm Help', '/starttimerm or /stm is a command that is usable by moderators and room hosts.\x0aThe syntax for using starttimerm is \"/starttimerm\u00a0x\" or stm is \"/stm\u00a0x\", where x is the desired duration of the Mystery timer in minutes.\x0a/starttimerm or /stm will accept whole numbers only.\x0aThe Mystery timer will make announcements at five minutes remaining and at one minute remaining.\x0a/addtimem or /atm can be used to add time to a currently running Mystery timer.\x0a/minustimem or /mtm can be used to subtract time from a currently running Mystery timer.\x0a/timeleftm or /tlm can be used to display the amount of time remaining on the Mystery timer.', 'stoptimerm', 'endtimerm', 'etm', '/stoptimerm or /endtimerm or /etm Help', 'atm', '/addtimem or /atm Help', 'minustimem', 'mtm', '/minustimem or /mtm Help', 'tlm', '/timeleftm or /tlm Help', '/timeleftm or /tlm is a command that is usable by everyone.\x0aThe syntax for using timeleftm is /timeleftm or tlm is /tlm\x0a/timeleftm or /tlm will display the amount of time left on the Mystery timer in the format 00:00:00\x0aSee the help section for starttimerm for more information on timers.', 'stl', '/starttimerl or /stl Help', '/starttimerl or /stl is a command that is usable by moderators and room hosts.\x0aThe syntax for using starttimerl is \"/starttimerl\u00a0x\" or stl is \"/stl\u00a0x\", where x is the desired duration of the Log Off timer in minutes.\x0a/starttimerl or /stl will accept whole numbers only.\x0aThe Log Off timer will make announcements at fifteen, ten, five, and at one minute remaining.\x0a/addtimel or /atl can be used to add time to a currently running Log Off timer.\x0a/minustimel or /mtl can be used to subtract time from a currently running Log Off timer.\x0a/timeleftl or /tll can be used to display the amount of time remaining on the Log Off timer.', 'etl', '/stoptimerl or /endtimerl or /etl Help', '/stoptimerl or /endtimerl or /etl is a command that is usable by moderators and room hosts.\x0aThe syntax for using stoptimerl is \"/stoptimerl\" or endtimerl is \"/endtimerl\" or etl is \"/etl\", this will stop the current Log Off timer that is running.\x0aThese are available commands that will stop the Log Off timer.', 'addtimel', 'atl', '/addtimel or /atl Help', '/addtimel or /atl is a command that is usable by moderators and room hosts.\x0aThe syntax for using addtimel is \"/addtimel\u00a0x\" or atl is \"/atl\u00a0x\", where x is the amount of time you want to add in minutes.\x0a/addtimel or /atl will accept whole numbers only.\x0aSee the help section for starttimerl for more information on timers.', 'minustimel', 'mtl', '/minustimel or /mtl Help', '/minustimel or /mtl is a command that is usable by moderators and room hosts.\x0aThe syntax for using minustimel is \"/minustimel\u00a0x\" or mtl is \"/mtl\u00a0x\", where x is the amount of time you want to subtract in minutes.\x0a/minustimel or /mtl will accept whole numbers only.\x0aSee the help section for starttimerl for more information on timers.', 'timeleftl', 'tll', '/timeleftl or /tll Help', '/timeleftl or /tll is a command that is usable by everyone.\x0aThe syntax for using timeleftl is /timeleftl or tll is /tll\x0a/timeleftl or /tll will display the amount of time left on the Log Off timer in the format 00:00:00\x0aSee the help section for starttimerl for more information on timers.', 'note', 'notice', '/note Help', '/note is a command that is usable by moderators and room host.\x0aThe syntax for using note is \"/note\u00a0x\", where x is the message you want to send.\x0a/note, /notice, and /n are all available commands that will send a notice.\x0aA note is a public notification that will be sent to everyone in the main chat window.', 'sendnotice', '/cn Help', '/cn is a command that is usable by moderators and room hosts.\x0aThe syntax for this command is /cn x, where x is the message you want to send to the main chat.\x0aUsing \"/cn r x\" - where x is the message to be sent - will send the message in red instead of the default color for notices.\x0a/sendnotice is also a command that will send notices to the chat.', '/cnd Help', '/cnd is a command that is usable by moderators and room hosts.\x0aThe syntax for this command is /cnd x, where x is the message you want to send to the main chat.\x0aThe message will be sent with divider lines.\x0aUsing \"/cnd r x\" - where x is the message to be sent - will send the message in red instead of the default color for notices.', '/cndh Help', '/cndh is a command that is usable by moderators and room hosts.\x0aThe syntax for this command is /cndh x, where x is the message you want to send to the main chat.\x0aThe message will be sent highlighted and with divider lines.\x0aUsing \"/cndh r x\" - where x is the message to be sent - will send the message in red instead of the default color for notices.', '/cnh Help', 'pmm', '/tb Help', '/tm Help', '/tm is a command that is usable by moderators and room hosts.\x0aThe syntax for this command is /tm x, where x is the message you want to send privately to all moderators as a group.', 'tbm', '/tbm Help', '/tm is a command that is usable by moderators and room hosts.\x0aThe syntax for this command is /tm x, where x is the message you want to send privately to all moderators as a group and the room host.', '/tv Help', '/tv is a command that is usable by moderators and room hosts.\x0aThe syntax for this command is /tv x y, where x is the user who will receive the message, and y is the message to be sent.', 'addnotice', 'addnote', '/addnotice Help', '/addnotice is a command that is usable by moderators and room hosts.\x0aThe syntax for using add notice is \"/addnotice\u00a0x\", where x is the notice message you want to add to the rotating notifier.\x0a/addnote is another available command that will add a notice.\x0aAdd notice will add a notice message to the rotating notifier, these notices will be displayed in the main chat window at a selected interval.\x0aAdd notice can be reversed by using the /removenotice command.', 'removenotice', 'removenote', '/removenotice Help', '/removenotice is a command that is usable by moderators and room hosts.\x0aThe syntax for using remove notice is \"/removenotice\u00a0x\", where x is the number of the notice message you want to remove to the rotating notifier.\x0a/removenote is another available command that will remove a notice.\x0aUse the command /shownotices to view all the notices in the rotating notifier and determine the number of the notice you want to remove.\x0aRemove notice will remove a notice message from the rotating notifier.', 'shownotices', 'noticetimer', '/noticetimer Help', '/noticetimer is a command that is usable by moderators and room hosts.\x0aThe syntax for using notice timer is \"/noticetimer\u00a0x\", where x is the number of minutes you want between notice messages for the rotating notifier.\x0aUsing this command will replace the minute interval between notices that was set at the beginning of the session.', 'whisper', 'tell', '/whisper Help', '/reply is a command that is usable by everyone.\x0aThe syntax for using whisper is \"/reply\u00a0x\", where x is message that you want to whisper to the user who most recently sent a whisper to you.\x0a/reply and /r are available commands that will send a whisper in reply.\x0aSee the help section for whisper for more information on whispers.\x0aOther related commands are /whisper, /ignore, /unignore, and /ignorelevel.', 'ignore', '/ignore Help', 'unignore', '/unignore is a command that is usable by everyone.\x0aThe syntax for using unignore is \"/unignore\u00a0x\", where x is the user you wish to remove from your ignore list.\x0aSee the help section for ignore for more information on ignoring users.\x0aSee the help section for whisper for more information on whispers.\x0aOther related commands are /whisper, /reply, /ignore, and /ignorelevel.', '/ignorelevel Help', '/ignorelevel is a command that determines which users you accept whispers from. It is usable by everyone.\x0aThe syntax for using ignorelevel is \"/ignorelevel\u00a0x\", where x is a number between 0 and 4.\x0aSetting it to 0 will allow all users to send you whispers.\x0aSetting it to 1 will prevent greys from sending you whispers.\x0aSetting it to 2 will prevent greys and light blues from sending you whispers.\x0aSetting it to 3 will prevent users who have not tipped in the room from sending you whispers.\x0aSetting it to 4 will prevent all users from sending you whispers.\x0aModerators and fan club members can send whispers regardless of whisper level.\x0aThe default setting for /ignorelevel is 4 for the broadcaster, and 0 for everyone else. (This broadcaster\'s level is set higher by default to prevent abuse of this feature.)\x0aSee the help section for whisper for more information on whispers\x0aOther related commands are /whisper, /reply, /ignore, and /unignore.', 'emod', '/emod Help', '/emod is a command that is usable by moderators and room hosts.\x0aThe syntax for using emod is \"/emod\u00a0x\u00a0y\", where x is either \"add\" or \"remove\" and y is the username of the user you want to either grant or revoke emergency moderator powers.\x0a/emod allows moderators to quickly grant other users access to moderator-only commands in the event that he is having difficulty controlling the room by himself.\x0aEmergency moderators have access to all moderator-only commands with the exceptions of /emod, /addnice, and /removenice.', 'blocknotice', '/blocknotice Help', '/blocknotice is a command that is usable by moderators and room hosts.\x0aThe syntax for using blocknotice is \"/blocknotice\u00a0x\", where x is either \"on\" or \"off\".\x0a/blocknotice toggles the blocked message notices that appear by default for moderators when the wordlist is being used\x0aThe blocked message notifications are toggled on a per-user basis. (Toggling it for yourself does not toggle it for everyone.)', 'addnice', '/addnice or /an Help', '/addnice or /an is a command that is usable by moderators and room hosts.\x0aThe syntax for using addnice is \"/addnice\u00a0x\" or an is \"/an\u00a0x\", where x is the username of the user you want to add to the nice list.\x0aAdding a user to the nice list guarantees that user voice and graphic usage privileges regardless of the silence, graphic, and ignore level settings. Using /silence or /ignore will still silence or ignore a user on the nice list.\x0aUsers can be removed from the nice list by using the command /removenice or /rn.\x0aSee the help sections for silencelevel, graphiclevel, and ignorelevel for more information on the global settings or the help section for nicelist for more information on the nice list.', 'removenice', '/removenice or /rn is a command that is usable by moderators and room hosts.\x0aThe syntax for using removenice is \"/removenice\u00a0x\" or rn is \"/rn\u00a0x\", where x is the username of the user you want to remove from the nice list.\x0aSee the help section for nicelist for more information on the nice list.', 'addgrey', 'addgray', 'removegrey', 'removegray', '/removegrey or /rg Help', '/removegrey or /rg is a command that is usable by moderators and room hosts.\x0aThe syntax for using removegrey is \"/removegrey\u00a0x\" or rg is \"/rg\u00a0x\" , where x is the username of the user you want to remove from the grey list.\x0aSee the help section for greylist for more information on the grey list.', '/hbhelp\u00a0is a command that is usable by everyone.\x0aThe syntax for using hbhelp is \"/hbhelp\u00a0x\", where x is the subsection of the help menu that you want to access.', 'addword', '/addword or /aw Help', 'leaderboard', 'dlb', '/leaderboard or /dlb Help', '/leaderboard or /dlb is a command that is usable by everyone.\x0aThe syntax for using leaderboard is \"/leaderboard\" or dlb is \"/dlb\".\x0a/leaderboard or /dlb shows the top 10 tippers of the current session.', 'kingspam', '/kingspam Help', '/kingspam is a command that is usable by moderators and room hosts.\x0aThe syntax for using kingspam is /kingspam x, where x is either on or off. Using this command toggles the spamming of the message \"Tip x to be my new___!\"', 'leaderboardspam', '/leaderboardspam Help', '/leaderboardspam is a command that is usable by moderators and room hosts.\x0aThe syntax for using leaderboardspam is /leaderboardspam x, where x is either on or off. Using this command toggles the spamming of the top three tippers.', 'nickmod', '/nickmod Help', '/nickmod is a command that is usable by the room hosts.\x0aThe syntax for using nickmod is \"/nickmod\".\x0aUsing this command will enable or disable the ability for mods to use the nickname feature.', 'nickname', '/nickname Help', '/nickname is a command that is usable by moderaters and the room hosts.\x0aThe syntax for using nickname is \"/nickname x y\", where x is the user and y is the nickname that should be added.\x0aif no new nickname is specified the existing nickname for this user is deleted.', '/nicknames Help', '/tipmenu Help', '/tipmenu is a command that is usable by everyone.\x0aThe syntax for using tip menu is \"/tipmenu\".\x0a/Tip menu shows the models tip menu.', ' is not a valid subsection of the help menu. Type \"/hbhelp\" to access the main help menu.', 'starting grabbing settings', 'fcMemberList', 'sfcMemberList', 'finished grabbing settings', 'settings_choices', '1.) PERSONALIZATION ............................................. Color Scheme:', 'choice', 'Blue on Grey', 'Custom (Please define below)', 'Custom Text Color (Html #code)', 'str', '[Optional - Set color scheme to \"Custom\" above]', 'Crazy Note Color Scheme (Only changes public notices) - Theme is colors picked above', 'Custom Text Color - HTML color code (without #)', 'Custom Highlight Color - HTML color code (without #)', 'enterMessage', 'Welcome Message', 'capsToggle', 'Only for greys', 'stickyToggle', 'Prevent sticky keyyyyyyyyyyyyys?', 'defaultGraphicLevel', 'Default Graphic Level (Who can use graphics?)', '1 - (Color names only)', '2 - (Dark blue names and higher)', '3 - (Users who have tipped)', '4 - (Only mods and fans)', 'defaultSilenceLevel', '0 - (Everyone)', 'niceList', '[Optional - Exact usernames, separated by commas]', 'Grey List (Usernames any color) who should always be subjected to grey wordlist and grey graphic level)', 'slickrickpussysucker', 'silenceList', 'Silence List (Users who are permanently silenced)', 'No (Skip to section 4)', 'greyWordlistNotice', 'greyWordlistShowModerators', 'Notify moderators of blocked grey wordlist messages?', 'greyWordlistShowBroadcaster', 'Notify broadcaster of blocked grey wordlist messages?', 'greyWordlistLevel', 'Grey wordlist applies to', 'Everyone', 'Only greys', '4.) CUSTOM WORDLIST ................... Use custom wordlist feature?', 'No (Skip to section 5)', 'customWordlistShowModerators', 'customWordlistShowBroadcaster', 'Notify broadcaster of blocked custom wordlist messages?', 'Custom wordlist', '[Optional - Exact words or phrases, separated by commas]', 'customWordlistLevel', 'Custom wordlist applies to', '5.) SPAM WORDLIST .......................... Use spam wordlist feature?', 'No (Skip to section 6)', 'spamWordlistShowModerators', 'Notify moderators of blocked spam wordlist messages?', 'spamWordlistShowBroadcaster', 'Notify broadcaster of blocked spam wordlist messages?', 'spamWordlistLevel', 'Automatically silence users who post spam?', '6.) WHISPERS ............................................... Use whisper feature?', 'No (Skip to section 7)', 'Room whisper level (Who can whisper to other users?)', 'hostWhisperLevel', '7.) KING TIPPER ................................... Use \'Daily King Tipper\' feature?', 'No (Skip to section 8)', 'kingMin', 'Minimum tip amount to become daily King:', 'int', 'kingTipperSpam', 'Periodically announce tip required to become daily King?', 'kingTipperTimer', 'Interval (in mins) for daily king announcement', 'Message to print here... Tip xx to be the new ______', 'Daily King', 'Crown Icon: used for daily King tipper (Use :GIFNAME with colon)', ':crown2', '8.) MONTHLY HIGH TIP KING ..... Use MONTHLY High Tip King feature?', 'No (Skip to section 9)', 'Yes (Skip to section 9)', 'mkingTipperName', '[Username required when in use]', 'mkingTipperTip', 'Reigning monthly high tip (token amount)', 'mkingTipperbgColor', 'Background color for monthly king tipper - HTML color code (without #)', 'FFFFFF', 'mkingTippertxtColor', 'Text color for monthly king tipper - HTML color code (without #)', '000000', 'mkingTipperIcon', 'Icon for monthly king tipper (use :GIFNAME with colon)', 'Interval (in mins) for rotating monthly king tipper message', '9.) ALL TIME HIGH TIP KING .......... Use All Time High Tip King feature?', 'No (Skip to section 10)', 'Yes (Skip to section 10)', 'atkingTipperName', 'atkingTipperTip', 'Reigning high tip (token amount)', 'atkingTipperbgColor', 'Background color for king tipper - HTML color code (without #)', 'atkingTippertxtColor', 'Text color for king tipper - HTML color code (without #)', 'atkingTipperIcon', ':kingcrown1', 'Interval (in mins) for rotating king tipper message', '10.) Daily LEADERBOARD ......................... Use daily Leaderboard feature?', 'No (Skip to section 11)', 'leaderBoardSpam', 'Periodically announce top 5 tippers?', 'leaderBoardTimer', 'notifierTip', '11.) TIP MESSAGES ..................... Show message when a user tips?', 'Privately to tipper only', 'Message to display', 'tipMessageMin', 'Minimum tip to trigger message', 'tipMessageColorscheme', 'Tip Message Color Scheme - Theme is Yellow and Black to match the tip colors', 'tipMessageText', 'tipMessageBackground', 'tipTitles', '12.) TIP TITLES ........................... Display users\' tip totals as titles?', 'specialaccessMod', '[Optional] Username of Special Access Mod - This (username, any color) will be able to use all the bot commands to make it easier for the model', 'Timer Start Icon: (Use :GIFNAME with colon)', ' :ml-gl ', 'Timer AddMinus Icon: (Use :GIFNAME with colon)', ' :ml-bl ', ' :ml-yl ', 'Timer Stop Icon: (Use :GIFNAME with colon)', ' :ml-rl ', 'vipList', '14.) CrazyTicket ... Names to grant access to a future fanclub, or other. \'CrazyTicket\' show, separated by spaces, or by commas with or without spaces. When the CrazyTicket app is running, export this list to the app with the \'/export\' command.', 'show_alias', 'No (Skip to section 16)', 'Yes (Skip to section 16)', 'nicknames', 'allow_mod', '16.) #1 FANCLUB ................................................ Use FANCLUB?', 'fanclubName', 'Fanclub', 'Tip to join FANCLUB?', 'Tip amount to join FANCLUB ', 'reBGColor', 'Room Enter/Leave Background color for FANCLUB - HTML color code (without #)', 'Room Enter/Leave Text color for FANCLUB - HTML color code (without #)', '12C02B', 'fcTextColor', 'fcBGColor', 'Background color for FANCLUB members messages in chat - HTML color code (without #)', '17.) #2 Special FANCLUB ........................................ Use FANCLUB?', 'specialfanclubName', 'Special Fanclub', 'Tip to join SPECIAL FANCLUB?', 'sfcTip', '1000', 'tfcTip', 'Tip amount to join Special FANCLUB ', '1001', 'specialreBGColor', 'Room Enter/Leave Background color for SPECIAL FANCLUB - HTML color code (without #)', 'specialreTextColor', 'Room Enter/Leave Text color for SPECIAL FANCLUB - HTML color code (without #)', 'sfcTextColor', 'Text color for FANCLUB members messages in chat - HTML color code (without #)', 'sfcBGColor', 'specialfanclubIcon', 'notifierSpam', '18.) ROTATING NOTIFIER ............................. Use rotating notifier?', 'notifierTimer', 'Notice #2', 'Notice #3', 'Notice #4', 'Notice #5', 'Notice #6', 'spamMessage7', 'Notice #7', 'Notice #8', 'Notice #9', 'Notice #10', '19.) TIP MENU ............................................... Use Tip Menu feature? This will print, USERNAME has tipped for MENU ITEM, when one of the values is tipped', 'Tip Menu Color Scheme - Theme is colors picked above in personalization', 'FF0000', 'Heart', 'Pink Glitter', 'Flowers', 'Pink Sparkle', 'Custom [Enter Below]', 'customSep', 'Custom Separator (use :GIFNAME with colon)', '[Optional - Set Separator Character to \"Custom\" above]', 'tipMenuNotifierToggle', 'Display the tip menu at the interval?', 'tipmenunotifier', 'Interval (in mins) for rotating tip menu', 'tipMenuMessageNotifierToggle', 'Display the tip menu messages seen below at the interval?', 'tipmenumessagenotifier', 'Interval (in mins) for tip menu rotating messages', 'Tip Menu is active, use /tipmenu to see the tip menu', 'msg2', 'Message 2 (Optional)', 'item1', 'Item 1 (Use this Format 10--kiss)', 'item2', 'Item 2', 'item3', 'Item 3', 'Item 5', 'item6', 'Item 6', 'item7', 'Item 7', 'item8', 'item9', 'Item 9', 'item10', 'item11', 'Item 11', 'Item 12', 'Item 13', 'item14', 'Item 14', 'Item 15', 'item16', 'Item 16', 'item18', 'Item 18', 'item19', 'item20', 'item21', 'item22', 'Item 22', 'item23', 'Item 23', 'item24', 'item25', 'Item 25', ':kissy', ':kissy', 'lillytestet', 'repeat', '#000000', '#FFFFFF', '#EEE1F1', '#FF77FF', '#ADDDFF', '#003ACD', '#EEEEEE', '#7AFFC2', '#0000FF', '#7FF000', '#F87217', '#079000', '#FFE7E7', '#FFFF33', '#FFC8C8', '#67008D', '#0A7700', '#FF7300', ' ? ? ? ', ':crownprincess', 'MrBot version 7.7.13 6-16-17', ':heart2', ':pixelglitter', ':bluebow', 'Pixel Heart', ':pixelheart', ':sparklpink', '\x0a: ', 'cancelled', 'onMessage', 'I\'m sorry, but the silence level has been set to ', '. Your message was not sent.\x0a', 'For more information about silence levels, type \"/hbhelp silencelevel\"\x0a', 'Please enjoy the show :smile', 'X-Spam', 'match', 'I\'m sorry, but the graphic level has been set to ', 'For more information about graphic levels, type \"/hbhelp graphiclevel\"\x0a', 'user', 'substring', ' has been silenced by the Bot.', 'customWordlistNotice']; (function(x000,x001) { var _aa=function(x002) { while(--x002) { x000.push(x000.shift()); } }; _aa(++x001); } (txt,0x101)); var getTxt=function(x003,x004) { x003=x003-0x0; var _ab=txt[x003]; return _ab; }; function parseNick() { var _aa,_ab,_ac,_ad; for (_aa=(HBnicknames || '').split(/[,]+/),_ab=0x0,_ac=_aa.length; _ab<_ac; _ab++)_ad=_aa[_ab].split('@'),0x2==_ad.length && _ad[0x0].length && _ad[0x1].length?set_alias(_ad[0x0].toLowerCase().trim(),parse_ucodes_and_emotes(_ad[0x1])).join(', '):notifyError('Error: malformed alias record (user@alias): '+_aa[_ab],cb.room_slug); } function set_alias(a,b) { var _aa=[]; return b.length?(users.hasOwnProperty(b),a.length && (_aa.push(a+'\'s alias \''+b+'\' added.'),aliases[a]=b,users[b]=a)):a.length && aliases.hasOwnProperty(a),_aa; } function parse_ucodes_and_emotes(a) { var _aa,_ab,_ac,_ad=/\\u([0-9a-f]{4})/gi,_ae=[]; for (a=a || ''; null!=(_aa=_ad.exec(a)); )_ae.push(_aa[0x1]); if (_ae.length)for (_ae=_ae.filter(uniqueArray),_ab=0x0,_ac=_ae.length; _ab<_ac; _ab++)a=a.replace(new RegExp('\\\\u'+_ae[_ab], 'gi'),String.fromCharCode(parseInt(_ae[_ab],0x10))); return a=a.replace(/(^|\s|\\n);-*\)/gm, '$1:wink ').replace(/(^|\s|\\n):-*\)/gm, '$1:smile ').replace(/(^|\s|\\n):D/gm, '$1:woot '),a=a.replace(/(\r\n|\n|\r|\\n)/gm, ' ').trim(),/(^|\s):([\w\-][\w\-]+)$/.test(a) && (a+=' '),/^:([\w\-][\w\-]+)(\s|$)/.test(a) && (a=' '+a),a; } function encode_ucodes(a) { return a=a || '',a=a.trim(),a=a.replace(/\s/g, '\\u0020').replace(/,/g, '\\u002c').replace(/@/g, '\\u0040'),a.replace(/[^\u0020-\u007e]/g,function(x005) { return'\\u'+(x005.charCodeAt(0x0)+0x10000).toString(0x10).slice(0x1).toLowerCase(); } ); } function atkingTipperNotifier() { 'Yes'==cb.settings.atkingTipperToggle && (notifyTheme('Be the new \"All Time High Tip King\" tip more than '+atkingtippertip+' to replace '+atkingtippername+' as the new \"All Time High Tip King\" and wear the all time high tip '+atkingtippericon),cb.setTimeout(atkingTipperNotifier,0xea60*cb.settings.atkingTipperNotifier)); } function mkingTipperNotifier() { 'Yes'==cb.settings.mkingTipperToggle && (notifyTheme('Be the new \"Monthly High Tip King\" tip more than '+mkingtippertip+' to replace '+mkingtippername+' as the new \"Monthly High Tip King\" and wear the monthly high tip '+mkingtippericon),cb.setTimeout(mkingTipperNotifier,0xea60*cb.settings.mkingTipperNotifier)); } function tipMenu(a) { var _aa,_ab='| ',_ac=[],_ad=[]; if ('Yes'==cb.settings.tipMenuToggle) { for (i=0x0; i<=MAXSEP-0x1; i++)cb.settings.sepchar==separators[i].label && (_ab=separators[i].shortcut+' '); for (_aa='Tip Menu: ',i=0x1; i<=MAXTIPMENU; i++) { var _ae; if (_ae=cb.settings['item'+i]) { var _af=_ae.split('--'),_ag=parseInt(_af[0x0]); _ag>0x0 && (_ac[i]=_ag,_ad[i]=_af[0x1],i>=0x2 && (_aa+=_ab),_aa+=_af[0x1]+'('+_ag+') '); } } 'Theme'==cb.settings.tipMenuColorscheme?notifyThemePlain(_aa,a):isBlank(cb.settings.bgcolor) || isBlank(cb.settings.txtcolor)?notifyErrorBold('Whoops. You selected a custom color scheme for tip messages but you didn\'t fill in the colors. Reverted to default color scheme.',roomHost):cb.sendNotice(_aa,a, '#'+cb.settings.bgcolor, '#'+cb.settings.txtcolor, 'bold'); } else notifyError('Tip menu is not in use',a); } function tipMenuNotifier() { var _aa,_ab='| ',_ac=[],_ad=[]; if (0x1==tipMenuSpam && 'Yes'==cb.settings.tipMenuToggle) { for (n=0x0; n<=MAXSEP-0x1; n++)cb.settings.sepchar==separators[n].label && (_ab=separators[n].shortcut+' '); for (_aa='Tip Menu: ',n=0x1; n<=MAXTIPMENU; n++) { var _ae; if (_ae=cb.settings['item'+n]) { var _af=_ae.split('--'),_ag=parseInt(_af[0x0]); _ag>0x0 && (_ac[n]=_ag,_ad[n]=_af[0x1],n>=0x2 && (_aa+=_ab),_aa+=_af[0x1]+'('+_ag+') '); } } 'Theme'==cb.settings.tipMenuColorscheme?(notifyThemePlain(_aa),tipmenuNotifierSpam()):isBlank(cb.settings.bgcolor) || isBlank(cb.settings.txtcolor)?notifyErrorBold('Whoops. You selected a custom color scheme for tip messages but you didn\'t fill in the colors. Reverted to default color scheme.',roomHost):(cb.sendNotice(_aa, '', '#'+cb.settings.bgcolor, '#'+cb.settings.txtcolor, 'bold'),tipmenuNotifierSpam()); } } function appTimeout(a,b) { cb.setTimeout(a,b<0x3e8?0x3e8:b); } function tipmenuNotifierSpam() { clearTimeout(tipMenuTimeout),tipMenuTimeout=setTimeout(tipMenuNotifier,tipMenuTimer*minuteMS); } function tipMenuMessageNotifierSpam() { tipMenuMessageTimeout=setTimeout(function() { 0x1==tipMenuMessageSpam && messArray.length && (sendRotatingMessages(),tipMenuMessageNotifierSpam()); } ,tipMenuMessageTimer*minuteMS); } function addMessage(a) { isBlank(a) || (a=a.replace(/((\\|\/)n|\{newline\})/gi, '\x0a'),messArray.push(a)); } function parseRotatingMessages() { addMessage(cb.settings.msg1),addMessage(cb.settings.msg2),addMessage(cb.settings.msg3); } function sendRotatingMessages() { messArray.length && (messArray[messNum] && ('Theme'==cb.settings.tipMenuColorscheme?notifyThemePlain(messArray[messNum]):isBlank(cb.settings.bgcolor) || isBlank(cb.settings.txtcolor)?notifyErrorBold('Whoops. You selected a custom color scheme for tip messages but you didn\'t fill in the colors. Reverted to default color scheme.',roomHost):cb.sendNotice(messArray[messNum], '', '#'+cb.settings.bgcolor, '#'+cb.settings.txtcolor, 'bold')),messNum+=0x1,messNum>=messArray.length && (messNum=0x0)); } function addTip(a,b) { var _aa,_ab=-0x1; for (tipArraySorted=!0x1,_aa=0x0; _aa<tipArray.length; _aa+=0x1)if (tipArray[_aa].sUser===a) { _ab=_aa; break; } return _ab<0x0?(tipArray.push( { 'sUser':a, 'nTotal':b } ),b):(tipArray[_ab].nTotal+=b,tipArray[_ab].nTotal); } function sortTipArray() { tipArraySorted || (tipArray.sort(function(x006,x007) { return x007.nTotal-x006.nTotal; } ),tipArraySorted=!0x0); } function getUserTotal(a) { var _aa; for (_aa=0x0; _aa<tipArray.length; _aa+=0x1)if (tipArray[_aa].sUser===a)return tipArray[_aa].nTotal; return 0x0; } function findTipper(a) { var _aa; for (_aa=0x0; _aa<tipArray.length; _aa+=0x1)if (tipArray[_aa].sUser==a)return _aa; return-0x1; } function modArrayPopulate(a) { cbjs.arrayContains(modArray,a) || modArray.push(a); } function modArrayDepopulate(a) { cbjs.arrayContains(modArray,a) && cbjs.arrayRemove(modArray,a); } function emodArrayPopulate(a) { cbjs.arrayContains(emodArray,a) || emodArray.push(a); } function emodArrayDepopulate(a) { cbjs.arrayContains(emodArray,a) && cbjs.arrayRemove(emodArray,a); } function modAndEmodArrayPopulate(a) { cbjs.arrayContains(modAndEmodArray,a) || modAndEmodArray.push(a); } function modAndEmodArrayDepopulate(a) { cbjs.arrayContains(modAndEmodArray,a) && cbjs.arrayRemove(modAndEmodArray,a); } function modBlockMsgArrayPopulate(a) { cbjs.arrayContains(modBlockMsgArray,a) || modBlockMsgArray.push(a); } function modBlockMsgArrayDepopulate(a) { cbjs.arrayContains(modBlockMsgArray,a) && cbjs.arrayRemove(modBlockMsgArray,a); } function niceArrayPopulate(a) { niceArray.push(a); } function niceArrayDepopulate(a) { cbjs.arrayRemove(niceArray,a); } function greyArrayPopulate(a) { greyArray.push(a); } function greyArrayDepopulate(a) { cbjs.arrayRemove(greyArray,a); } function silenceArrayPopulate(a) { lastSilenced=a; silenceArray.push(a); } function silenceArrayDepopulate(a) { cbjs.arrayRemove(silenceArray,a); } function ignoreArrayPopulate(a) { ignoreArray[numIgnorers]=new Array(),ignoreArray[numIgnorers][0x0]=a,ignoreArray[numIgnorers][0x1]=cb.settings.roomWhisperLevel?parseInt(cb.settings.roomWhisperLevel.charAt(0x0)):0x0,numIgnorers++; } function findIgnorer(a) { for (i=0x0; i<ignoreArray.length && ignoreArray[i][0x0]!=a; i++); return i==ignoreArray.length && (ignoreArrayPopulate(a),findIgnorer(a)),i; } function whisArrayPopulate(a) { whisArray[numWhis]=new Array(),whisArray[numWhis][0x0]=a,whisArray[numWhis][0x1]='',numWhis++; } function findWhisper(a) { for (var _aa=0x0; _aa<whisArray.length && whisArray[_aa][0x0]!=a; _aa++); return _aa==whisArray.length && (whisArrayPopulate(a),findWhisper(a)),_aa; } function notify(a,b,c,d,e) { if (null==c && (c=cb_light),null==d && (d=cb_dark),null==e && (e='bold'), 'onlyMods'==b)cb.sendNotice(a, '',c,d,e, 'red'); else if ('modsAndEmods'==b)for (mod=0x0; mod<modAndEmodArray.length; mod++)thisMod=modAndEmodArray[mod],cb.sendNotice(a,thisMod,c,d,e); else 'roomHost'==b?cb.sendNotice(a,roomHost,c,d,e):'modsAndHost'==b?(cb.sendNotice(a, '',c,d,e, 'red'),cb.sendNotice(a,roomHost,c,d,e)):null==b?cb.sendNotice(a, '',c,d,e):cb.sendNotice(a,b,c,d,e); } function notifyHelpBold(a,b,c,d) { null==c && (c=cb_dark),null==d && (d=white),notify(a,b,c,d, 'bold'); } function notifyHelpPlain(a,b,c) { bg=white,null==c && (c=cb_dark),notify(a,b,bg,c); } function notifyWhisper(a,b,c,d) { null==c && (c=whis_recd_bg),null==d && (d=whis_recd_text),notify(a,b,c,d, 'bold'); } function notifyTheme(a,b,c,d) { null==c && (c=theme_light),null==d && (d=theme_dark),notify(a,b,c,d, 'bold'); } function notifyHeaderThemeBold(a,b,c,d) { null==c && (c=theme_light),null==d && (d=theme_dark),notify(a,b,c,d, 'bold'); } function notifyLeaderTheme(a,b,c,d) { null==c && (c=white),null==d && (d=theme_dark),notify(a,b,c,d, 'bold'); } function notifyTimerThemeBold(a,b,c,d) { null==c && (c=theme_light),null==d && (d=theme_dark),notify(a,b,c,d, 'bold'); } function notifyThemePlain(a,b,c) { bg=white,null==c && (c=theme_dark),notify(a,b,bg,c); } function notifyCNmodPlain(a,b,c) { bg=white,null==c && (c=cn_mod),notify(a,b,bg,c); } function notifyCNbroadcasterPlain(a,b,c) { bg=white,null==c && (c=cn_broadcaster),notify(a,b,bg,c); } function notifyCNbroadcastermodPlain(a,b,c) { bg=white,null==c && (c=cn_broadcaster_mod),notify(a,b,bg,c); } function notifyError(a,b) { notify(a,b,error_light,error_dark); } function notifyErrorBold(a,b) { notify(a,b,error_dark,white); } function levelConditions(a) { var _aa; switch(parseInt(a)) { case 0x0:_aa='All members'; break; case 0x1:_aa='Only \"color\" names'; break; case 0x2:_aa='Only \"dark blue\" names and higher'; break; case 0x3:_aa='Only members who have tipped in the room'; break; case 0x4:_aa='No one'; } return _aa; } function setSilenceLevel(a,b) { if (parseInt(a)>=0x0 && parseInt(a)<=0x4) { silenceLevel=parseInt(a); var _aa='The silence level has been set to '+a+'.\x0a'; _aa+=levelConditions(a)+' can talk in chat.',notify(_aa, 'modsAndHost'); } else a?notifyError('\"'+a+'\" is not a valid silence level.\x0aType \"/hbhelp\u00a0silencelevel\" to see how to use /silencelevel.',b):notifyError('You did not enter a valid silence level.\x0aType \"/hbhelp\u00a0silencelevel\" to see how to use /silencelevel.',b); } function setGraphicLevel(a,b) { if (parseInt(a)>=0x0 && parseInt(a)<=0x4) { graphicLevel=parseInt(a); var _aa='The graphic level has been set to '+a+'.\x0a'; _aa+=levelConditions(a)+' can use graphics in chat.',notify(_aa, 'modsAndHost'); } else a?notifyError('\"'+a+'\" is not a valid graphic level.\x0aType \"/hbhelp\u00a0graphiclevel\" to see how to use /graphiclevel.',b):notifyError('You did not enter a valid graphic level.\x0aType \"/hbhelp\u00a0graphiclevel\" to see how to use /graphiclevel.',b); } function setIgnoreLevel(a,b) { if (parseInt(a)>=0x0 && parseInt(a)<=0x4) { ignoreArray[findIgnorer(b)][0x1]=a; var _aa='You have set your whisper ignore level to '+a+'.\x0a'; _aa+=levelConditions(a)+' can send you whispers.\x0a',_aa+='Remember, the room host, moderators, and fan club members will always be able to whisper you!',notify(_aa,b); } else a?notifyError('\"'+a+'\" is not a valid ignore level.\x0aType \"/hbhelp\u00a0ignorelevel\" to see how to use /ignorelevel.',b):notifyError('You did not enter a valid ignore level.\x0aType \"/hbhelp\u00a0ignorelevel\" to see how to use /ignorelevel.',b); } function silence(a,b) { if (a==b)notifyError('You can not silence yourself.',b); else if (a==roomHost)notifyError('You can not silence the broadcaster.',b); else if (cbjs.arrayContains(modArray,a))notifyError('Broadcaster must revoke '+a+'\'s moderator status before silencing.',b); else if (cbjs.arrayContains(emodArray,a))notifyError('You must revoke '+a+'\'s emergency moderator status before silencing. (Type \"/emod remove '+a+'\")',b); else if (cbjs.arrayContains(niceArray,a))notifyError('You must remove '+a+' from the nice list before silencing. (Type \"/removenice '+a+'\")',b); else if (a && (a=a.toLowerCase()),null==a)notify('You must specify a user to silence.',b); else if (cbjs.arrayContains(silenceArray,a))notifyError(a+' has already been silenced.',b); else { silenceArrayPopulate(a); var _aa=b+' has silenced '+a+'.'; b==dev || b==sm?(notify(_aa,dev),notify(_aa,sm)):notify(_aa, 'modsAndEmods'); } } function unsilence(a,b) { if (a && (a=a.toLowerCase()),null==a)notify('You must specify a user to unsilence.',b); else if (cbjs.arrayContains(silenceArray,a)) { cbjs.arrayRemove(silenceArray,a); var _aa=b+' has unsilenced '+a+'.'; b==dev || b==sm?(notify(_aa,dev),notify(_aa,sm)):notify(_aa, 'modsAndEmods'); } else notifyError(a+' does not need to be unsilenced.',b); } function unsilencelast(a) { var _aa=lastSilenced; if (_aa && (_aa=_aa.toLowerCase()),null==_aa)notify('No last silenced user record',a); else if (cbjs.arrayContains(silenceArray,_aa)) { cbjs.arrayRemove(silenceArray,_aa); var _ab=a+' has unsilenced '+_aa+'.'; a==dev || a==sm?(notify(_ab,dev),notify(_ab,sm)):notify(_ab, 'modsAndEmods'); } else notifyError(_aa+' does not need to be unsilenced.',a); } function silenceLast(a) { lastBlocked.length?null==lastToUseSL || lastToUseSL==a?(u=lastBlocked.pop(),lastToUseSL=a,lastToGetSLed=u,silence(u,a),cb.setTimeout(function() { lastToUseSL=null,lastToGetSLed=null; } ,0x1388)):notifyError(lastToUseSL+' has just silenced '+lastToGetSLed+' using the /silencelast command. Please wait at least 5 seconds before using this command again.',a):notifyError('The bot has not automatically silenced anyone yet, or they have all been silenced already.',a); } function setTimerG(a) { return clearTimeout(fiveTimeoutG),clearTimeout(oneTimeoutG),clearTimeout(timerTimeoutG),0x0==a?void(startTimeG=0x0):(a>0x12c && (fiveTimeoutG=setTimeout(function() { notifyTimerThemeBold(cb.settings.timerWarningIcon+' General Timer has Five minutes remaining! '+cb.settings.timerWarningIcon); } ,0x3e8*(a-0x12c))),a>0x3c && (oneTimeoutG=setTimeout(function() { notifyTimerThemeBold(cb.settings.timerWarningIcon+' One minute remaining for General Timer! '+cb.settings.timerWarningIcon); } ,0x3e8*(a-0x3c))),void(timerTimeoutG=setTimeout(function() { notifyTimerThemeBold(cb.settings.timerStopIcon+bullets+' General Timer... Time is up! '+bullets+cb.settings.timerStopIcon),startTimeG=0x0; } ,0x3e8*a))); } function startTimerG(a,b) { var _aa=parseInt(a),_ab=0x3c*_aa; 0x0==startTimeG?_aa>0x0 && -0x1==_aa.toString().indexOf('.')?(timeRemainingG=_ab,timerDurationG=_ab,startTimeG=new Date(),setTimerG(_ab),null!=b && notifyTimerThemeBold(cb.settings.timerStartIcon+' '+b+' has set a General Timer for '+_aa+' minutes! '+cb.settings.timerStartIcon)):null!=a?notifyError('\''+a+'\' is not a valid option for /starttimerg.\x0aType \"/hbhelp\u00a0starttimerg\" to see how to use /starttimerg.',b):null==a && notifyError('You did not enter a valid option for /starttimerg.\x0aType \"/hbhelp\u00a0starttimerg\" to see how to use /starttimerg.',b):null!=b && notifyError('General Timer running already.',b); } function addTimeG(a,b) { t=parseInt(a); var _aa=0x3c*t; if (t>0x0 && -0x1==t.toString().indexOf('.'))if (0x0!=startTimeG) { startTimeG.setSeconds(startTimeG.getSeconds()+_aa); var _ab=new Date(); timeRemainingG=0xe10*startTimeG.getHours()+0x3c*startTimeG.getMinutes()+startTimeG.getSeconds()+timerDurationG-0xe10*_ab.getHours()-0x3c*_ab.getMinutes()-_ab.getSeconds(),setTimerG(timeRemainingG),notifyTimerThemeBold(cb.settings.timerAddMinusIcon+' '+b+' has added '+t+' minute'+(0x1==t?'':'s')+' to General Timer! '+cb.settings.timerAddMinusIcon); } else notifyError('General Timer is not running.',b); else null!=a?notifyError('\''+a+'\' is not a valid option for /addtimeg.\x0aType \"/hbhelp\u00a0addtimeg\" to see how to use /addtimeg.',b):null==a && notifyError('You did not enter a valid option for /addtimeg.\x0aType \"/hbhelp\u00a0addtimeg\" to see how to use /addtimeg.',b); } function minusTimeG(a,b) { t=parseInt(a); var _aa=-0x3c*t; if (t>0x0 && -0x1==t.toString().indexOf('.'))if (0x0!=startTimeG) { startTimeG.setSeconds(startTimeG.getSeconds()+_aa); var _ab=new Date(); timeRemainingG=0xe10*startTimeG.getHours()+0x3c*startTimeG.getMinutes()+startTimeG.getSeconds()+timerDurationG-0xe10*_ab.getHours()-0x3c*_ab.getMinutes()-_ab.getSeconds(),setTimerG(timeRemainingG),notifyTimerThemeBold(cb.settings.timerAddMinusIcon+' '+b+' has has subtracted '+t+' minute'+(0x1==t?'':'s')+' from the General Timer! '+cb.settings.timerAddMinusIcon); } else notifyError('There is no General Timer running.',b); else null!=a?notifyError('\''+a+'\' is not a valid option for /minustimeg.\x0aType \"/hbhelp\u00a0minustimeg\" to see how to use /minustimeg.',b):null==a && notifyError('You did not enter a valid option for /minustimeg.\x0aType \"/hbhelp\u00a0minustimeg\" to see how to use /minustimeg.',b); } function stopTimerG(a) { 0x0!=startTimeG?(setTimerG(0x0),notifyTimerThemeBold(cb.settings.timerStopIcon+' '+a+' has cancelled the General Timer. '+cb.settings.timerStopIcon)):notifyError('General Timer is not running.',a); } function doubleDigitG(a) { return('0'+a).slice(-0x2); } function timeLeftG(a) { if (0x0!=startTimeG) { var _aa=new Date(); timeRemainingG=0xe10*startTimeG.getHours()+0x3c*startTimeG.getMinutes()+startTimeG.getSeconds()+timerDurationG-0xe10*_aa.getHours()-0x3c*_aa.getMinutes()-_aa.getSeconds(); var _ab=doubleDigitG(Math.floor(timeRemainingG/0xe10)),_ac=doubleDigitG(Math.floor((timeRemainingG-0xe10*_ab)/0x3c)),_ad=doubleDigitG(timeRemainingG-0xe10*_ab-0x3c*_ac); notify('Time Remaining for General Timer: '+_ab+':'+_ac+':'+_ad,a); } else notifyError('There\'s no General Timer running.',a); } function setTimerS(a) { return clearTimeout(fiveTimeoutS),clearTimeout(oneTimeoutS),clearTimeout(timerTimeoutS),0x0==a?void(startTimeS=0x0):(a>0x12c && (fiveTimeoutS=setTimeout(function() { notifyTimerThemeBold(cb.settings.timerWarningIcon+' Silence has Five minutes remaining! '+cb.settings.timerWarningIcon); } ,0x3e8*(a-0x12c))),a>0x3c && (oneTimeoutS=setTimeout(function() { notifyTimerThemeBold(cb.settings.timerWarningIcon+' One minute remaining for Silence! '+cb.settings.timerWarningIcon); } ,0x3e8*(a-0x3c))),void(timerTimeoutS=setTimeout(function() { notifyTimerThemeBold(cb.settings.timerStopIcon+bullets+'Silence... Time is up! '+bullets+cb.settings.timerStopIcon),startTimeS=0x0; } ,0x3e8*a))); } function startTimerS(a,b) { var _aa=parseInt(a),_ab=0x3c*_aa; 0x0==startTimeS?_aa>0x0 && -0x1==_aa.toString().indexOf('.')?(timeRemainingS=_ab,timerDurationS=_ab,startTimeS=new Date(),setTimerS(_ab),null!=b && notifyTimerThemeBold(cb.settings.timerStartIcon+' '+b+' has set a Silence timer for '+_aa+' minutes! '+cb.settings.timerStartIcon)):null!=a?notifyError('\''+a+'\' is not a valid option for /starttimers.\x0aType \"/hbhelp\u00a0starttimers\" to see how to use /starttimers.',b):null==a && notifyError('You did not enter a valid option for /starttimers.\x0aType \"/hbhelp\u00a0starttimers\" to see how to use /starttimers.',b):null!=b && notifyError('Silence timer running already.',b); } function addTimeS(a,b) { t=parseInt(a); var _aa=0x3c*t; if (t>0x0 && -0x1==t.toString().indexOf('.'))if (0x0!=startTimeS) { startTimeS.setSeconds(startTimeS.getSeconds()+_aa); var _ab=new Date(); timeRemainingS=0xe10*startTimeS.getHours()+0x3c*startTimeS.getMinutes()+startTimeS.getSeconds()+timerDurationS-0xe10*_ab.getHours()-0x3c*_ab.getMinutes()-_ab.getSeconds(),setTimerS(timeRemainingS),notifyTimerThemeBold(cb.settings.timerAddMinusIcon+' '+b+' has added '+t+' minute'+(0x1==t?'':'s')+' to Silence timer! '+cb.settings.timerAddMinusIcon); } else notifyError('Silence timer is not running.',b); else null!=a?notifyError('\''+a+'\' is not a valid option for /addtimes.\x0aType \"/hbhelp\u00a0addtimes\" to see how to use /addtimes.',b):null==a && notifyError('You did not enter a valid option for /addtimes.\x0aType \"/hbhelp\u00a0addtimes\" to see how to use /addtimes.',b); } function minusTimeS(a,b) { t=parseInt(a); var _aa=-0x3c*t; if (t>0x0 && -0x1==t.toString().indexOf('.'))if (0x0!=startTimeS) { startTimeS.setSeconds(startTimeS.getSeconds()+_aa); var _ab=new Date(); timeRemainingS=0xe10*startTimeS.getHours()+0x3c*startTimeS.getMinutes()+startTimeS.getSeconds()+timerDurationS-0xe10*_ab.getHours()-0x3c*_ab.getMinutes()-_ab.getSeconds(),setTimerS(timeRemainingS),notifyTimerThemeBold(cb.settings.timerAddMinusIcon+' '+b+' has has subtracted '+t+' minute'+(0x1==t?'':'s')+' from the Silence timer! '+cb.settings.timerAddMinusIcon); } else notifyError('There is no Silence timer running.',b); else null!=a?notifyError('\''+a+'\' is not a valid option for /minustimes.\x0aType \"/hbhelp\u00a0minustimes\" to see how to use /minustimes.',b):null==a && notifyError('You did not enter a valid option for /minustimes.\x0aType \"/hbhelp\u00a0minustimes\" to see how to use /minustimes.',b); } function stopTimerS(a) { 0x0!=startTimeS?(setTimerS(0x0),notifyTimerThemeBold(cb.settings.timerStopIcon+' '+a+' has cancelled the Silence timer. '+cb.settings.timerStopIcon)):notifyError('Silence timer is not running.',a); } function doubleDigitS(a) { return('0'+a).slice(-0x2); } function timeLeftS(a) { if (0x0!=startTimeS) { var _aa=new Date(); timeRemainingS=0xe10*startTimeS.getHours()+0x3c*startTimeS.getMinutes()+startTimeS.getSeconds()+timerDurationS-0xe10*_aa.getHours()-0x3c*_aa.getMinutes()-_aa.getSeconds(); var _ab=doubleDigitS(Math.floor(timeRemainingS/0xe10)),_ac=doubleDigitS(Math.floor((timeRemainingS-0xe10*_ab)/0x3c)),_ad=doubleDigitS(timeRemainingS-0xe10*_ab-0x3c*_ac); notify('Time Remaining for Silence: '+_ab+':'+_ac+':'+_ad,a); } else notifyError('There\'s no timer running for Silence.',a); } function setTimerM(a) { return clearTimeout(fiveTimeoutM),clearTimeout(oneTimeoutM),clearTimeout(timerTimeoutM),0x0==a?void(startTimeM=0x0):(a>0x12c && (fiveTimeoutM=setTimeout(function() { notifyTimerThemeBold(cb.settings.timerWarningIcon+' Mystery timer has Five minutes remaining! '+cb.settings.timerWarningIcon); } ,0x3e8*(a-0x12c))),a>0x3c && (oneTimeoutM=setTimeout(function() { notifyTimerThemeBold(cb.settings.timerWarningIcon+' One minute remaining for Mystery timer! '+cb.settings.timerWarningIcon); } ,0x3e8*(a-0x3c))),void(timerTimeoutM=setTimeout(function() { notifyTimerThemeBold(cb.settings.timerStopIcon+bullets+'Mystery... Time is up! '+bullets+cb.settings.timerStopIcon),startTimeM=0x0; } ,0x3e8*a))); } function startTimerM(a,b) { var _aa=parseInt(a),_ab=0x3c*_aa; 0x0==startTimeM?_aa>0x0 && -0x1==_aa.toString().indexOf('.')?(timeRemainingM=_ab,timerDurationM=_ab,startTimeM=new Date(),setTimerM(_ab),null!=b && notifyTimerThemeBold(cb.settings.timerStartIcon+' '+b+' has set a Mystery timer for '+_aa+' minutes! '+cb.settings.timerStartIcon)):null!=a?notifyError('\''+a+'\' is not a valid option for /starttimerm.\x0aType \"/hbhelp\u00a0starttimerm\" to see how to use /starttimerm.',b):null==a && notifyError('You did not enter a valid option for /starttimerm.\x0aType \"/hbhelp\u00a0starttimerm\" to see how to use /starttimerm.',b):null!=b && notifyError('Mystery timer running already.',b); } function addTimeM(a,b) { t=parseInt(a); var _aa=0x3c*t; if (t>0x0 && -0x1==t.toString().indexOf('.'))if (0x0!=startTimeM) { startTimeM.setSeconds(startTimeM.getSeconds()+_aa); var _ab=new Date(); timeRemainingM=0xe10*startTimeM.getHours()+0x3c*startTimeM.getMinutes()+startTimeM.getSeconds()+timerDurationM-0xe10*_ab.getHours()-0x3c*_ab.getMinutes()-_ab.getSeconds(),setTimerM(timeRemainingM),notifyTimerThemeBold(cb.settings.timerAddMinusIcon+' '+b+' has added '+t+' minute'+(0x1==t?'':'s')+' to Mystery timer! '+cb.settings.timerAddMinusIcon); } else notifyError('Mystery timer is not running.',b); else null!=a?notifyError('\''+a+'\' is not a valid option for /addtimem.\x0aType \"/hbhelp\u00a0addtimem\" to see how to use /addtimem.',b):null==a && notifyError('You did not enter a valid option for /addtimem.\x0aType \"/hbhelp\u00a0addtimem\" to see how to use /addtimem.',b); } function minusTimeM(a,b) { t=parseInt(a); var _aa=-0x3c*t; if (t>0x0 && -0x1==t.toString().indexOf('.'))if (0x0!=startTimeM) { startTimeM.setSeconds(startTimeM.getSeconds()+_aa); var _ab=new Date(); timeRemainingM=0xe10*startTimeM.getHours()+0x3c*startTimeM.getMinutes()+startTimeM.getSeconds()+timerDurationM-0xe10*_ab.getHours()-0x3c*_ab.getMinutes()-_ab.getSeconds(),setTimerM(timeRemainingM),notifyTimerThemeBold(cb.settings.timerAddMinusIcon+' '+b+' has has subtracted '+t+' minute'+(0x1==t?'':'s')+' from the Mystery timer! '+cb.settings.timerAddMinusIcon); } else notifyError('There is no Mystery timer running.',b); else null!=a?notifyError('\''+a+'\' is not a valid option for /minustimem.\x0aType \"/hbhelp\u00a0minustimem\" to see how to use /minustimem.',b):null==a && notifyError('You did not enter a valid option for /minustimem.\x0aType \"/hbhelp\u00a0minustimem\" to see how to use /minustimem.',b); } function stopTimerM(a) { 0x0!=startTimeM?(setTimerM(0x0),notifyTimerThemeBold(cb.settings.timerStopIcon+' '+a+' has cancelled the Mystery timer. '+cb.settings.timerStopIcon)):notifyError('Mystery timer is not running.',a); } function doubleDigitM(a) { return('0'+a).slice(-0x2); } function timeLeftM(a) { if (0x0!=startTimeM) { var _aa=new Date(); timeRemainingM=0xe10*startTimeM.getHours()+0x3c*startTimeM.getMinutes()+startTimeM.getSeconds()+timerDurationM-0xe10*_aa.getHours()-0x3c*_aa.getMinutes()-_aa.getSeconds(); var _ab=doubleDigitM(Math.floor(timeRemainingM/0xe10)),_ac=doubleDigitM(Math.floor((timeRemainingM-0xe10*_ab)/0x3c)),_ad=doubleDigitM(timeRemainingM-0xe10*_ab-0x3c*_ac); notify('Time Remaining for Mystery: '+_ab+':'+_ac+':'+_ad,a); } else notifyError('There\'s no timer running for Mystery.',a); } function setTimerL(a) { return clearTimeout(fifteenTimeoutL),clearTimeout(tenTimeoutL),clearTimeout(fiveTimeoutL),clearTimeout(oneTimeoutL),clearTimeout(timerTimeoutL),0x0==a?void(startTimeL=0x0):(a>0x384 && (fifteenTimeoutL=setTimeout(function() { notifyTimerThemeBold(cb.settings.timerWarningIcon+' Log Off has Fifteen minutes remaining! '+cb.settings.timerWarningIcon); } ,0x3e8*(a-0x384))),a>0x258 && (tenTimeoutL=setTimeout(function() { notifyTimerThemeBold(cb.settings.timerWarningIcon+' Log Off has Ten minutes remaining! '+cb.settings.timerWarningIcon); } ,0x3e8*(a-0x258))),a>0x12c && (fiveTimeoutL=setTimeout(function() { notifyTimerThemeBold(cb.settings.timerWarningIcon+' Log Off has Five minutes remaining! '+cb.settings.timerWarningIcon); } ,0x3e8*(a-0x12c))),a>0x3c && (oneTimeoutL=setTimeout(function() { notifyTimerThemeBold(cb.settings.timerWarningIcon+' One minute remaining before Log Off! '+cb.settings.timerWarningIcon); } ,0x3e8*(a-0x3c))),void(timerTimeoutL=setTimeout(function() { notifyTimerThemeBold(cb.settings.timerStopIcon+bullets+'Log Off... Time is up! '+bullets+cb.settings.timerStopIcon),startTimeL=0x0; } ,0x3e8*a))); } function startTimerL(a,b) { var _aa=parseInt(a),_ab=0x3c*_aa; 0x0==startTimeL?_aa>0x0 && -0x1==_aa.toString().indexOf('.')?(timeRemainingL=_ab,timerDurationL=_ab,startTimeL=new Date(),setTimerL(_ab),null!=b && notifyTimerThemeBold(cb.settings.timerStartIcon+' '+b+' has set a Log Off timer for '+_aa+' minutes! '+cb.settings.timerStartIcon)):null!=a?notifyError('\''+a+'\' is not a valid option for /starttimerl.\x0aType \"/hbhelp\u00a0starttimerl\" to see how to use /starttimerl.',b):null==a && notifyError('You did not enter a valid option for /starttimerl.\x0aType \"/hbhelp\u00a0starttimerl\" to see how to use /starttimerl.',b):null!=b && notifyError('Log Off timer running already.',b); } function addTimeL(a,b) { t=parseInt(a); var _aa=0x3c*t; if (t>0x0 && -0x1==t.toString().indexOf('.'))if (0x0!=startTimeL) { startTimeL.setSeconds(startTimeL.getSeconds()+_aa); var _ab=new Date(); timeRemainingL=0xe10*startTimeL.getHours()+0x3c*startTimeL.getMinutes()+startTimeL.getSeconds()+timerDurationL-0xe10*_ab.getHours()-0x3c*_ab.getMinutes()-_ab.getSeconds(),setTimerL(timeRemainingL),notifyTimerThemeBold(cb.settings.timerAddMinusIcon+' '+b+' has added '+t+' minute'+(0x1==t?'':'s')+' to Log Off timer! '+cb.settings.timerAddMinusIcon); } else notifyError('Log Off timer is not running.',b); else null!=a?notifyError('\''+a+'\' is not a valid option for /addtimel.\x0aType \"/hbhelp\u00a0addtimel\" to see how to use /addtimel.',b):null==a && notifyError('You did not enter a valid option for /addtimel.\x0aType \"/hbhelp\u00a0addtimel\" to see how to use /addtimel.',b); } function minusTimeL(a,b) { t=parseInt(a); var _aa=-0x3c*t; if (t>0x0 && -0x1==t.toString().indexOf('.'))if (0x0!=startTimeL) { startTimeL.setSeconds(startTimeL.getSeconds()+_aa); var _ab=new Date(); timeRemainingL=0xe10*startTimeL.getHours()+0x3c*startTimeL.getMinutes()+startTimeL.getSeconds()+timerDurationL-0xe10*_ab.getHours()-0x3c*_ab.getMinutes()-_ab.getSeconds(),setTimerL(timeRemainingL),notifyTimerThemeBold(cb.settings.timerAddMinusIcon+' '+b+' has has subtracted '+t+' minute'+(0x1==t?'':'s')+' from the Log Off timer! '+cb.settings.timerAddMinusIcon); } else notifyError('There is no Log Off timer running.',b); else null!=a?notifyError('\''+a+'\' is not a valid option for /minustimel.\x0aType \"/hbhelp\u00a0minustimel\" to see how to use /minustimel.',b):null==a && notifyError('You did not enter a valid option for /minustimel.\x0aType \"/hbhelp\u00a0minustimel\" to see how to use /minustimel.',b); } function stopTimerL(a) { 0x0!=startTimeL?(setTimerL(0x0),notifyTimerThemeBold(cb.settings.timerStopIcon+' '+a+' has cancelled the Log Off timer. '+cb.settings.timerStopIcon)):notifyError('Log Off timer is not running.',a); } function doubleDigitL(a) { return('0'+a).slice(-0x2); } function timeLeftL(a) { if (0x0!=startTimeL) { var _aa=new Date(); timeRemainingL=0xe10*startTimeL.getHours()+0x3c*startTimeL.getMinutes()+startTimeL.getSeconds()+timerDurationL-0xe10*_aa.getHours()-0x3c*_aa.getMinutes()-_aa.getSeconds(); var _ab=doubleDigitL(Math.floor(timeRemainingL/0xe10)),_ac=doubleDigitL(Math.floor((timeRemainingL-0xe10*_ab)/0x3c)),_ad=doubleDigitL(timeRemainingL-0xe10*_ab-0x3c*_ac); notify('Time Remaining for Log Off: '+_ab+':'+_ac+':'+_ad,a); } else notifyError('There\'s no timer running for Log Off.',a); } function vipArrayPopulate(a) { cbjs.arrayContains(vipArray,a) || vipArray.push(a); } function vip(a,b,c) { if ('a'==c)null==a || ''==a && ' '==a && '\u00a0'==a?notifyError('You didn\'t specify who you want to add to the VIP list.\x0aType \"/hbhelp addvip\" to see how to use /addvip.\x0aAdditionally, check the viplist help section for more info.',b):a!=cb.room_slug || !cbjs.arrayContains(modArray,a) || cbjs.arrayContains(eModArray,a)?cbjs.arrayContains(vipArray,a)?notifyError(a+' is already on the VIP list.',b):(vipArrayPopulate(a),notify('You have added '+a+' to the VIP list.',b),notify(b+' has added you to the VIP list. You will have free access to any future \"CrazyTicket\" show.',a)):notifyError('Room hosts, moderators, and emergency moderators don\'t need to be added to the VIP List.',b); else if ('r'==c)if (null==a || ''==a && ' '==a && '\u00a0'==a)notifyError('You didn\'t specify who you want to remove from the VIP list.\x0aType \"/hbhelp removevip\" to see how to use /removevip.\x0aAdditionally, check the viplist help section for more info.',b); else if (vipArray.length>0x0)if ('all'==a) { notify('You have removed all users from the VIP list.',b); for (var _aa=0x0; _aa<vipArray.length; _aa++)notify(b+' has removed you from the VIP list.',vipArray[_aa]); vipArray.length=0x0; } else cbjs.arrayContains(vipArray,a)?(cbjs.arrayRemove(vipArray,a),notify('You have removed '+a+' from the VIP list.',b),notify(b+' has removed you from the VIP list.',a)):notifyError(a+' is not on the VIP list.',b); else notifyError('The VIP list is currently empty.',b); } function sendPublicNotice(a,b,c,d) { if (null!=a)if (''!=a || ' '!=a || '\u00a0'!=a) { if ('red'==d)switch(c) { case 'div':cb.sendNotice(dashLine+'\x0a� '+a+'\x0a'+dashLine, '', '', '#F00000', 'bold'); break; case 'divh':cb.sendNotice(dashLine+'\x0a� '+a+'\x0a'+dashLine, '', '#FFE5E5', '#F00000', 'bold'); break; case'h':cb.sendNotice('� '+a, '', '#FFE5E5', '#F00000', 'bold'); break; case'':cb.sendNotice('� '+a, '', '', '#F00000', 'bold'); } else if ('default'==d)switch(c) { case 'div':'Theme'==cb.settings.crazyNoteColorscheme?notifyThemePlain(dashLine+'\x0a� '+a+'\x0a'+dashLine):isBlank(cb.settings.crazyNoteBackground) || isBlank(cb.settings.crazyNoteText)?notifyErrorBold('Whoops. You selected a custom color scheme for crazy note but you didn\'t fill in the colors. Reverted to default color scheme.',roomHost):cb.sendNotice(dashLine+'\x0a� '+a+'\x0a'+dashLine, '', '', '#'+cb.settings.crazyNoteText, 'bold'); break; case'divh':'Theme'==cb.settings.crazyNoteColorscheme?notifyTheme(dashLine+'\x0a� '+a+'\x0a'+dashLine):isBlank(cb.settings.crazyNoteBackground) || isBlank(cb.settings.crazyNoteText)?notifyErrorBold('Whoops. You selected a custom color scheme for crazy note but you didn\'t fill in the colors. Reverted to default color scheme.',roomHost):cb.sendNotice(dashLine+'\x0a� '+a+'\x0a'+dashLine, '', '#'+cb.settings.crazyNoteBackground, '#'+cb.settings.crazyNoteText, 'bold'); break; case'h':'Theme'==cb.settings.crazyNoteColorscheme?notifyTheme('� '+a):isBlank(cb.settings.crazyNoteBackground) || isBlank(cb.settings.crazyNoteText)?notifyErrorBold('Whoops. You selected a custom color scheme for crazy note but you didn\'t fill in the colors. Reverted to default color scheme.',roomHost):cb.sendNotice('� '+a, '', '#'+cb.settings.crazyNoteBackground, '#'+cb.settings.crazyNoteText, 'bold'); break; case'':'Theme'==cb.settings.crazyNoteColorscheme?notifyThemePlain('� '+a):isBlank(cb.settings.crazyNoteBackground) || isBlank(cb.settings.crazyNoteText)?notifyErrorBold('Whoops. You selected a custom color scheme for crazy note but you didn\'t fill in the colors. Reverted to default color scheme.',roomHost):cb.sendNotice('� '+a, '', '', '#'+cb.settings.crazyNoteText, 'bold'); } } else notifyError('You can\'t send a blank message.\x0aType a message and try again.',b); else notifyError('You can\'t send a blank message.\x0aType a message and try again.',b); } function sendPrivateNotice(a,b,c) { if (null!=a)if (''!=a || ' '!=a || '\u00a0'!=a) { switch(c) { case 'to_mods':notifyCNmodPlain('� '+b+': '+a, 'onlyMods'),notifyCNmodPlain('� Sent to Mods � '+a,b); } switch(c) { case 'to_caster':notifyCNbroadcasterPlain('? '+b+': '+a,roomHost),notifyCNbroadcasterPlain('? Sent to Broadcaster ? '+a,b); } switch(c) { case 'to_mods_and_caster':notifyCNbroadcastermodPlain('� '+b+': '+a, 'modsAndHost'),notifyCNbroadcastermodPlain('� Sent to Broadcaster and Mods � '+a,b); } switch(c) { case 'to_viewer':null==arguments[0x3] || ''==arguments[0x3] && ' '==arguments[0x3] && '\u00a0'==arguments[0x3]?notifyError('You didn\'t specify who should receive the message.\x0aPlease enter a username and try again.'):'Theme'==cb.settings.crazyNoteColorscheme?(notifyThemePlain('� '+b+' � '+a,arguments[0x3]),notifyThemePlain('� Sent to '+arguments[0x3]+' � '+a,b)):isBlank(cb.settings.crazyNoteBackground) || isBlank(cb.settings.crazyNoteText)?notifyErrorBold('Whoops. You selected a custom color scheme for crazy note but you didn\'t fill in the colors. Reverted to default color scheme.',roomHost):(notify('� '+b+' � '+a,arguments[0x3], '', '#'+cb.settings.crazyNoteText, 'bold'),notify('� Sent to '+arguments[0x3]+' � '+a,b, '', '#'+cb.settings.crazyNoteText, 'bold')); } } else notifyError('You can\'t send a blank message.\x0aType a message and try again.',b); else notifyError('You can\'t send a blank message.\x0aType a message and try again.',b); } function doWhisper(a,b,c,d) { whis=':cb_lightbubble [Whisper from: '+c+']\u00a0 '; var _aa,_ab=null; _aa=0x1==d?0x1:0x2,cb.log(_aa); for (var _ac=_aa; _ac<a.length; _ac++)_ac==_aa?_ab=a[_ac]:_ab+=' '+a[_ac]; whisArray[findWhisper(b)][0x1]=c,b && (_ab?notifyWhisper((whis+_ab).trim(),b):notifyError('You did not specify a message.',c)); } function textReplaceWhisper(a,b,c) { var _aa,_ab=null,_ac=null; if (0x1==c?(_ab=whisArray[findWhisper(b)][0x1],_aa=0x1):(_ab=a[0x1],_aa=0x2),_ab) { for (var _ad=_aa; _ad<a.length; _ad++)_ad==_aa?_ac=a[_ad]:_ac+=' '+a[_ad]; _ac && (_ac=':cb_darkbubble [Whisper to: '+_ab.toLowerCase()+']\u00a0 '+_ac); } return _ab && _ac || (_ac=0x1==c?'Reply not sent.':'Whisper not sent.'),_ac; } function sendWhisper(a,b,c,d) { var _aa; if (a[0x1]?_aa=a[0x1].toLowerCase():notifyError('You did not enter a whisper recipient.',b),_aa!=b)if (cbjs.arrayContains(silenceArray,b))notifyError('You do not have whispering privileges. Your message was not sent.',b); else if (!cbjs.arrayContains(ignoreArray[findIgnorer(_aa)],b) || c)switch(parseInt(ignoreArray[findIgnorer(_aa)][0x1])) { case 0x0:doWhisper(a,_aa,b); break; case 0x1:d>0x1 || c?doWhisper(a,_aa,b):notifyError(_aa+' is ignoring whispers from greys.',b); break; case 0x2:d>0x2 || c?doWhisper(a,_aa,b):notifyError(_aa+' is ignoring whispers from greys and light blues who haven\'t tipped in the room.',b); break; case 0x3:d>0x3 || c?doWhisper(a,_aa,b):notifyError(_aa+' is ignoring whispers from all members who haven\'t tipped in the room.',b); break; case 0x4:c?doWhisper(a,_aa,b):notifyError(_aa+' is ignoring whispers.',b); } else notifyError(_aa+' is ignoring whispers from you. Your message was not sent.',b); else notifyError('Talking to yourself is a little odd... You need to consult a therapist!',b); } function sendReply(a,b) { var _aa=whisArray[findWhisper(b)][0x1]; cbjs.arrayContains(silenceArray,b) && notifyError('You do not have whispering privileges. Your message was not sent.',b),cbjs.arrayContains(ignoreArray[findIgnorer(_aa)],b)?notifyError(_aa+' is ignoring whispers from you. Your message was not sent.',b):''!=_aa?doWhisper(a,_aa,b,!0x0):notifyError('No one has whispered you.',b); } function ignoreUser(a,b) { cbjs.arrayContains(ignoreArray[findIgnorer(b)],a)?a==b?notifyError('You can\'t ignore yourself. You need to consult a therapist.',b):notifyError('You are already ignoring that user\'s whispers.',b):a?(ignoreArray[findIgnorer(b)][ignoreArray[findIgnorer(b)].length]=a,notify('You are now ignoring whispers from '+a+'.',b),notify('Remember, the room host, moderators, and fan club members will always be able to whisper you!',a)):notifyError('You did not specify a user to ignore. Type \"/hbhelp\u00a0ignore\" to see how to use /ignore.',b); } function unignoreUser(a,b) { a==b?notifyError('My, you are an odd one, aren\'t you?',b):cbjs.arrayContains(ignoreArray[findIgnorer(b)],a)?(cbjs.arrayRemove(ignoreArray[findIgnorer(b)],a),notify('You are no longer ignoring whispers from '+a,b)):a?notifyError(a+' is not being ignored. There is no need to unignore '+a,b):notifyError('You did not specify a user to unignore. Type \"/hbhelp\u00a0unignore\" to see how to use /unignore.',b); } function setTipTitles(a,b) { var _aa=''; 'Yes'==cb.settings.kingTipper && a==currentKing && (_aa=' '+cb.settings.crownIcon+' '); var _ab=_aa+'|'+getUserTotal(a)+'| '+b; return _ab; } function emod(a,b,c) { b && (b=b.toLowerCase()), 'add'==a?cbjs.arrayContains(emodArray,b)?notifyError(b+' has already been granted emergency moderator powers.',c):(emodArrayPopulate(b),modAndEmodArrayPopulate(b),modBlockMsgArrayPopulate(b),notify('Emergency moderator powers have been granted to '+b,c),notify('You have been granted emergency moderator powers by '+c,b)):'remove'==a?cbjs.arrayContains(emodArray,b)?(emodArrayDepopulate(b),notify('Emergency moderator powers have been removed from '+b,c),notify('Your emergency moderator powers have been removed by '+c,b)):notifyError(b+' has not been granted emergency moderator powers.',c):a?notifyError(a+' is not a valid option for /emod. Type \"/hbhelp\u00a0emod\" to see how to use /emod.',c):notifyError('You did not enter a valid option for /emod. Type \"/hbhelp\u00a0emod\" to see how to use /emod.',c); } function blockNotice(a,b) { 'on'==a?cbjs.arrayContains(modBlockMsgArray,b)?notifyError('Your Blocked Message notices are already turned on',b):(modBlockMsgArrayPopulate(b),notify('You have turned ON Blocked Message notices. To turn them back off again, type: /blocknotice\u00a0off',b)):'off'==a?cbjs.arrayContains(modBlockMsgArray,b)?(modBlockMsgArrayDepopulate(b),notify('You have turned OFF Blocked Message notices. To turn them back on again, type: /blocknotice\u00a0on',b)):notifyError('Your Blocked Message notices are already turned off',b):a?notifyError(a+' is not a valid option for /blocknotice. Type \"/hbhelp\u00a0blocknotice\" to see how to use /blocknotice.',b):notifyError('You did not enter a valid option for /blocknotice. Type \"/hbhelp\u00a0blocknotice\" to see how to use /blocknotice.',b); } function kingSpam() { clearTimeout(kingTimeout),kingTimeout=setTimeout(kingSpamTimer,kingTimer*minuteMS); } function kingSpamTimer() { if (kingTip<kingMin)var _aa=kingMin; else var _aa=kingTip+0x1; 0x1==kingTipperSpam && (notifyTheme(' '+cb.settings.crownIcon+' Tip a total of '+_aa+' to be the new '+cb.settings.kingMessage+'! '+cb.settings.crownIcon),kingSpam()); } function showLeaders(a,b) { var _aa,_ab=''; if (!tipArray.length)return void notifyError('No tips yet',b); for (sortTipArray(),_aa=0x0; _aa<a && _aa<tipArray.length; _aa+=0x1)_ab+=(_aa?'\x0a':'')+(_aa+0x1)+'.\u00a0\u00a0'+tipArray[_aa].sUser+'\u00a0\u00a0('+tipArray[_aa].nTotal+' tokens)'; cb.setTimeout(function() { notifyHeaderThemeBold(cb.settings.crownIcon+bullets+' Daily Leader Board '+bullets+cb.settings.crownIcon,b); } ,0x1f4),cb.setTimeout(function() { notifyLeaderTheme(_ab+'\x0a',b); } ,0x5dc); } function ldrSpam() { clearTimeout(ldrTimeout),ldrTimeout=setTimeout(ldrSpamTimer,ldrTimer*minuteMS); } function ldrSpamTimer() { 'Yes'==cb.settings.leaderBoard && 0x1==leaderboardSpam && (tipArray.length && showLeaders(0x5, ''),ldrSpam()); } function showLeaderBoard(a) { 'Yes'==cb.settings.leaderBoard?showLeaders(0xa,a):notifyError('The room host has decided not to use the daily Leaderboard feature.',a); } function notifierSpam() { notifierTimeout=setTimeout(function() { 0x1==notifierSpamTGL && noticeArray.length && (sendRotating(),notifierSpam()); } ,notifierTimer*minuteMS); } function addNotice(a) { isBlank(a) || (a=a.replace(/((\\|\/)n|\{newline\})/gi, '\x0a'),noticeArray.push(a)); } function parseRotating() { addNotice(cb.settings.spamMessage1),addNotice(cb.settings.spamMessage2),addNotice(cb.settings.spamMessage3),addNotice(cb.settings.spamMessage4),addNotice(cb.settings.spamMessage5),addNotice(cb.settings.spamMessage6),addNotice(cb.settings.spamMessage7),addNotice(cb.settings.spamMessage8),addNotice(cb.settings.spamMessage9),addNotice(cb.settings.spamMessage10); } function sendRotating() { noticeArray.length && (noticeArray[noticeNum] && notifyThemePlain(noticeArray[noticeNum]),noticeNum+=0x1,noticeNum>=noticeArray.length && (noticeNum=0x0)); } function dospamWordlist(a) { var _aa=a.trim().replace(/([^\w\s\u0027\u2019\[\]]|_)/gi, ' '),_ab=null,_ac=new RegExp('((^|\\s)[^\\s]\\s[^\\s]\\s[^\\s]($|\\s))', 'i'),_ad=new RegExp('\\b(s+k+(y|i)*p+e|s+k+y*p|(f+r+e+e|unlimited).*t+o+k+e+n|t+o+k+e+n+s.*(f+r+e+e|generator)|(free)|(chaturbate)|(CB)|(camgasm)|(erotimo)|(freecambook)|(webcam23)|(hotjenny)|(fucktubate)|(gaysexrooms)|(fastsexnow)|(alva lanus)|(Delorge942)|(Glasford597)|(hot707man)|sk .*y p e|\\[LEAK(ED)*\\]|(SwipeGirls)|\\[GET\\]|(kikcams)|(swipegirls)|(EllaGo)|(XCLIT)|(cialis)|(viagra)|(YesPills)|(pornmeds)|(dateflirter)|(kikfuck)|(K.I.K)|(Aly.Sky)\\b|\\b(www)|(http)|(com)|(dot)|(cam)|(cams)|(cam2)|(c2c)|(cam2cam)|(pr0file)|(bi0)|(clk)|(klk)|(lkkl)|(chk)|(chrb)|(hola)|(bonjour)|(tap)|(open)|(c?mchats)|(join)|(club))\\b', 'i'),_ae=new RegExp('\\b((May b eSex?)|(Ma y beSex?)|(M aybeSex?)|(M aybe Sex?)|(Ma ybeSex?)|(Ma ybe Sex?)|(May beSex?)|(Mayb eSex?)|(Mayb e Sex?)|(May be Sex?)|(MaybeSex?)|(Maybe Sex?)|(May b eFuck?)|(Ma y beFuck?)|(M aybeFuck?)|(M aybe Fuck?)|(Ma ybeFuck?)|(Ma ybe Fuck?)|(May beFuck?)|(Mayb eFuck?)|(Mayb e Fuck?)|(May be Fuck?)|(MaybeFuck?)|(Maybe Fuck?)|(Who Fuck Me)|(Fuck Me)|(Fuckme)|(Who Will Fuck Me)|(Who Fuckme)|(Whofuckme)|(Whofuck Me)\\b|\\b(Watch My Page)|(add me)|(nice view)|(i am very sexy girl)|(guys watch my)|(tap my show)|(my chat)|(m m)|(mm rubbing)|(watch me)|(i am new on chrb)|(new here)|(im new)|(i am new)|(i m new)|(i n new)|(im newbie)|(i am newbie)|(i m newbie)|(i n newbie)|(i am wet)|(i am so wet)|(im wet)|(i m wet)|(i m so wet)|(i n wet)|(i n so wet)|(im so wet)\\b|\\b(im hot)|(i m hot)|(i n hot)|(i am hot)|(i am so hot)|(im so hot)|(i m so hot)|(i n so hot)|(my profile)|(see my profile)|(see my bio)|(look in my profile)|(look at my profile)|(look in my bio)|(look at my bio)|(Watch)|(hot and delicious)|(delicious and hot)|(I\'m fingering)|(I can\'t stop fingering)|(I can\'t wait I\'m fingering)\\b|\\b(check my profile)|(want to date)|(check my bio)|(click on me)|(click my profile)|(click on my profile)|(click on my bio)|(tap my bio)|(tap my profile)|(i just signed)|(link in my bio)|(link in my profile)|(want free tokens)|(free chaturbate tokens)|(tok??en ge?ner?at??or)|(Cant tip)|(see my page for free tokens)|(open my bio)|(open my profile)|(open me now))\\b', 'i'); switch(!0x0) { case-0x1!=_aa.search(_ac):_ab='Spam Wordlist 3'; break; case-0x1!=_aa.search(_ad):_ab='Spam Wordlist 1'; break; case-0x1!=_aa.search(_ae):_ab='Spam Wordlist 2'; } return _ab; } function dogreyWordlist(a) { var _aa=a.trim().replace(/([^\w\s\u0027\u2019\[\]]|_)/gi, ' '),_ab=null,_ac=new RegExp('[^\\x00-\\xAE\\u2000-\\u206F]'),_ad=new RegExp('\\b(b+by|b+(a|e)*b+(y|e)*)\\b', 'i'),_ae=new RegExp('\\b(s+o+l+e+s*|t+o+e+s*)\\b|(f+e+e+t|f+o+o+t|p+e+d+i+c+u|f+o+t+j+o+b)', 'i'),_af=new RegExp('\\b([a-g|i-z]*(h+u+)*m+m+h*|u+f+|#+)\\b', 'i'),_ag=new RegExp('\\b(s+q+u+i+r+t|k+e+e+p|s+m+e+l+l|s+t+i+c+k|p+l+a+y|s+l+a+p|s+p+a+n+k|f+a+k+e|f+a+c+k|t+i+p|t+i+p+s|a+s+s+h+o+l+e|a+n+a+l|h+o+l+e|c+u+n+t|w+a+n+t|w+a+n+n+a|m+o+r+e|e+a+t|t+a+s+t+e|t+a+s+t+i+n+g|t+a+s+t+y|l+i+c+k|l+i+c+k+i+n+g|t+u+r+d|e+n+e+m+a|d+e+f+e+c+a+t|a+t+m|s+h+i+t|s+h+a+r+t|c+r+a+p|p+o+o+p|p+o+o|p+i+s+s|f+a+r+t|d+a+d|d+a+u+g+h+t+e+r|s+i+s+t+e+r|b+r+o+t+h+e+r|r+a+p+e|r+a+p+i+s+t|s+l+u+t|s+k+a+n+k|w+h+o+r+e|b+i+t+c+h|b+o+r+e+d|b+o+r+i+n+g|d+i+e|f+a+t|u+g+l+y|a+r+b+y+s|r+o+a+s+t|b+e+e+f|r+o+a+s+t+b+e+e+f|b+u+r+g+e+r)\\b|\\b(m+e+a+t+y|m+e+a+t|t+r+a+n+s|t+r+a+n+n+y|t+r+a+n|d+i+c+k|d+i+c+k+s|b+o+n+e+r|c+o+k+k|c+o+c+k+k|c+o+c+k|c+o+c+k+s|w+a+n+k|j+e+r+k|j+e+r+k+i+n+g|f+c+k|p+o+u+n+d|s+h+o+v+e|s+m+a+c+k|f+i+n+g+e+r|f+i+n+g+e+r+i+n+g|b+l+o+w|b+l+o+w+j+o+b|o+p+e+n|d+o+g+g+y|d+o+g+g+i+e|s+h+o+w|f+l+a+s+h|h+a+r+d|h+a+r+d+e+r|h+o+r+n+y|c+2+c|p+r+i+v+a+t+e|p+v+t|z+o+o+m|s+p+r+e+a+d|g+a+p+e|b+a+n+g|c+u+m|f+u+c+k|f+u+c+k+e+r|f+u+c+k+i+n+g|d+e+e+p|d+e+e+p+e+r|d+e+p+e+r|d+p|f+i+s+t|s+t+r+o+k|w+a+n+k|f+a+p|b+e+a+t|d+e+s+t+r+o+y|k+i+l+l|s+h+o+o+t|s+h+o+t|t+h+r+o+b|e+x+p+lo+d+e)\\b|\\b(s+u+c+k|s+u+c+k+i+n+g|p+u+t|p+u+s+h|b+i+g|h+u+g+e|p+u+s+s+y|p+u+s+s+i|a+s+s|o+f+f)\\b', 'i'),_ah=new RegExp('\\b((barack)|(obama)|(hillary)|(clinton)|(trump)|(brexit)|(anarchist)|(socialist)|(socialism)|(communist)|(communism)|(capitalist)|(capitalism)|(liberals)|(conservatives)|(vote)|(dnc)|(dnp)|(dpp)|(sdp)|(dems)|(democrat)|(democrats)|(gop)|(rnc)|(reps)|(republican)|(republicans)|(government)|(obamacare)|(affordable health care)|(vice)|(president)|(hitler)|(putin))\\b', 'i'),_ai=new RegExp('\\b((holy)|(pope)|(church)|(jesus)|(god)|(amen)|(christian)|(christians)|(anti)|(christ)|(antichrist)|(heathen)|(heatherns)|(athiest)|(atheists)|(atheism)|(jew)|(jews)|(muslim)|(muslims)|(isil)|(isis)|(gihad)|(jihad)|(infidel)|(buddha)|(buddism)|(satan)|(satanic)|(satanism))\\b', 'i'),_aj=new RegExp('\\b((nigger)|(nigga)|(negro)|(raghead)|(towelhead)|(burrhead)|(nappy)|(headed)|(sandnigger)|(african)|(brotha)|(bruh)|(brah)|(coon)|(jig)|(wigger)|(redneck)|(hillbilly)|(cracker)|(honkey)|(honky)|(pawg)|(blm)|(blacklivesmatter)|(blackpanthers)|(naacp)|(kkk)|(bbc)|(bwc))\\b', 'i'); switch(!0x0) { case a.length<=0x1 || a.length>0x1f4:_ab='Grey Wordlist'; break; case-0x1!=_aa.search(_ac):_ab='Grey Wordlist'; break; case-0x1!=_aa.search(_ad):_ab='Grey Wordlist'; break; case-0x1!=_aa.search(_ae):_ab='Grey Wordlist'; break; case-0x1!=_aa.search(_af):_ab='Grey Wordlist'; break; case-0x1!=_aa.search(_ag):_ab='Grey Wordlist'; break; case-0x1!=_aa.search(_ah):_ab='Grey Wordlist'; break; case-0x1!=_aa.search(_ai):_ab='Grey Wordlist'; break; case-0x1!=_aa.search(_aj):_ab='Grey Wordlist'; } return _ab; } function parsecustomWordlist() { isBlank(cb.settings.customWordlist) || (customWordlistRegex=cb.settings.customWordlist.replace(/^(\s|,|\|)+|(\s|,|\|)+$/gm, ''),customWordlistRegex=customWordlistRegex.replace(/\s*(,|\|)\s*/gm, '|'),customWordlistRegex=customWordlistRegex.replace(/[^\w|\s]/gm, ' '),customWordlistRegex=customWordlistRegex.replace(/(\w)/gm, '$1+'),customWordlistRegex=customWordlistRegex.replace(/\s+/gm, '\\s*')); } function docustomWordlist(a) { var a=a.replace(/[^\w]|_/gi, ''),_ab=new RegExp('('+customWordlistRegex+')', 'i'); return-0x1!=a.search(_ab) || -0x1!=a.replace(/[^\w]|\d|_/gi, '').search(_ab)?'blocked':void 0x0; } function addWord(a) { cb.settings.customWordlist+=','+a,parsecustomWordlist(); } function changefcIcon(a) { cb.settings.fanclubIcon=a; } function changesfcIcon(a) { cb.settings.specialfanclubIcon=a; } function changecrownIcon(a) { cb.settings.crownIcon=a; } function fanclubToggle(a,b) { 'on'==a?'Yes'==cb.settings.fanclubToggle?notifyError('The fan club is already turned on.',b):(cb.settings.fanclubToggle='Yes',notify('You have turned on the fan club.',b)):'off'==a?'No'==cb.settings.fanclubToggle?notifyError('The fan club is already turned off.',b):(cb.settings.fanclubToggle='No',notify('You have turned off the fan club.',b)):null!=a?notifyError(a+' is not a valid option for /fct.',b):null==a && notifyError('You did not enter a valid option for /fct.',b); } function specialfanclubToggle(a,b) { 'on'==a?'Yes'==cb.settings.specialfanclubToggle?notifyError('The special fan club is already turned on.',b):(cb.settings.specialfanclubToggle='Yes',notify('You have turned on the special fan club.',b)):'off'==a?'No'==cb.settings.specialfanclubToggle?notifyError('The special fan club is already turned off.',b):(cb.settings.specialfanclubToggle='No',notify('You have turned off the special fan club.',b)):null!=a?notifyError(a+' is not a valid option for /sfct.',b):null==a && notifyError('You did not enter a valid option for /sfct.',b); } function whisperToggle(a,b) { 'on'==a?'Yes'==cb.settings.whisperToggle?notifyError('The whisper function is already turned on.',b):(cb.settings.whisperToggle='Yes',notify('You have turned on the whisper function.',b)):'off'==a?'No'==cb.settings.whisperToggle?notifyError('The whisper function is already turned off.',b):(cb.settings.whisperToggle='No',notify('You have turned off the whisper function.',b)):null!=a?notifyError(a+' is not a valid option for /wt.',b):null==a && notifyError('You did not enter a valid option for /wt.',b); } function spamWordlistToggle(a,b) { 'on'==a?'Yes'==cb.settings.spamWordlistToggle?notifyError('The spam wordlist is already turned on.',b):(cb.settings.spamWordlistToggle='Yes',notify('You have turned on the spam wordlist.',b)):'off'==a?'No'==cb.settings.spamWordlistToggle?notifyError('The spam wordlist is already turned off.',b):(cb.settings.spamWordlistToggle='No',notify('You have turned off the spam wordlist.',b)):null!=a?notifyError(a+' is not a valid option for /swlt.',b):null==a && notifyError('You did not enter a valid option for /swlt.',b); } function customWordlistToggle(a,b) { 'on'==a?'Yes'==cb.settings.customWordlistToggle?notifyError('The custom wordlist is already turned on.',b):(cb.settings.customWordlistToggle='Yes',notify('You have turned on the custom wordlist.',b)):'off'==a?'No'==cb.settings.customWordlistToggle?notifyError('The custom wordlist is already turned off.',b):(cb.settings.customWordlistToggle='No',notify('You have turned off the custom wordlist.',b)):null!=a?notifyError(a+' is not a valid option for /cwlt.',b):null==a && notifyError('You did not enter a valid option for /cwlt.',b); } function greyWordlistToggle(a,b) { 'on'==a?'Yes'==cb.settings.greyWordlistToggle?notifyError('The grey wordlist is already turned on.',b):(cb.settings.greyWordlistToggle='Yes',notify('You have turned on the grey wordlist.',b)):'off'==a?'No'==cb.settings.greyWordlistToggle?notifyError('The grey wordlist is already turned off.',b):(cb.settings.greyWordlistToggle='No',notify('You have turned off the grey wordlist.',b)):null!=a?notifyError(a+' is not a valid option for /gwlt.',b):null==a && notifyError('You did not enter a valid option for /gwlt.',b); } function limitCamToggle(a,b) { 'on'==a?'on'==limitCam?notifyError('The limit cam is already turned on.',b):(limitCam='on',cb.limitCam_start(hm),notifyError(mm,cb.room_slug),notify('You have turned on the limit cam.',b)):'off'==a?'off'==limitCam?notifyError('Limit cam is already turned off.',b):(limitCam='off',cb.limitCam_stop(),notify('You have turned off the limit cam.',b)):null!=a?notifyError(a+' is not a valid option for /lct.',b):null==a && notifyError('You did not enter a valid option for /lct.',b); } function tipMenuToggle(a,b) { 'on'==a?'Yes'==cb.settings.tipMenuToggle?notifyError('The tip menu is already turned on.',b):(cb.settings.tipMenuToggle='Yes',notify('You have turned on the tip menu.',b)):'off'==a?'No'==cb.settings.tipMenuToggle?notifyError('The tip menu is already turned off.',b):(cb.settings.tipMenuToggle='No',notify('You have turned off the tip menu.',b)):null!=a?notifyError(a+' is not a valid option for /tmt.',b):null==a && notifyError('You did not enter a valid option for /tmt.',b); } function tipMenuNotifierToggle(a,b) { 'on'==a?0x1==tipMenuSpam?notifyError('The tip menu is already turned on.',b):(tipMenuSpam=0x1,tipmenuNotifierSpam(),notify('You have turned on the tip menu.',b)):'off'==a?0x0==tipMenuSpam?notifyError('The tip menu is already turned off.',b):(tipMenuSpam=0x0,notify('You have turned off the tip menu.',b)):null!=a?notifyError(a+' is not a valid option for /tmnt.',b):null==a && notifyError('You did not enter a valid option for /tmnt.',b); } function tipMenuMessageNotifierToggle(a,b) { 'on'==a?0x1==tipMenuMessageSpam?notifyError('The tip menu messages are already turned on.',b):(tipMenuMessageSpam=0x1,notify('You have turned on the tip menu messages.',b)):'off'==a?0x0==tipMenuMessageSpam?notifyError('The tip menu messages are already turned off.',b):(tipMenuMessageSpam=0x0,notify('You have turned off the tip menu messages.',b)):null!=a?notifyError(a+' is not a valid option for /tmmt.',b):null==a && notifyError('You did not enter a valid option for /tmmt.',b); } function fanclubtipsToggle(a,b) { 'on'==a?'Yes'==cb.settings.fanclubtips?notifyError('Fan club tips is already turned on.',b):(cb.settings.fanclubtips='Yes',notify('You have turned on fan club tips.',b)):'off'==a?'No'==cb.settings.fanclubtips?notifyError('Fan club tips is already turned off.',b):(cb.settings.fanclubtips='No',notify('You have turned off fan club tips.',b)):null!=a?notifyError(a+' is not a valid option for /fctip.',b):null==a && notifyError('You did not enter a valid option for /fctip.',b); } function specialfanclubtipsToggle(a,b) { 'on'==a?'Yes'==cb.settings.specialfanclubtips?notifyError('Special fan club tips is already turned on.',b):(cb.settings.specialfanclubtips='Yes',notify('You have turned on special fan club tips.',b)):'off'==a?'No'==cb.settings.specialfanclubtips?notifyError('Special fan club tips is already turned off.',b):(cb.settings.specialfanclubtips='No',notify('You have turned off special fan club tips.',b)):null!=a?notifyError(a+' is not a valid option for /sfctip.',b):null==a && notifyError('You did not enter a valid option for /sfctip.',b); } function invalidCommandToggle(a,b) { 'on'==a?'Yes'==cb.settings.invalidToggle?notifyError('Invalid command error messages are already turned on.',b):(cb.settings.invalidToggle='Yes',notify('You have turned on invalid command error messages.',b)):'off'==a?'No'==cb.settings.invalidToggle?notifyError('Invalid command error messages are already turned off.',b):(cb.settings.invalidToggle='No',notify('You have turned off invalid command error messages.',b)):null!=a?notifyError(a+' is not a valid option for /ict.',b):null==a && notifyError('You did not enter a valid option for /ict.',b); } function autoSilenceSpamToggle(a,b) { 'on'==a?'Yes'==cb.settings.autoSilenceSpamToggle?notifyError('Auto Silence Spam is already turned on.',b):(cb.settings.autoSilenceSpamToggle='Yes',notify('You have turned on Auto Silence Spam.',b)):'off'==a?'No'==cb.settings.autoSilenceSpamToggle?notifyError('Auto Silence Spam is already turned off.',b):(cb.settings.autoSilenceSpamToggle='No',notify('You have turned off Auto Silence Spam.',b)):null!=a?notifyError(a+' is not a valid option for /asst.',b):null==a && notifyError('You did not enter a valid option for /asst.',b); } function niceList(a,b,c) { a?(a=a.toLowerCase(), 'a'==c?cbjs.arrayContains(niceArray,a)?notifyError(a+' is already on the nice list.',b):(niceArrayPopulate(a),notify('You have added '+a+' to the nice list.',b),notify(b+' has added you to the nice list. You will be able to chat and use graphics regardless of the global room settings. Thank you for being nice!',a)):'r'==c && (cbjs.arrayContains(niceArray,a)?(niceArrayDepopulate(a),notify('You have removed '+a+' from the nice list.',b),notify(b+' has removed you from the nice list.',a)):notifyError(a+' is not on the nice list.',b))):notifyError('Uh oh. You didn\'t specify a user.\x0aType \"/hbhelp\u00a0nicelist\" to see how to use the nice list.',b); } function greyList(a,b,c) { a?(a=a.toLowerCase(), 'a'==c?cbjs.arrayContains(greyArray,a)?notifyError(a+' is already on the grey list.',b):(greyArrayPopulate(a),notify('You have added '+a+' to the grey list.',b)):'r'==c && (cbjs.arrayContains(greyArray,a)?(greyArrayDepopulate(a),notify('You have removed '+a+' from the grey list.',b)):notifyError(a+' is not on the grey list.',b))):notifyError('Uh oh. You didn\'t specify a user.\x0aType \"/hbhelp\u00a0greylist\" to see how to use the grey list.',b); } function kingSpamToggle(a,b) { 'Yes'!=cb.settings.kingTipper?notifyError('The room host has decided not to use the daily King Tipper feature',b):'on'==a?0x1==kingTipperSpam?notifyError('The daily King Tipper spam is already turned on.',b):(kingTipperSpam=0x1,kingSpam(),notify('You have turned on daily King Tipper spam.',b)):'off'==a?0x0==kingTipperSpam?notifyError('The daily King Tipper spam is already turned off.',b):(kingTipperSpam=0x0,notify('You have turned off the daily King Tipper spam.',b)):null!=a?notifyError(a+' is not a valid option for /kingspam.\x0aType \"/hbhelp\u00a0kingspam\" to see how to use /kingspam.',b):null==a && notifyError('You did not enter a valid option for /kingspam.\x0aType \"/hbhelp\u00a0kingspam\" to see how to use /kingspam.',b); } function notifierSpamToggle(a,b) { 'on'==a?0x1==notifierSpamTGL?notifyError('The Notifier spam is already turned on.',b):(notifierSpamTGL=0x1,notify('You have turned on the Notifier spam.',b)):'off'==a?0x0==notifierSpamTGL?notifyError('The Notifier spam is already turned off.',b):(notifierSpamTGL=0x0,notify('You have turned off the Notifier spam.',b)):null!=a?notifyError(a+' is not a valid option for /notifierspam.\x0aType \"/hbhelp\u00a0notifierspam\" to see how to use /notifierspam.',b):null==a && notifyError('You did not enter a valid option for /notifierspam.\x0aType \"/hbhelp\u00a0notifierspam\" to see how to use /notifierspam.',b); } function leaderboardSpamToggle(a,b) { 'on'==a?0x1==leaderboardSpam?notifyError('The daily Leaderboard spam is already turned on.',b):(leaderboardSpam=0x1,ldrSpam(),notify('You have turned on the daily Leaderboard spam.',b)):'off'==a?0x0==leaderboardSpam?notifyError('The daily Leaderboard spam is already turned off.',b):(leaderboardSpam=0x0,notify('You have turned off the daily Leaderboard spam.',b)):null!=a?notifyError(a+' is not a valid option for /leaderboardspam.\x0aType \"/hbhelp\u00a0leaderboardspam\" to see how to use /leaderboardspam.',b):null==a && notifyError('You did not enter a valid option for /leaderboardspam.\x0aType \"/hbhelp\u00a0leaderboardspam\" to see how to use /leaderboardspam.',b); } function isBlank(a) { var _aa; return a && (_aa=a.trim()),null==_aa || ''==_aa || '[Optional'==_aa.substr(0x0,0x9)?!0x0:!0x1; } function isValidColor(a) { var _aa=a,_ab='0123456789abcdefABCDEF',_ac=!0x0; if ('#'==_aa.charAt(0x0) && (_aa=_aa.substr(0x1)),_aa && 0x6==_aa.length)for (var _ad=0x0; _ad<0x6; _ad++)-0x1==_ab.indexOf(_aa.charAt(_ad)) && (_ac=!0x1); else _ac=!0x1; return _ac?!0x0:(notifyErrorBold('\"'+a+'\" is not a valid color option.',roomHost),notifyError('Use html-color-codes.info to find the code for the color you want.\x0aReverting to default color.',roomHost),!0x1); } function setColor() { var _aa=cb.settings.colorscheme,_ab=cb.settings.darkcolor.trim(),_ac=cb.settings.lightcolor.trim(); _aa && 'Custom'==_aa.substr(0x0,0x6)?isBlank(_ac) && isBlank(_ab)?notifyErrorBold('Whoops. You selected a custom color scheme but you didn\'t fill in the colors. Reverted to default color scheme.',roomHost):isBlank(_ab)?notifyErrorBold('Whoops. You selected a custom color scheme but you didn\'t select a text color. Reverted to default color scheme.',roomHost):isBlank(_ac) && !isBlank(_ab)?(_ab && '#'!=_ab.charAt(0x0) && (_ab='#'+_ab),isValidColor(_ab) && (theme_dark=_ab,theme_light=white)):isBlank(_ac) || isBlank(_ab) || (_ab && '#'!=_ab.charAt(0x0) && (_ab='#'+_ab),_ac && '#'!=_ac.charAt(0x0) && (_ac='#'+_ac),isValidColor(_ab) && isValidColor(_ac) && (theme_dark=_ab,theme_light=_ac)):(isBlank(_ab) && isBlank(_ac) || notifyErrorBold('You defined custom colors, but your color scheme is set to \"'+_aa+'\". In order to use your custom colors, please set your color scheme to \"Custom\"',roomHost), 'Purple on Purple'==_aa?(theme_dark=purple_dark,theme_light=purple_light):'Pink on Grey'==_aa?(theme_dark=pink_dark,theme_light=pink_light):'Black on Blue'==_aa?(theme_dark=blue_dark,theme_light=blue_light):'Blue on Grey'==_aa?(theme_dark=dark_blue_dark,theme_light=dark_blue_light):'Black on Green'==_aa?(theme_dark=green_dark,theme_light=green_light):'Blue on Green'==_aa?(theme_dark=chartreuse_dark,theme_light=chartreuse_light):'Orange on Black'==_aa?(theme_dark=halloween_dark,theme_light=halloween_light):'Green on Red'==_aa?(theme_dark=christmas_dark,theme_light=christmas_light):'Red on Pink'==_aa && (theme_dark=valentines_dark,theme_light=valentines_light)); } function help(a,b) { var _aa=0x0; switch(null==a && (a=''),a) { case'':_aa=0x1,notifyHelpBold(bullets+' MrBot Help Menu '+bullets,b),notify('Type \"/hbhelp\u00a0x\", where x is one of the following choices, for more detailed information.\x0aEx: /hbhelp\u00a0commands',b),notifyHelpPlain('commands\x0anicelist\x0agreylist\x0aabout',b); break; case 'commands':_aa=0x1,notifyHelpBold(bullets+' MrBot Command List '+bullets,b),notify('Type \"/hbhelp\u00a0x\", where x is one of the following commands, for more detailed information.\x0aEx: /hbhelp\u00a0silencelevel',b),notifyHelpPlain('/greyson\x0a/greysoff\x0a/silencelevel\x0a/graphiclevel\x0a/silence\x0a/unsilence\x0a/silencelast\x0a/starttimerg\x0a/stoptimerg\x0a/addtimeg\x0a/minustimeg\x0a/timeleftg\x0a/starttimers\x0a/stoptimers\x0a/addtimes\x0a/minustimes\x0a/timelefts\x0a/starttimerm\x0a/stoptimerm\x0a/addtimem\x0a/minustimem\x0a/timeleftm\x0a/starttimerl\x0a/stoptimerl\x0a/addtimel\x0a/minustimel\x0a/timeleftl\x0a/n\x0a/note\x0a/notice\x0a/cn\x0a/cnd\x0a/cndh\x0a/cnh\x0a/tb\x0a/tm\x0a/tbm\x0a/tv\x0a/addnotice\x0a/removenotice\x0a/shownotices\x0a/noticetimer\x0a/whisper\x0a/reply\x0a/ignore\x0a/unignore\x0a/ignorelevel\x0a/emod\x0a/addnice\x0a/removenice\x0a/addgrey\x0a/removegrey\x0a/addword\x0a/leaderboard\x0a/tipmenu\x0a/viplist\x0a/addvip\x0a/removevip\x0a/nickmod\x0a/nickname\x0a/nicknames\x0a/kingspam\x0a/usl\x0a/unsilencelast',b); break; case 'nicelist':notifyHelpBold(bullets+'The \"Nice\" List'+bullets,b),notify('Sometimes, there are users whose comments are desirable, but they either do not have tokens or do not tip frequently. When rooms get rowdy, hosts and mods are forced to do things like silence users without tokens or who have not tipped and those groups often includes the users whose comments hosts would like to see. To fix this problem, hosts and mods can add users to the Nice List. Users who are on the nice list can send messages regardless of the global silence setting.',b),_aa=0x1; break; case'greylist':_aa=0x1,notifyHelpBold(bullets+'The \"Grey\" List'+bullets,b),notify('Sometimes, there are users whose comments are annoying, in spite of the fact that they may have tokens or even tip. It isn\'t always desireable to silence these people entirely, especially if they\'ve been tipping, but it can be useful to apply the same word list restrictions that apply to greys, so that the more annoying messages don\'t get through to the room. To fix this problem, hosts and mods can add users to the \"Grey\" List. Users who are on the grey list will have their messages subjected to the wordlists that apply to greys.',b),notify('',b); break; case 'viplist':_aa=0x1,notifyHelpBold(bullets+'The VIP List'+bullets,b),notify('Sometimes, there\'re users who are trusted regulars, and then the room host decides to do a \"CrazyTicket\" show, but these users don\'t have tokens to buy a ticket. It isn\'t always desirable (and it may even seem unfair) to leave these users out of the show. To fix this problem, hosts and mods can add these users to the VIP List. Users who are on the VIP List will have free access to any future CrazyTicket show, provided the list is exported to the app via the \"/export\" command.\x0aTo show the VIP list at any time, type /viplist.',b),notify('',b); break; case 'addvip':_aa=0x1,notifyHelpBold(bullets+'/addvip Help'+bullets,b),notify('/addvip is a command that is usable by moderators and room hosts.\x0aThe syntax for using addvip is \"/addvip x\", where x is the username of the user you want to add to the VIP list.\x0aAdding a user to the VIP list grants them free access to a future \"CrazyTicket\" show. \x0aUsers can be removed from the VIP list by using the command /removevip.\x0aSee the help section for viplist for more information on the VIP list.',b),notify('',b); break; case 'removevip':_aa=0x1,notifyHelpBold(bullets+'/removevip Help'+bullets,b),notify('/removevip is a command that is usable by moderators and room hosts.\x0aThe syntax for using removevip is \"/removevip x\", where x is the username of the user you want to remove from the VIP list.\x0aSee the help section for viplist for more information on the VIP list.',b),notify('',b); break; case 'about':_aa=0x1,notifyHelpBold(bullets+' About MrBot '+bullets,b),notify('\"MrBot\" is based on \"All In One Bot\“ \x0aThe purpose of \"MrBot\" is to make the lives of the host and mods as easy as possible. It adds popular features such as Daily King Tipper, Monthly King Tipper, All Time High Tip King, Daily Leaderboard, Rotating Notifier, Tip Menu, Fanclubs, Nicknames, CrazyNote, Grey, Custom, and Spam wordlist that blocks abusive messages and auto silences spam bots, 4 Timers: General, Silence, Mystery, and Logoff, Customizable color schemes, Special access mod of any color can help with commands, Whispers in the main chat window that has 4 levels or can be turned on or off, plus many more features. ',b),notify('',b); break; case'greyson':case 'greyon':case'grayson':case 'grayon':case'silencegreys':case 'selencegrays':_aa=0x1,notifyHelpBold(bullets+'/greyson Help'+bullets,b),notify('/greyson is a command that is usable by moderators and room hosts.\x0aThe syntax for using greyson is \"/greyson\".\x0aThe effect of /greyson is the same as silence level 0, which allows voice priveleges from greys.\x0a/greyon, /grayson, /grayon, /silencegreys, and /silencegrays are all available commands that will turn greys on.\x0aThe effect of /greyson can be reversed by using the command /greysoff.',b),notify('',b); break; case'greysoff':case 'greyoff':case'graysoff':case 'grayoff':case'unsilencegreys':case 'unselencegrays':_aa=0x1,notifyHelpBold(bullets+'/greysoff Help'+bullets,b),notify('/greysoff is a command that is usable by moderators and room hosts.\x0aThe syntax for using greysoff is \"/greysoff\".\x0aThe effect of /greysoff is the same as silence level 1, which revokes voice priveleges from greys.\x0a/greyoff, /graysoff, /grayoff, /unsilencegreys, and /unsilencegrays are all available commands that will turn greys off.\x0aThe effect of /greysoff can be reversed by using the command /greyson.',b),notify('',b); break; case'silencelevel':_aa=0x1,notifyHelpBold(bullets+'/silencelevel Help'+bullets,b),notify('/silencelevel is a command that is usable by moderators and room hosts.\x0aThe syntax for using silencelevel is \"/silencelevel\u00a0x\", where x is a number between 0 and 3.\x0aSetting the Silence Level to 0 will grant voice privileges to all users, setting it to 1 will revoke voice privileges from greys, setting it to 2 will revoke voice privileges from greys and light blues, setting it to 3 will revoke voice privileges from users who have not tipped,and setting it to 4 will revoke voice privileges from everyone other than mods and fans.\x0aThe default setting for /silencelevel is 0.\x0aRoom hosts, moderators, and fan club members are unaffected by the Silence Level.',b),notify('',b); break; case'graphiclevel':_aa=0x1,notifyHelpBold(bullets+'/graphiclevel Help'+bullets,b),notify('/graphiclevel is a command that is usable by moderators and room hosts.\x0aThe syntax for using graphiclevel is \"/graphiclevel\u00a0x\", where x is a number between 0 and 3.\x0aSetting the Graphic Level to 0 will grant graphic privileges to all users, setting it to 1 will revoke graphic privileges from greys, setting it to 2 will revoke graphic privileges from greys and light blues, setting it to 3 will revoke graphic privileges from users who have not tipped,and setting it to 4 will revoke graphic privileges from everyone other than mods and fans.\x0aThe default setting for /graphiclevel is 1.\x0aRoom hosts, moderators, and fan club members are unaffected by the Graphic Level.',b),notify('',b); break; case 'silence':_aa=0x1,notifyHelpBold(bullets+'/silence or /s Help'+bullets,b),notify('/silence or /s is a command that is usable by moderators and room hosts.\x0aThe syntax for using silence is \"/silence\u00a0x\" or \"/s\u00a0x\", where x is the username of the user you want to silence.\x0aThe effect of /silence or /s is the same as Chaturbate\'s silence feature, except that it lasts for the duration of the current session instead of for six hours.\x0aThe effect of /silence or /s can be reversed by using the command /unsilence or /us.',b),notify('',b); break; case 'unsilence':_aa=0x1,notifyHelpBold(bullets+'/unsilence or /us Help'+bullets,b),notify('/unsilence or /us is a command that is usable by moderators and room hosts.\x0aThe syntax for using unsilence is \"/unsilence\u00a0x\" or \"/us\u00a0x\", where x is the username of the user you want to unsilence.\x0aunsilence or /us simply grants voice privileges back to a user who was previously silenced.\x0aNOTE: /unsilence or /us WILL NOT undo the effect of Chaturbate\'s silence feature!\x0a/unsilence or /us WILL ONLY reverse the effect of /silence or /s!',b),notify('',b); break; case 'silencelast':case'sl':_aa=0x1,notifyHelpBold(bullets+'/silencelast or /sl Help'+bullets,b),notify('/silencelast or /sl is a command that is usable by moderators and room hosts.\x0aThe syntax for using silence last is \"/silencelast\" or sl is \"/sl\", this will silence the most recent user that typed in chat.\x0aThe effect of /silencelast or /sl is the same as Chaturbate\'s silence feature, except that it lasts for the duration of the current session instead of for six hours.\x0aThese are available commands that will silence last.\x0aThe effect of /silence or /sl can be reversed by using the command /unsilence.',b),notify('',b); break; case 'starttimerg':case 'stg':_aa=0x1,notifyHelpBold(bullets+'/starttimerg or /stg Help'+bullets,b),notify('/starttimerg or /stg is a command that is usable by moderators and room hosts.\x0aThe syntax for using starttimerg is \"/starttimerg\u00a0x\" or stg is \"/stg\u00a0x\" , where x is the desired duration of the General Timer in minutes.\x0a/starttimerg or /stg will accept whole numbers only.\x0aThe General Timer will make announcements at five minutes remaining and at one minute remaining.\x0a/addtimeg or /atg can be used to add time to a currently running General Timer.\x0a/minustimeg or /mtg can be used to subtract time from a currently running General Timer.\x0a/timeleftg or /tlg can be used to display the amount of time remaining on the General Timer.',b),notify('',b); break; case'stoptimerg':case'endtimerg':case 'etg':_aa=0x1,notifyHelpBold(bullets+'/stoptimerg or /endtimerg or /etg Help'+bullets,b),notify('/stoptimerg or /endtimerg or /etg is a command that is usable by moderators and room hosts.\x0aThe syntax for using stoptimerg is \"/stoptimerg\" or endtimerg is \"/endtimerg\" or etg is \"/etg\", this will stop the current General Timer that is running.\x0aThese are available commands that will stop the General Timer.',b),notify('',b); break; case'addtimeg':case 'atg':_aa=0x1,notifyHelpBold(bullets+'/addtimeg or /atg Help'+bullets,b),notify('/addtimeg or /atg is a command that is usable by moderators and room hosts.\x0aThe syntax for using addtimeg is \"/addtimeg\u00a0x\" or atg is \"/atg\u00a0x\" , where x is the amount of time you want to add in minutes.\x0a/addtimeg or /atg will accept whole numbers only.\x0aSee the help section for starttimerg for more information on timerg.',b),notify('',b); break; case 'minustimeg':case 'mtg':_aa=0x1,notifyHelpBold(bullets+'/minustimeg or /mtg Help'+bullets,b),notify('/minustimeg or /mtg is a command that is usable by moderators and room hosts.\x0aThe syntax for using minustimeg is \"/minustimeg\u00a0x\", where x is the amount of time you want to subtract in minutes.\x0aThe syntax for using mtgg is \"/mtg\u00a0x\", where x is the amount of time you want to subtract in minutes.\x0a/minustimeg or /mtg will accept whole numbers only.\x0aSee the help section for starttimerg for more information on timerg.',b),notify('',b); break; case 'timeleftg':case 'tlg':_aa=0x1,notifyHelpBold(bullets+'/timeleftg or /tlg Help'+bullets,b),notify('/timeleftg is a command that is usable by everyone.\x0aThe syntax for using timeleftg is /timeleftg or tlg is /tlg\x0a/timeleftg will display the amount of time left on the General Timer in the format 00:00:00\x0aSee the help section for starttimerg for more information on timerg.',b),notify('',b); break; case 'starttimers':case'sts':_aa=0x1,notifyHelpBold(bullets+'/starttimers or /sts Help'+bullets,b),notify('/starttimers or /sts is a command that is usable by moderators and room hosts.\x0aThe syntax for using starttimers is \"/starttimers\u00a0x\" or sts is \"/sts\u00a0x\", where x is the desired duration of the Silence timer in minutes.\x0a/starttimers or /sts will accept whole numbers only.\x0aThe Silence timer will make announcements at five minutes remaining and at one minute remaining.\x0a/addtimes or /ats can be used to add time to a currently running Silence timer.\x0a/minustimes or /mts can be used to subtract time from a currently running Silence timer.\x0a/timelefts or /tls can be used to display the amount of time remaining on the Silence timer.',b),notify('',b); break; case 'stoptimers':case 'endtimers':case'ets':_aa=0x1,notifyHelpBold(bullets+'/stoptimers or /endtimers or /ets Help'+bullets,b),notify('/stoptimers or /endtimers or /ets is a command that is usable by moderators and room hosts.\x0aThe syntax for using stoptimers or endtimers or ets is \"/stoptimers\" or \"/endtimers\" or \"/ets\" , this will stop the current Silence timer that is running.\x0aThese are available commands that will stop the Silence timer.',b),notify('',b); break; case'addtimes':case 'ats':_aa=0x1,notifyHelpBold(bullets+'/addtimes or /ats Help'+bullets,b),notify('/addtimes or /ats is a command that is usable by moderators and room hosts.\x0aThe syntax for using addtimes is \"/addtimes\u00a0x\" or ats is \"/ats\u00a0x\" , where x is the amount of time you want to add in minutes.\x0a/addtimes or /ats will accept whole numbers only.\x0aSee the help section for starttimers for more information on timers.',b),notify('',b); break; case 'minustimes':case 'mts':_aa=0x1,notifyHelpBold(bullets+'/minustimes or /mts Help'+bullets,b),notify('/minustimes or /mts is a command that is usable by moderators and room hosts.\x0aThe syntax for using minustimes is \"/minustimes\u00a0x\" or mts is \"/mts\u00a0x\", where x is the amount of time you want to subtract in minutes.\x0a/minustimes or /mts will accept whole numbers only.\x0aSee the help section for starttimers for more information on timers.',b),notify('',b); break; case 'timelefts':case'tls':_aa=0x1,notifyHelpBold(bullets+'/timelefts or /tls Help'+bullets,b),notify('/timelefts or /tls is a command that is usable by everyone.\x0aThe syntax for using timelefts is /timelefts or tls is /tls\x0a/timelefts or /tls will display the amount of time left on the Silence timer in the format 00:00:00\x0aSee the help section for starttimers for more information on timers.',b),notify('',b); break; case'starttimerm':case 'stm':_aa=0x1,notifyHelpBold(bullets+'/starttimerm or /stm Help'+bullets,b),notify('/starttimerm or /stm is a command that is usable by moderators and room hosts.\x0aThe syntax for using starttimerm is \"/starttimerm\u00a0x\" or stm is \"/stm\u00a0x\", where x is the desired duration of the Mystery timer in minutes.\x0a/starttimerm or /stm will accept whole numbers only.\x0aThe Mystery timer will make announcements at five minutes remaining and at one minute remaining.\x0a/addtimem or /atm can be used to add time to a currently running Mystery timer.\x0a/minustimem or /mtm can be used to subtract time from a currently running Mystery timer.\x0a/timeleftm or /tlm can be used to display the amount of time remaining on the Mystery timer.',b),notify('',b); break; case 'stoptimerm':case 'endtimerm':case 'etm':_aa=0x1,notifyHelpBold(bullets+'/stoptimerm or /endtimerm or /etm Help'+bullets,b),notify('/stoptimerm or /endtimerm or /etm is a command that is usable by moderators and room hosts.\x0aThe syntax for using stoptimerm is \"/stoptimerm\" or endtimerm is \"/endtimerm\" or etm is \"/etm\", this will stop the current Mystery timer that is running.\x0aThese are available commands that will stop the Mystery timer.',b),notify('',b); break; case'addtimem':case 'atm':_aa=0x1,notifyHelpBold(bullets+'/addtimem or /atm Help'+bullets,b),notify('/addtimem or /atm is a command that is usable by moderators and room hosts.\x0aThe syntax for using addtimem is \"/addtimem\u00a0x\" or atv is \"/atm\u00a0x\", where x is the amount of time you want to add in minutes.\x0a/addtimem or /atm will accept whole numbers only.\x0aSee the help section for starttimerm for more information on timers.',b),notify('',b); break; case 'minustimem':case 'mtm':_aa=0x1,notifyHelpBold(bullets+'/minustimem or /mtm Help'+bullets,b),notify('/minustimem or /mtm is a command that is usable by moderators and room hosts.\x0aThe syntax for using minustimem is \"/minustimem\u00a0x\" or mtm is \"/mtm\u00a0x\", where x is the amount of time you want to subtract in minutes.\x0a/minustimem or /mtm will accept whole numbers only.\x0aSee the help section for starttimerm for more information on timers.',b),notify('',b); break; case'timeleftm':case 'tlm':_aa=0x1,notifyHelpBold(bullets+'/timeleftm or /tlm Help'+bullets,b),notify('/timeleftm or /tlm is a command that is usable by everyone.\x0aThe syntax for using timeleftm is /timeleftm or tlm is /tlm\x0a/timeleftm or /tlm will display the amount of time left on the Mystery timer in the format 00:00:00\x0aSee the help section for starttimerm for more information on timers.',b),notify('',b); break; case'starttimerl':case 'stl':_aa=0x1,notifyHelpBold(bullets+'/starttimerl or /stl Help'+bullets,b),notify('/starttimerl or /stl is a command that is usable by moderators and room hosts.\x0aThe syntax for using starttimerl is \"/starttimerl\u00a0x\" or stl is \"/stl\u00a0x\", where x is the desired duration of the Log Off timer in minutes.\x0a/starttimerl or /stl will accept whole numbers only.\x0aThe Log Off timer will make announcements at fifteen, ten, five, and at one minute remaining.\x0a/addtimel or /atl can be used to add time to a currently running Log Off timer.\x0a/minustimel or /mtl can be used to subtract time from a currently running Log Off timer.\x0a/timeleftl or /tll can be used to display the amount of time remaining on the Log Off timer.',b),notify('',b); break; case'stoptimerl':case'endtimerl':case 'etl':_aa=0x1,notifyHelpBold(bullets+'/stoptimerl or /endtimerl or /etl Help'+bullets,b),notify('/stoptimerl or /endtimerl or /etl is a command that is usable by moderators and room hosts.\x0aThe syntax for using stoptimerl is \"/stoptimerl\" or endtimerl is \"/endtimerl\" or etl is \"/etl\", this will stop the current Log Off timer that is running.\x0aThese are available commands that will stop the Log Off timer.',b),notify('',b); break; case 'addtimel':case 'atl':_aa=0x1,notifyHelpBold(bullets+'/addtimel or /atl Help'+bullets,b),notify('/addtimel or /atl is a command that is usable by moderators and room hosts.\x0aThe syntax for using addtimel is \"/addtimel\u00a0x\" or atl is \"/atl\u00a0x\", where x is the amount of time you want to add in minutes.\x0a/addtimel or /atl will accept whole numbers only.\x0aSee the help section for starttimerl for more information on timers.',b),notify('',b); break; case 'minustimel':case 'mtl':_aa=0x1,notifyHelpBold(bullets+'/minustimel or /mtl Help'+bullets,b),notify('/minustimel or /mtl is a command that is usable by moderators and room hosts.\x0aThe syntax for using minustimel is \"/minustimel\u00a0x\" or mtl is \"/mtl\u00a0x\", where x is the amount of time you want to subtract in minutes.\x0a/minustimel or /mtl will accept whole numbers only.\x0aSee the help section for starttimerl for more information on timers.',b),notify('',b); break; case 'timeleftl':case 'tll':_aa=0x1,notifyHelpBold(bullets+'/timeleftl or /tll Help'+bullets,b),notify('/timeleftl or /tll is a command that is usable by everyone.\x0aThe syntax for using timeleftl is /timeleftl or tll is /tll\x0a/timeleftl or /tll will display the amount of time left on the Log Off timer in the format 00:00:00\x0aSee the help section for starttimerl for more information on timers.',b),notify('',b); break; case 'note':case 'notice':case'n':_aa=0x1,notifyHelpBold(bullets+'/note Help'+bullets,b),notify('/note is a command that is usable by moderators and room host.\x0aThe syntax for using note is \"/note\u00a0x\", where x is the message you want to send.\x0a/note, /notice, and /n are all available commands that will send a notice.\x0aA note is a public notification that will be sent to everyone in the main chat window.',b),notify('',b); break; case'cn':case 'sendnotice':_aa=0x1,notifyHelpBold(bullets+'/cn Help'+bullets,b),notify('/cn is a command that is usable by moderators and room hosts.\x0aThe syntax for this command is /cn x, where x is the message you want to send to the main chat.\x0aUsing \"/cn r x\" - where x is the message to be sent - will send the message in red instead of the default color for notices.\x0a/sendnotice is also a command that will send notices to the chat.',b),notify('',b); break; case'cnd':_aa=0x1,notifyHelpBold(bullets+'/cnd Help'+bullets,b),notify('/cnd is a command that is usable by moderators and room hosts.\x0aThe syntax for this command is /cnd x, where x is the message you want to send to the main chat.\x0aThe message will be sent with divider lines.\x0aUsing \"/cnd r x\" - where x is the message to be sent - will send the message in red instead of the default color for notices.',b),notify('',b); break; case'cndh':_aa=0x1,notifyHelpBold(bullets+'/cndh Help'+bullets,b),notify('/cndh is a command that is usable by moderators and room hosts.\x0aThe syntax for this command is /cndh x, where x is the message you want to send to the main chat.\x0aThe message will be sent highlighted and with divider lines.\x0aUsing \"/cndh r x\" - where x is the message to be sent - will send the message in red instead of the default color for notices.',b),notify('',b); break; case'cnh':_aa=0x1,notifyHelpBold(bullets+'/cnh Help'+bullets,b),notify('/cnh is a command that is usable by moderators and room hosts.\x0aThe syntax for this command is /cnh x, where x is the message you want to send to the main chat.\x0aThe message will be sent highlighted.\x0aUsing \"/cnh r x\" - where x is the message to be sent - will send the message in red instead of the default color for notices.',b),notify('',b); break; case'tb':case 'pmm':_aa=0x1,notifyHelpBold(bullets+'/tb Help'+bullets,b),notify('/tb is a command that is usable by moderators.\x0aThe syntax for this command is /tb x, where x is the message you want to send privately to the room host.\x0aThis can also be done using /pmm x.',b),notify('',b); break; case'tm':_aa=0x1,notifyHelpBold(bullets+'/tm Help'+bullets,b),notify('/tm is a command that is usable by moderators and room hosts.\x0aThe syntax for this command is /tm x, where x is the message you want to send privately to all moderators as a group.',b),notify('',b); break; case 'tbm':_aa=0x1,notifyHelpBold(bullets+'/tbm Help'+bullets,b),notify('/tm is a command that is usable by moderators and room hosts.\x0aThe syntax for this command is /tm x, where x is the message you want to send privately to all moderators as a group and the room host.',b),notify('',b); break; case'tv':_aa=0x1,notifyHelpBold(bullets+'/tv Help'+bullets,b),notify('/tv is a command that is usable by moderators and room hosts.\x0aThe syntax for this command is /tv x y, where x is the user who will receive the message, and y is the message to be sent.',b),notify('',b); break; case 'addnotice':case 'addnote':_aa=0x1,notifyHelpBold(bullets+'/addnotice Help'+bullets,b),notify('/addnotice is a command that is usable by moderators and room hosts.\x0aThe syntax for using add notice is \"/addnotice\u00a0x\", where x is the notice message you want to add to the rotating notifier.\x0a/addnote is another available command that will add a notice.\x0aAdd notice will add a notice message to the rotating notifier, these notices will be displayed in the main chat window at a selected interval.\x0aAdd notice can be reversed by using the /removenotice command.',b),notify('',b); break; case 'removenotice':case 'removenote':_aa=0x1,notifyHelpBold(bullets+'/removenotice Help'+bullets,b),notify('/removenotice is a command that is usable by moderators and room hosts.\x0aThe syntax for using remove notice is \"/removenotice\u00a0x\", where x is the number of the notice message you want to remove to the rotating notifier.\x0a/removenote is another available command that will remove a notice.\x0aUse the command /shownotices to view all the notices in the rotating notifier and determine the number of the notice you want to remove.\x0aRemove notice will remove a notice message from the rotating notifier.',b),notify('',b); break; case 'shownotices':_aa=0x1,notifyHelpBold(bullets+'/shownotices Help'+bullets,b),notify('/shownotices is a command that is usable by moderators and room hosts.\x0aThe syntax for using show notices is \"/shownotices.\x0aShow notices will show all the notice messages in the rotating notifier, the number next to each notice is used in the command /removenotice.',b),notify('',b); break; case 'noticetimer':_aa=0x1,notifyHelpBold(bullets+'/noticetimer Help'+bullets,b),notify('/noticetimer is a command that is usable by moderators and room hosts.\x0aThe syntax for using notice timer is \"/noticetimer\u00a0x\", where x is the number of minutes you want between notice messages for the rotating notifier.\x0aUsing this command will replace the minute interval between notices that was set at the beginning of the session.',b),notify('',b); break; case 'whisper':case'w':case 'tell':case't':case'pm':_aa=0x1,notifyHelpBold(bullets+'/whisper Help'+bullets,b),notify('/whisper is a command that is usable by everyone.\x0aThe syntax for using whisper is \"/whisper\u00a0x\u00a0y\", where x is the username of the user you want to send a whisper and y is the message you want to send.\x0a/whisper, /w, /tell, /t, and /pm are all available commands that will send a whisper.\x0aA whisper is a private message that will be sent in the main chat window.\x0aOther related commands are /reply, /ignore, /unignore, and /ignorelevel.',b),notify('',b); break; case'reply':case'r':_aa=0x1,notifyHelpBold(bullets+'/reply Help'+bullets,b),notify('/reply is a command that is usable by everyone.\x0aThe syntax for using whisper is \"/reply\u00a0x\", where x is message that you want to whisper to the user who most recently sent a whisper to you.\x0a/reply and /r are available commands that will send a whisper in reply.\x0aSee the help section for whisper for more information on whispers.\x0aOther related commands are /whisper, /ignore, /unignore, and /ignorelevel.',b),notify('',b); break; case 'ignore':_aa=0x1,notifyHelpBold(bullets+'/ignore Help'+bullets,b),notify('/ignore is a command that is usable by everyone.\x0aThe syntax for using ignore is \"/ignore\u00a0x\", where x is the user from whom you wish to ignore whispers.\x0aIgnoring a user will prevent him from sending you whispers, but it will not prevent him from talking normally in chat.\x0a/unignore will reverse the effect of /ignore.\x0aSee the help section for whisper for more information on whispers.\x0aOther related commands are /whisper, /reply, /unignore, and /ignorelevel.',b),notify('',b); break; case 'unignore':_aa=0x1,notifyHelpBold(bullets+'/unignore Help'+bullets,b),notify('/unignore is a command that is usable by everyone.\x0aThe syntax for using unignore is \"/unignore\u00a0x\", where x is the user you wish to remove from your ignore list.\x0aSee the help section for ignore for more information on ignoring users.\x0aSee the help section for whisper for more information on whispers.\x0aOther related commands are /whisper, /reply, /ignore, and /ignorelevel.',b),notify('',b); break; case'ignorelevel':_aa=0x1,notifyHelpBold(bullets+'/ignorelevel Help'+bullets,b),notify('/ignorelevel is a command that determines which users you accept whispers from. It is usable by everyone.\x0aThe syntax for using ignorelevel is \"/ignorelevel\u00a0x\", where x is a number between 0 and 4.\x0aSetting it to 0 will allow all users to send you whispers.\x0aSetting it to 1 will prevent greys from sending you whispers.\x0aSetting it to 2 will prevent greys and light blues from sending you whispers.\x0aSetting it to 3 will prevent users who have not tipped in the room from sending you whispers.\x0aSetting it to 4 will prevent all users from sending you whispers.\x0aModerators and fan club members can send whispers regardless of whisper level.\x0aThe default setting for /ignorelevel is 4 for the broadcaster, and 0 for everyone else. (This broadcaster\'s level is set higher by default to prevent abuse of this feature.)\x0aSee the help section for whisper for more information on whispers\x0aOther related commands are /whisper, /reply, /ignore, and /unignore.',b),notify('',b); break; case 'emod':_aa=0x1,notifyHelpBold(bullets+'/emod Help'+bullets,b),notify('/emod is a command that is usable by moderators and room hosts.\x0aThe syntax for using emod is \"/emod\u00a0x\u00a0y\", where x is either \"add\" or \"remove\" and y is the username of the user you want to either grant or revoke emergency moderator powers.\x0a/emod allows moderators to quickly grant other users access to moderator-only commands in the event that he is having difficulty controlling the room by himself.\x0aEmergency moderators have access to all moderator-only commands with the exceptions of /emod, /addnice, and /removenice.',b),notify('',b); break; case 'blocknotice':_aa=0x1,notifyHelpBold(bullets+'/blocknotice Help'+bullets,b),notify('/blocknotice is a command that is usable by moderators and room hosts.\x0aThe syntax for using blocknotice is \"/blocknotice\u00a0x\", where x is either \"on\" or \"off\".\x0a/blocknotice toggles the blocked message notices that appear by default for moderators when the wordlist is being used\x0aThe blocked message notifications are toggled on a per-user basis. (Toggling it for yourself does not toggle it for everyone.)',b),notify('',b); break; case 'addnice':case'an':_aa=0x1,notifyHelpBold(bullets+'/addnice or /an Help'+bullets,b),notify('/addnice or /an is a command that is usable by moderators and room hosts.\x0aThe syntax for using addnice is \"/addnice\u00a0x\" or an is \"/an\u00a0x\", where x is the username of the user you want to add to the nice list.\x0aAdding a user to the nice list guarantees that user voice and graphic usage privileges regardless of the silence, graphic, and ignore level settings. Using /silence or /ignore will still silence or ignore a user on the nice list.\x0aUsers can be removed from the nice list by using the command /removenice or /rn.\x0aSee the help sections for silencelevel, graphiclevel, and ignorelevel for more information on the global settings or the help section for nicelist for more information on the nice list.',b),notify('',b); break; case 'removenice':case'rn':_aa=0x1,notifyHelpBold(bullets+'/removenice or /rn Help'+bullets,b),notify('/removenice or /rn is a command that is usable by moderators and room hosts.\x0aThe syntax for using removenice is \"/removenice\u00a0x\" or rn is \"/rn\u00a0x\", where x is the username of the user you want to remove from the nice list.\x0aSee the help section for nicelist for more information on the nice list.',b),notify('',b); break; case 'addgrey':case 'addgray':case'ag':_aa=0x1,notifyHelpBold(bullets+'/addgrey or /ag Help'+bullets,b),notify('/addgrey or /ag is a command that is usable by moderators and room hosts.\x0aThe syntax for using addgrey is \"/addgrey\u00a0x\" or ag is \"/ag\u00a0x\", where x is the username of the user you want to add to the grey list.\x0aAdding a user to the grey list subjects them to the same wordlists that apply to greys. \x0aUsers can be removed from the grey list by using the command /removegrey or /rg.\x0aSee the help section for greylist for more information on the grey list.',b),notify('',b); break; case 'removegrey':case 'removegray':case'rg':_aa=0x1,notifyHelpBold(bullets+'/removegrey or /rg Help'+bullets,b),notify('/removegrey or /rg is a command that is usable by moderators and room hosts.\x0aThe syntax for using removegrey is \"/removegrey\u00a0x\" or rg is \"/rg\u00a0x\" , where x is the username of the user you want to remove from the grey list.\x0aSee the help section for greylist for more information on the grey list.',b),notify('',b); break; case'hbhelp':_aa=0x1,notifyHelpBold(bullets+'/hbhelp\u00a0Help'+bullets,b),notify('/hbhelp\u00a0is a command that is usable by everyone.\x0aThe syntax for using hbhelp is \"/hbhelp\u00a0x\", where x is the subsection of the help menu that you want to access.',b),notify('',b); break; case 'addword':case'aw':_aa=0x1,notifyHelpBold(bullets+'/addword or /aw Help'+bullets,b),notify('/addword or /aw is a command that is usable by moderators and room hosts.\x0aThe syntax for using add word is \"/addword\u00a0x\" or aw is \"/aw\u00a0x\", where x is the word you want to add to the custom word list.\x0aWords added using this command will only be used for the duration of the current session.\x0aThis command can only be used when the custom word list is active.',b),notify('',b); break; case 'leaderboard':case 'dlb':_aa=0x1,notifyHelpBold(bullets+'/leaderboard or /dlb Help'+bullets,b),notify('/leaderboard or /dlb is a command that is usable by everyone.\x0aThe syntax for using leaderboard is \"/leaderboard\" or dlb is \"/dlb\".\x0a/leaderboard or /dlb shows the top 10 tippers of the current session.',b),notify('',b); break; case 'kingspam':_aa=0x1,notifyHelpBold(bullets+'/kingspam Help'+bullets,b),notify('/kingspam is a command that is usable by moderators and room hosts.\x0aThe syntax for using kingspam is /kingspam x, where x is either on or off. Using this command toggles the spamming of the message \"Tip x to be the new___!\"',b),notify('',b); break; case 'leaderboardspam':_aa=0x1,notifyHelpBold(bullets+'/leaderboardspam Help'+bullets,b),notify('/leaderboardspam is a command that is usable by moderators and room hosts.\x0aThe syntax for using leaderboardspam is /leaderboardspam x, where x is either on or off. Using this command toggles the spamming of the top three tippers.',b),notify('',b); break; case 'nickmod':_aa=0x1,notifyHelpBold(bullets+'/nickmod Help'+bullets,b),notify('/nickmod is a command that is usable by the room hosts.\x0aThe syntax for using nickmod is \"/nickmod\".\x0aUsing this command will enable or disable the ability for mods to use the nickname feature.',b),notify('',b); break; case 'nickname':_aa=0x1,notifyHelpBold(bullets+'/nickname Help'+bullets,b),notify('/nickname is a command that is usable by moderaters and the room hosts.\x0aThe syntax for using nickname is \"/nickname x y\", where x is the user and y is the nickname that should be added.\x0aif no new nickname is specified the existing nickname for this user is deleted.',b),notify('',b); break; case'nicknames':_aa=0x1,notifyHelpBold(bullets+'/nicknames Help'+bullets,b),notify('/nicknames is a command that is usable by moderaters and the room hosts.\x0aThe syntax for using nicknames is \"/nicknames\".\x0athis command will output a list of all assigned nicknames.',b),notify('',b); break; case'tipmenu':_aa=0x1,notifyHelpBold(bullets+'/tipmenu Help'+bullets,b),notify('/tipmenu is a command that is usable by everyone.\x0aThe syntax for using tip menu is \"/tipmenu\".\x0a/Tip menu shows the models tip menu.',b),notify('',b); } 0x0==_aa && notifyError(a+' is not a valid subsection of the help menu. Type \"/hbhelp\" to access the main help menu.',b); } function isFC(a) { return a in fcMembers; } function makeFC(a) { fcMembers[a]= { 'u':0x1 }; } function unmakeFC(a) { delete fcMembers[a]; } function setFC(a) { fcMembers[a]= { 'u':0x1 }; } function unsetFC(a) { delete fcMembers[a]; } function isSFC(a) { return a in sfcMembers; } function makeSFC(a) { sfcMembers[a]= { 'u':0x1 }; } function unmakeSFC(a) { delete sfcMembers[a]; } function setSFC(a) { sfcMembers[a]= { 'u':0x1 }; } function unsetSFC(a) { delete sfcMembers[a]; } function grabSettings() { if (cb.log('starting grabbing settings'),cb.settings.fcMemberList)for (var _aa=cb.settings.fcMemberList.split(','),_ab=0x0; _ab<_aa.length; _ab++) { var _ac=_aa[_ab].toLowerCase().replace(/ /g, ''); fcMembers[_ac]= { 'u':0x1 }; } if (cb.settings.sfcMemberList)for (var _ad=cb.settings.sfcMemberList.split(','),_ab=0x0; _ab<_ad.length; _ab++) { var _ac=_ad[_ab].toLowerCase().replace(/ /g, ''); sfcMembers[_ac]= { 'u':0x1 }; } cb.log('finished grabbing settings'); } cb.settings_choices=[ { 'name':'colorscheme', 'label':'1.) PERSONALIZATION ............................................. Color Scheme:', 'type':'choice', 'choice1':'Blue on Grey', 'choice2':'Pink on Grey', 'choice3':'Purple on Purple', 'choice4':'Black on Blue', 'choice5':'Black on Green', 'choice6':'Blue on Green', 'choice7':'Orange on Black', 'choice8':'Green on Red', 'choice9':'Red on Pink', 'choice10':'Custom (Please define below)', 'required':!0x1 }, { 'name':'darkcolor', 'label':'Custom Text Color (Html #code)', 'type':'str', 'defaultValue':'[Optional - Set color scheme to \"Custom\" above]', 'required':!0x1 }, { 'name':'lightcolor', 'label':'Custom Highlight Color (Html #code)', 'type':'str', 'defaultValue':'[Optional - Set color scheme to \"Custom\" above]', 'required':!0x1 }, { 'name':'crazyNoteColorscheme', 'label':'Crazy Note Color Scheme (Only changes public notices) - Theme is colors picked above', 'type':'choice', 'choice1':'Theme', 'choice2':'Custom (Please define below)', 'defaultValue':'Theme', 'required':!0x1 }, { 'name':'crazyNoteText', 'label':'Custom Text Color - HTML color code (without #)', 'type':'str', 'defaultValue':'[Optional - Set color scheme to \"Custom\" above]', 'required':!0x1 }, { 'name':'crazyNoteBackground', 'label':'Custom Highlight Color - HTML color code (without #)', 'type':'str', 'defaultValue':'[Optional - Set color scheme to \"Custom\" above]', 'required':!0x1 }, { 'name':'enterMessage', 'label':'Welcome Message', 'type':'str', 'minLength':0x1, 'maxLength':0x3e8, 'defaultValue':'Welcome to my room! :kiss4u ', 'required':!0x1 }, { 'name':'capsToggle', 'label':'2.) ROOM CONTROL .................... Convert ALL CAPS to lowercase?', 'type':'choice', 'choice1':'Yes', 'choice2':'No', 'choice3':'Only for greys', 'defaultValue':'Only for greys', 'required':!0x1 }, { 'name':'stickyToggle', 'label':'Prevent sticky keyyyyyyyyyyyyys?', 'type':'choice', 'choice1':'Yes', 'choice2':'No', 'choice3':'Only for greys', 'defaultValue':'Only for greys', 'required':!0x1 }, { 'name':'defaultGraphicLevel', 'label':'Default Graphic Level (Who can use graphics?)', 'type':'choice', 'choice1':'0 - (Everyone)', 'choice2':'1 - (Color names only)', 'choice3':'2 - (Dark blue names and higher)', 'choice4':'3 - (Users who have tipped)', 'choice5':'4 - (Only mods and fans)', 'defaultValue':'1 - (Color names only)', 'required':!0x1 }, { 'name':'defaultSilenceLevel', 'label':'Default Silence Level (Who can talk in chat?)', 'type':'choice', 'choice1':'0 - (Everyone)', 'choice2':'1 - (Color names only)', 'choice3':'2 - (Dark blue names and higher)', 'choice4':'3 - (Users who have tipped)', 'choice5':'4 - (Only mods and fans)', 'defaultValue':'0 - (Everyone)', 'required':!0x1 }, { 'name':'niceList', 'label':'Nice List (Users who can always talk/use graphics)', 'type':'str', 'minLength':0x1, 'maxLength':0x3e8, 'defaultValue':'[Optional - Exact usernames, separated by commas]', 'required':!0x1 }, { 'name':'greyList', 'label':'Grey List (Usernames any color) who should always be subjected to grey wordlist and grey graphic level)', 'type':'str', 'minLength':0x1, 'maxLength':0x3e8, 'defaultValue':'slickrickpussysucker', 'required':!0x1 }, { 'name':'silenceList', 'label':'Silence List (Users who are permanently silenced)', 'type':'str', 'minLength':0x1, 'maxLength':0x3e8, 'defaultValue':'[Optional - Exact usernames, separated by commas]', 'required':!0x1 }, { 'name':'greyWordlistToggle', 'label':'3.) GREY WORDLIST ............. Use grey wordlist feature for greys?', 'type':'choice', 'choice1':'Yes', 'choice2':'No (Skip to section 4)', 'defaultValue':'Yes', 'required':!0x1 }, { 'name':'greyWordlistNotice', 'label':'Notify sender when his/her message gets blocked?(all wordlist)', 'type':'choice', 'choice1':'Yes', 'choice2':'No', 'defaultValue':'Yes', 'required':!0x1 }, { 'name':'greyWordlistShowModerators', 'label':'Notify moderators of blocked grey wordlist messages?', 'type':'choice', 'choice1':'Yes', 'choice2':'No', 'defaultValue':'Yes', 'required':!0x1 }, { 'name':'greyWordlistShowBroadcaster', 'label':'Notify broadcaster of blocked grey wordlist messages?', 'type':'choice', 'choice1':'Yes', 'choice2':'No', 'defaultValue':'No', 'required':!0x1 }, { 'name':'greyWordlistLevel', 'label':'Grey wordlist applies to', 'type':'choice', 'choice1':'Only greys', 'choice2':'Everyone', 'defaultValue':'Only greys', 'required':!0x1 }, { 'name':'customWordlistToggle', 'label':'4.) CUSTOM WORDLIST ................... Use custom wordlist feature?', 'type':'choice', 'choice1':'Yes', 'choice2':'No (Skip to section 5)', 'defaultValue':'Yes', 'required':!0x1 }, { 'name':'customWordlistShowModerators', 'label':'Notify moderators of blocked custom wordlist messages?', 'type':'choice', 'choice1':'Yes', 'choice2':'No', 'defaultValue':'Yes', 'required':!0x1 }, { 'name':'customWordlistShowBroadcaster', 'label':'Notify broadcaster of blocked custom wordlist messages?', 'type':'choice', 'choice1':'Yes', 'choice2':'No', 'defaultValue':'No', 'required':!0x1 }, { 'name':'customWordlist', 'label':'Custom wordlist', 'type':'str', 'minLength':0x1, 'maxLength':0x3e8, 'defaultValue':'[Optional - Exact words or phrases, separated by commas]', 'required':!0x1 }, { 'name':'customWordlistLevel', 'label':'Custom wordlist applies to', 'type':'choice', 'choice1':'Only greys', 'choice2':'Everyone', 'defaultValue':'Everyone', 'required':!0x1 }, { 'name':'spamWordlistToggle', 'label':'5.) SPAM WORDLIST .......................... Use spam wordlist feature?', 'type':'choice', 'choice1':'Yes', 'choice2':'No (Skip to section 6)', 'defaultValue':'Yes', 'required':!0x1 }, { 'name':'spamWordlistShowModerators', 'label':'Notify moderators of blocked spam wordlist messages?', 'type':'choice', 'choice1':'Yes', 'choice2':'No', 'defaultValue':'Yes', 'required':!0x1 }, { 'name':'spamWordlistShowBroadcaster', 'label':'Notify broadcaster of blocked spam wordlist messages?', 'type':'choice', 'choice1':'Yes', 'choice2':'No', 'defaultValue':'No', 'required':!0x1 }, { 'name':'spamWordlistLevel', 'label':'Spam wordlist applies to', 'type':'choice', 'choice1':'Only greys', 'choice2':'Everyone', 'defaultValue':'Everyone', 'required':!0x1 }, { 'name':'autoSilenceSpamToggle', 'label':'Automatically silence users who post spam?', 'type':'choice', 'choice1':'Yes', 'choice2':'No', 'defaultValue':'Yes', 'required':!0x1 }, { 'name':'whisperToggle', 'label':'6.) WHISPERS ............................................... Use whisper feature?', 'type':'choice', 'choice1':'Yes', 'choice2':'No (Skip to section 7)', 'defaultValue':'Yes', 'required':!0x1 }, { 'name':'roomWhisperLevel', 'label':'Room whisper level (Who can whisper to other users?)', 'type':'choice', 'choice1':'0 - (Everyone)', 'choice2':'1 - (Color names only)', 'choice3':'2 - (Dark blue names and higher)', 'choice4':'3 - (Users who have tipped)', 'choice5':'4 - (Only mods and fans)', 'defaultValue':'0 - (Everyone)', 'required':!0x1 }, { 'name':'hostWhisperLevel', 'label':'whisper level (Who can send YOU whispers?)', 'type':'choice', 'choice1':'0 - (Everyone)', 'choice2':'1 - (Color names only)', 'choice3':'2 - (Dark blue names and higher)', 'choice4':'3 - (Users who have tipped)', 'choice5':'4 - (Only mods and fans)', 'defaultValue':'4 - (Only mods and fans)', 'required':!0x1 }, { 'name':'kingTipper', 'label':'7.) KING TIPPER ................................... Use \'Daily King Tipper\' feature?', 'type':'choice', 'choice1':'Yes', 'choice2':'No (Skip to section 8)', 'defaultValue':'Yes', 'required':!0x1 }, { 'name':'kingMin', 'label':'Minimum tip amount to become daily King:', 'type':'int', 'minValue':0x1, 'maxValue':0x186a0, 'defaultValue':0x19, 'required':!0x1 }, { 'name':'kingTipperSpam', 'label':'Periodically announce tip required to become daily King?', 'type':'choice', 'choice1':'Yes', 'choice2':'No (Skip to section 8)', 'defaultValue':'Yes', 'required':!0x1 }, { 'name':'kingTipperTimer', 'label':'Interval (in mins) for daily king announcement', 'type':'int', 'minValue':0x1, 'maxValue':0x3c, 'defaultValue':0x7, 'required':!0x1 }, { 'name':'kingMessage', 'label':'Message to print here... Tip xx to be the new ______', 'type':'str', 'minLength':0x1, 'maxLength':0x1e, 'defaultValue':'Daily King', 'required':!0x0 }, { 'name':'crownIcon', 'label':'Crown Icon: used for daily King tipper (Use :GIFNAME with colon)', 'type':'str', 'minLength':0x0, 'maxLength':0x14, 'required':!0x1, 'defaultValue':':crown2' }, { 'name':'mkingTipperToggle', 'label':'8.) MONTHLY HIGH TIP KING ..... Use MONTHLY High Tip King feature?', 'type':'choice', 'choice1':'Yes', 'choice2':'No (Skip to section 9)', 'defaultValue':'Yes (Skip to section 9)', 'required':!0x0 }, { 'name':'mkingTipperName', 'label':'Reigning monthly high tip king (username)', 'type':'str', 'minLength':0x0, 'maxLength':0x28, 'required':!0x1, 'defaultValue':'[Username required when in use]' }, { 'name':'mkingTipperTip', 'label':'Reigning monthly high tip (token amount)', 'type':'int', 'minValue':0x1, 'defaultValue':'1' }, { 'name':'mkingTipperbgColor', 'label':'Background color for monthly king tipper - HTML color code (without #)', 'type':'str', 'minLength':0x0, 'maxLength':0x6, 'required':!0x1, 'defaultValue':'FFFFFF' }, { 'name':'mkingTippertxtColor', 'label':'Text color for monthly king tipper - HTML color code (without #)', 'type':'str', 'minLength':0x0, 'maxLength':0x6, 'required':!0x1, 'defaultValue':'000000' }, { 'name':'mkingTipperIcon', 'label':'Icon for monthly king tipper (use :GIFNAME with colon)', 'type':'str', 'minLength':0x0, 'maxLength':0x28, 'required':!0x1, 'defaultValue':':crownprincess' }, { 'name':'mkingTipperNotifier', 'label':'Interval (in mins) for rotating monthly king tipper message', 'type':'int', 'minValue':0x1, 'maxValue':0x3c, 'defaultValue':0x3, 'required':!0x1 }, { 'name':'atkingTipperToggle', 'label':'9.) ALL TIME HIGH TIP KING .......... Use All Time High Tip King feature?', 'type':'choice', 'choice1':'Yes', 'choice2':'No (Skip to section 10)', 'defaultValue':'Yes (Skip to section 10)', 'required':!0x0 }, { 'name':'atkingTipperName', 'label':'Reigning high tip king (username)', 'type':'str', 'minLength':0x0, 'maxLength':0x28, 'required':!0x1, 'defaultValue':'[Username required when in use]' }, { 'name':'atkingTipperTip', 'label':'Reigning high tip (token amount)', 'type':'int', 'minValue':0x1, 'defaultValue':'1' }, { 'name':'atkingTipperbgColor', 'label':'Background color for king tipper - HTML color code (without #)', 'type':'str', 'minLength':0x0, 'maxLength':0x6, 'required':!0x1, 'defaultValue':'FFFFFF' }, { 'name':'atkingTippertxtColor', 'label':'Text color for king tipper - HTML color code (without #)', 'type':'str', 'minLength':0x0, 'maxLength':0x6, 'required':!0x1, 'defaultValue':'000000' }, { 'name':'atkingTipperIcon', 'label':'Icon for king tipper (use :GIFNAME with colon)', 'type':'str', 'minLength':0x0, 'maxLength':0x28, 'required':!0x1, 'defaultValue':':kingcrown1' }, { 'name':'atkingTipperNotifier', 'label':'Interval (in mins) for rotating king tipper message', 'type':'int', 'minValue':0x1, 'maxValue':0x3c, 'defaultValue':0x3, 'required':!0x1 }, { 'name':'leaderBoard', 'label':'10.) Daily LEADERBOARD ......................... Use daily Leaderboard feature?', 'type':'choice', 'choice1':'Yes', 'choice2':'No (Skip to section 11)', 'defaultValue':'Yes', 'required':!0x1 }, { 'name':'leaderBoardSpam', 'label':'Periodically announce top 5 tippers?', 'type':'choice', 'choice1':'Yes', 'choice2':'No (Skip to section 11)', 'defaultValue':'Yes', 'required':!0x1 }, { 'name':'leaderBoardTimer', 'label':'Interval (in mins) for daily leaderboard announcement', 'type':'int', 'minValue':0x1, 'maxValue':0x3c, 'defaultValue':0x7, 'required':!0x1 }, { 'name':'notifierTip', 'label':'11.) TIP MESSAGES ..................... Show message when a user tips?', 'type':'choice', 'choice1':'Yes', 'choice2':'Privately to tipper only', 'choice3':'No (Skip to section 12)', 'defaultValue':'Yes', 'required':!0x1 }, { 'name':'tipMessage', 'label':'Message to display', 'type':'str', 'minLength':0x1, 'maxLength':0x3e8, 'defaultValue':'Thank you for tipping, {username}! :kissy', 'required':!0x1 }, { 'name':'tipMessageMin', 'label':'Minimum tip to trigger message', 'type':'int', 'minValue':0x1, 'maxValue':0xf4240, 'defaultValue':0xf, 'required':!0x1 }, { 'name':'tipMessageColorscheme', 'label':'Tip Message Color Scheme - Theme is Yellow and Black to match the tip colors', 'type':'choice', 'choice1':'Theme', 'choice2':'Custom (Please define below)', 'defaultValue':'Theme', 'required':!0x1 }, { 'name':'tipMessageText', 'label':'Custom Text Color - HTML color code (without #)', 'type':'str', 'defaultValue':'[Optional - Set color scheme to \"Custom\" above]', 'required':!0x1 }, { 'name':'tipMessageBackground', 'label':'Custom Highlight Color - HTML color code (without #)', 'type':'str', 'defaultValue':'[Optional - Set color scheme to \"Custom\" above]', 'required':!0x1 }, { 'name':'tipTitles', 'label':'12.) TIP TITLES ........................... Display users\' tip totals as titles?', 'type':'choice', 'choice1':'Yes', 'choice2':'No', 'defaultValue':'Yes', 'required':!0x1 }, { 'name':'invalidToggle', 'label':'13.) MISC ................... Send error message for invalid commands?', 'type':'choice', 'choice1':'Yes', 'choice2':'No', 'defaultValue':'Yes', 'required':!0x1 }, { 'name':'specialaccessMod', 'label':'[Optional] Username of Special Access Mod - This (username, any color) will be able to use all the bot commands to make it easier for the model', 'type':'str', 'minLength':0x0, 'maxLength':0x1e, 'required':!0x1, 'defaultValue':'' }, { 'name':'timerStartIcon', 'label':'Timer Start Icon: (Use :GIFNAME with colon)', 'type':'str', 'minLength':0x0, 'maxLength':0x14, 'required':!0x1, 'defaultValue':' :ml-gl ' }, { 'name':'timerAddMinusIcon', 'label':'Timer AddMinus Icon: (Use :GIFNAME with colon)', 'type':'str', 'minLength':0x0, 'maxLength':0x14, 'required':!0x1, 'defaultValue':' :ml-bl ' }, { 'name':'timerWarningIcon', 'label':'Timer Warning Icon: (Use :GIFNAME with colon)', 'type':'str', 'minLength':0x0, 'maxLength':0x14, 'required':!0x1, 'defaultValue':' :ml-yl ' }, { 'name':'timerStopIcon', 'label':'Timer Stop Icon: (Use :GIFNAME with colon)', 'type':'str', 'minLength':0x0, 'maxLength':0x14, 'required':!0x1, 'defaultValue':' :ml-rl ' }, { 'name':'vipList', 'label':'14.) CrazyTicket ... Names to grant access to a future fanclub, or other. \'CrazyTicket\' show, separated by spaces, or by commas with or without spaces. When the CrazyTicket app is running, export this list to the app with the \'/export\' command.', 'type':'str', 'minLength':0x1, 'maxLength':0x2710, 'required':!0x1, 'defaultValue':'' }, { 'name':'show_alias', 'label':'15.) NICKNAMES .................................................. Use Nicknames?', 'type':'choice', 'choice1':'Yes', 'choice2':'No (Skip to section 16)', 'defaultValue':'Yes (Skip to section 16)' }, { 'name':'nicknames', 'label':'Nicknames EX: peer_pressure@:evilbear', 'type':'str', 'minLenght':0x0, 'required':!0x0, 'defaultValue':'' }, { 'name':'allow_mod', 'label':'Allow Mods to edit Nicknames', 'type':'choice', 'choice1':'Yes', 'choice2':'No', 'defaultValue':'Yes' }, { 'name':'fanclubToggle', 'label':'16.) #1 FANCLUB ................................................ Use FANCLUB?', 'type':'choice', 'choice1':'Yes', 'choice2':'No', 'defaultValue':'Yes', 'required':!0x0 }, { 'name':'fanclubName', 'label':'Name of FANCLUB', 'type':'str', 'minLength':0x0, 'maxLength':0x1e, 'required':!0x0, 'defaultValue':'Fanclub' }, { 'name':'fanclubtips', 'label':'Tip to join FANCLUB?', 'type':'choice', 'choice1':'Yes', 'choice2':'No', 'defaultValue':'Yes', 'required':!0x0 }, { 'name':'fcTip', 'label':'Tip amount to join FANCLUB ', 'type':'int', 'minValue':0x1, 'defaultValue':'77' }, { 'name':'reBGColor', 'label':'Room Enter/Leave Background color for FANCLUB - HTML color code (without #)', 'type':'str', 'minLength':0x0, 'maxLength':0x6, 'required':!0x1, 'defaultValue':'FFFFFF' }, { 'name':'reTextColor', 'label':'Room Enter/Leave Text color for FANCLUB - HTML color code (without #)', 'type':'str', 'minLength':0x0, 'maxLength':0x6, 'required':!0x1, 'defaultValue':'12C02B' }, { 'name':'fcTextColor', 'label':'Text color for FANCLUB members messages in chat - HTML color code (without #)', 'type':'str', 'minLength':0x0, 'maxLength':0x6, 'required':!0x1, 'defaultValue':'000000' }, { 'name':'fcBGColor', 'label':'Background color for FANCLUB members messages in chat - HTML color code (without #)', 'type':'str', 'minLength':0x0, 'maxLength':0x6, 'required':!0x1, 'defaultValue':'FFFFFF' }, { 'name':'fcMemberList', 'label':'List of current FANCLUB members, separated by commas (and they need to be the CB username exactly)', 'type':'str', 'minLength':0x0, 'maxLength':0x186a0, 'required':!0x1, 'defaultValue':'' }, { 'name':'fanclubIcon', 'label':'Fanclub Member Icon: (Use :GIFNAME with colon)', 'type':'str', 'minLength':0x0, 'maxLength':0x14, 'required':!0x1, 'defaultValue':'' }, { 'name':'specialfanclubToggle', 'label':'17.) #2 Special FANCLUB ........................................ Use FANCLUB?', 'type':'choice', 'choice1':'Yes', 'choice2':'No', 'defaultValue':'Yes', 'required':!0x1 }, { 'name':'specialfanclubName', 'label':'Name of SPECIAL FANCLUB', 'type':'str', 'minLength':0x0, 'maxLength':0x1e, 'required':!0x0, 'defaultValue':'Special Fanclub' }, { 'name':'specialfanclubtips', 'label':'Tip to join SPECIAL FANCLUB?', 'type':'choice', 'choice1':'Yes', 'choice2':'No', 'defaultValue':'Yes', 'required':!0x0 }, { 'name':'sfcTip', 'label':'Tip amount to join Special FANCLUB ', 'type':'int', 'minValue':0x1, 'defaultValue':'1000' }, { 'name':'tfcTip', 'label':'Tip amount to join Special FANCLUB ', 'type':'int', 'minValue':0x1, 'defaultValue':'1001' }, { 'name':'specialreBGColor', 'label':'Room Enter/Leave Background color for SPECIAL FANCLUB - HTML color code (without #)', 'type':'str', 'minLength':0x0, 'maxLength':0x6, 'required':!0x1, 'defaultValue':'FFFFFF' }, { 'name':'specialreTextColor', 'label':'Room Enter/Leave Text color for SPECIAL FANCLUB - HTML color code (without #)', 'type':'str', 'minLength':0x0, 'maxLength':0x6, 'required':!0x1, 'defaultValue':'12C02B' }, { 'name':'sfcTextColor', 'label':'Text color for FANCLUB members messages in chat - HTML color code (without #)', 'type':'str', 'minLength':0x0, 'maxLength':0x6, 'required':!0x1, 'defaultValue':'000000' }, { 'name':'sfcBGColor', 'label':'Background color for FANCLUB members messages in chat - HTML color code (without #)', 'type':'str', 'minLength':0x0, 'maxLength':0x6, 'required':!0x1, 'defaultValue':'FFFFFF' }, { 'name':'sfcMemberList', 'label':'List of current SPECIAL FANCLUB members, separated by commas (and they need to be the CB username exactly)', 'type':'str', 'minLength':0x0, 'maxLength':0x186a0, 'required':!0x1, 'defaultValue':'' }, { 'name':'specialfanclubIcon', 'label':'Special Fanclub Member Icon (use :GIFNAME with colon) and/or Text (use [FANCLUBNAME] with brackets)', 'type':'str', 'minLength':0x0, 'maxLength':0x28, 'required':!0x1, 'defaultValue':'' }, { 'name':'notifierSpam', 'label':'18.) ROTATING NOTIFIER ............................. Use rotating notifier?', 'type':'choice', 'choice1':'Yes', 'choice2':'No', 'defaultValue':'Yes', 'required':!0x1 }, { 'name':'notifierTimer', 'label':'Interval (in mins) for rotating notices', 'type':'int', 'minValue':0x1, 'maxValue':0x3c, 'defaultValue':0x3, 'required':!0x1 }, { 'name':'spamMessage1', 'label':'Use {newline} between items for multi line notices...Notice #1', 'type':'str', 'minLength':0x1, 'maxLength':0x3e8, 'defaultValue':'', 'required':!0x1 }, { 'name':'spamMessage2', 'label':'Notice #2', 'type':'str', 'minLength':0x1, 'maxLength':0x3e8, 'defaultValue':'', 'required':!0x1 }, { 'name':'spamMessage3', 'label':'Notice #3', 'type':'str', 'minLength':0x1, 'maxLength':0x3e8, 'defaultValue':'', 'required':!0x1 }, { 'name':'spamMessage4', 'label':'Notice #4', 'type':'str', 'minLength':0x1, 'maxLength':0x3e8, 'defaultValue':'', 'required':!0x1 }, { 'name':'spamMessage5', 'label':'Notice #5', 'type':'str', 'minLength':0x1, 'maxLength':0x3e8, 'defaultValue':'', 'required':!0x1 }, { 'name':'spamMessage6', 'label':'Notice #6', 'type':'str', 'minLength':0x1, 'maxLength':0x3e8, 'defaultValue':'', 'required':!0x1 }, { 'name':'spamMessage7', 'label':'Notice #7', 'type':'str', 'minLength':0x1, 'maxLength':0x3e8, 'defaultValue':'', 'required':!0x1 }, { 'name':'spamMessage8', 'label':'Notice #8', 'type':'str', 'minLength':0x1, 'maxLength':0x3e8, 'defaultValue':'', 'required':!0x1 }, { 'name':'spamMessage9', 'label':'Notice #9', 'type':'str', 'minLength':0x1, 'maxLength':0x3e8, 'defaultValue':'', 'required':!0x1 }, { 'name':'spamMessage10', 'label':'Notice #10', 'type':'str', 'minLength':0x1, 'maxLength':0x3e8, 'defaultValue':'', 'required':!0x1 }, { 'name':'tipMenuToggle', 'label':'19.) TIP MENU ............................................... Use Tip Menu feature? This will print, USERNAME has tipped for MENU ITEM, when one of the values is tipped', 'type':'choice', 'choice1':'Yes', 'choice2':'No', 'defaultValue':'Yes', 'required':!0x1 }, { 'name':'tipMenuColorscheme', 'label':'Tip Menu Color Scheme - Theme is colors picked above in personalization', 'type':'choice', 'choice1':'Theme', 'choice2':'Custom (Please define below)', 'defaultValue':'Custom (Please define below)', 'required':!0x1 }, { 'name':'txtcolor', 'label':'Custom Text Color - HTML color code (without #)', 'type':'str', 'defaultValue':'FF0000', 'required':!0x1 }, { 'name':'bgcolor', 'label':'Custom Highlight Color - HTML color code (without #)', 'type':'str', 'defaultValue':'FFFFFF', 'required':!0x1 }, { 'name':'sepchar', 'type':'choice', 'choice1':'Vertical Bar', 'choice2':'Heart', 'choice3':'Pink Glitter', 'choice4':'Flowers', 'choice5':'Bow', 'choice6':'Pixel Heart', 'choice7':'Pink Sparkle', 'choice8':'Custom [Enter Below]', 'defaultValue':'Heart', 'label':'Separator character' }, { 'name':'customSep', 'label':'Custom Separator (use :GIFNAME with colon)', 'type':'str', 'minLength':0x0, 'maxLength':0x3c, 'required':!0x1, 'defaultValue':'[Optional - Set Separator Character to \"Custom\" above]' }, { 'name':'tipMenuNotifierToggle', 'label':'Display the tip menu at the interval?', 'type':'choice', 'choice1':'Yes', 'choice2':'No', 'defaultValue':'No', 'required':!0x1 }, { 'name':'tipmenunotifier', 'label':'Interval (in mins) for rotating tip menu', 'type':'int', 'minValue':0x1, 'maxValue':0x3c, 'defaultValue':0x2, 'required':!0x1 }, { 'name':'tipMenuMessageNotifierToggle', 'label':'Display the tip menu messages seen below at the interval?', 'type':'choice', 'choice1':'Yes', 'choice2':'No', 'defaultValue':'No', 'required':!0x1 }, { 'name':'tipmenumessagenotifier', 'label':'Interval (in mins) for tip menu rotating messages', 'type':'int', 'minValue':0x1, 'maxValue':0x3c, 'defaultValue':0x3, 'required':!0x1 }, { 'name':'msg1', 'type':'str', 'required':!0x0, 'label':'Message 1', 'defaultValue':'Tip Menu is active, use /tipmenu to see the tip menu' }, { 'name':'msg2', 'type':'str', 'required':!0x1, 'label':'Message 2 (Optional)' }, { 'name':'msg3', 'type':'str', 'required':!0x1, 'label':'Message 3 (Optional)' }, { 'name':'item1', 'type':'str', 'required':!0x1, 'label':'Item 1 (Use this Format 10--kiss)' }, { 'name':'item2', 'type':'str', 'required':!0x1, 'label':'Item 2' }, { 'name':'item3', 'type':'str', 'required':!0x1, 'label':'Item 3' }, { 'name':'item4', 'type':'str', 'required':!0x1, 'label':'Item 4' }, { 'name':'item5', 'type':'str', 'required':!0x1, 'label':'Item 5' }, { 'name':'item6', 'type':'str', 'required':!0x1, 'label':'Item 6' }, { 'name':'item7', 'type':'str', 'required':!0x1, 'label':'Item 7' }, { 'name':'item8', 'type':'str', 'required':!0x1, 'label':'Item 8' }, { 'name':'item9', 'type':'str', 'required':!0x1, 'label':'Item 9' }, { 'name':'item10', 'type':'str', 'required':!0x1, 'label':'Item 10' }, { 'name':'item11', 'type':'str', 'required':!0x1, 'label':'Item 11' }, { 'name':'item12', 'type':'str', 'required':!0x1, 'label':'Item 12' }, { 'name':'item13', 'type':'str', 'required':!0x1, 'label':'Item 13' }, { 'name':'item14', 'type':'str', 'required':!0x1, 'label':'Item 14' }, { 'name':'item15', 'type':'str', 'required':!0x1, 'label':'Item 15' }, { 'name':'item16', 'type':'str', 'required':!0x1, 'label':'Item 16' }, { 'name':'item17', 'type':'str', 'required':!0x1, 'label':'Item 17' }, { 'name':'item18', 'type':'str', 'required':!0x1, 'label':'Item 18' }, { 'name':'item19', 'type':'str', 'required':!0x1, 'label':'Item 19' }, { 'name':'item20', 'type':'str', 'required':!0x1, 'label':'Item 20' }, { 'name':'item21', 'type':'str', 'required':!0x1, 'label':'Item 21' }, { 'name':'item22', 'type':'str', 'required':!0x1, 'label':'Item 22' }, { 'name':'item23', 'type':'str', 'required':!0x1, 'label':'Item 23' }, { 'name':'item24', 'type':'str', 'required':!0x1, 'label':'Item 24' }, { 'name':'item25', 'type':'str', 'required':!0x1, 'label':'Item 25' } ]; var lastSilenced=''; var roomHost=cb.room_slug,hm='Error!',mm='Error!',am='lillytestet',samod=cb.settings.specialaccessMod,dev=''; sm=''; tipArray=new Array(),tipArraySorted=!0x0,tipTotal=0x0,tipNote='',modArray=new Array(); modArray[0x0]=roomHost; var emodArray=new Array(),modAndEmodArray=new Array(),modBlockMsgArray=new Array(),lastBlocked=new Array(),niceArray=new Array(),greyArray=new Array(),silenceArray=new Array(),lastToUseSL=null,lastToGetSLed=null,ignoreArray=new Array(),numIgnorers=0x0,whisArray=new Array(),numWhis=0x0,whis='',silenceLevel=0x0,graphicLevel=0x1,startTimeG=0x0,timerDurationG=0x0,timerTimeoutG=0x0,oneTimeoutG=0x0,fiveTimeoutG=0x0,timeRemainingG=0x0,startTimeS=0x0,timerDurationS=0x0,timerTimeoutS=0x0,oneTimeoutS=0x0,fiveTimeoutS=0x0,timeRemainingS=0x0,startTimeM=0x0,timerDurationM=0x0,timerTimeoutM=0x0,oneTimeoutM=0x0,fiveTimeoutM=0x0,timeRemainingM=0x0,startTimeL=0x0,timerDurationL=0x0,timerTimeoutL=0x0,oneTimeoutL=0x0,fiveTimeoutL=0x0,tenTimeoutL=0x0,fifteenTimeoutL=0x0,timeRemainingL=0x0,currentKing='',kingTip=0x0,kingMin=parseInt(cb.settings.kingMin),kingTimer=parseInt(cb.settings.kingTipperTimer),kingTimeout=0x0,ldrArray=[['',0x0],['',0x0],['',0x0],['',0x0],['',0x0]],ldrTimer=parseInt(cb.settings.leaderBoardTimer),ldrTimeout=0x0,initialize=0x0,kingTipperSpam=0x0,notifierSpamTGL=0x0,leaderboardSpam=0x0,noticeArray=[],noticeNum=0x0,notifierTimer=parseInt(cb.settings.notifierTimer),notifierTimeout=0x0,customWordlistRegex='',minuteMS=parseInt(0xea60),limitCam='on',dashLine='�'.repeat(0x19),atkingtippertip=cb.settings.atkingTipperTip,atkingtippername=cb.settings.atkingTipperName,atkingtippericon=cb.settings.atkingTipperIcon,mkingtippertip=cb.settings.mkingTipperTip,mkingtippername=cb.settings.mkingTipperName,mkingtippericon=cb.settings.mkingTipperIcon,tipMenuTimer=parseInt(cb.settings.tipmenunotifier),tipMenuTimeout=0x0,tipMenuSpam=0x0,tipMenuMessageTimer=parseInt(cb.settings.tipmenumessagenotifier),tipMenuMessageTimeout=0x0,tipMenuMessageSpam=0x0,messArray=new Array(),messNum=0x0,vipArray=[],black='#000000',white='#FFFFFF',purple_dark='#AC00DC',purple_light='#EEE1F1',pink_dark='#FF77FF',pink_light='#F7F7F7',blue_dark='#000000',blue_light='#ADDDFF',dark_blue_dark='#003ACD',dark_blue_light='#EEEEEE',green_dark='#000000',green_light='#7AFFC2',chartreuse_dark='#0000FF',chartreuse_light='#7FF000',halloween_dark='#F87217',halloween_light='#000000',christmas_dark='#079000',christmas_light='#FFD7D7',valentines_dark='#F00000',valentines_light='#FFE7E7',tip_bg='#000000',tip_text='#FFFF33',cb_dark='#000000',cb_light='#EEEEEE',whis_recd_bg='#003ACD',whis_recd_text='#EEEEEE',whis_cmnds_sentbg='#EEEEEE',whis_cmnds_senttext='#000000',error_dark='#000000',error_light='#FFC8C8',theme_dark=purple_dark,theme_light=purple_light,cn_mod='#67008D',cn_broadcaster='#0A7700',cn_broadcaster_mod='#FF7300',bullets=' � � � ',hearts=' ? ? ? ',crown=':crownprincess',version='MrBot version 7.7.13 6-16-17',fcMembers= { } ,sfcMembers= { } ,i=0x0,n=0x0,ii=0x0,MAXITEMS=0x3,MAXTIPMENU=0x19,MAXSEP=0x7; separators=[ { 'label':'Heart', 'shortcut':':heart2' }, { 'label':'Pink Glitter', 'shortcut':':pixelglitter' }, { 'label':'Flowers', 'shortcut':':tinyflower2' }, { 'label':'Bow', 'shortcut':':bluebow' }, { 'label':'Pixel Heart', 'shortcut':':pixelheart' }, { 'label':'Pink Sparkle', 'shortcut':':sparklpink' }, { 'label':'Custom [Enter Below]', 'shortcut':cb.settings.customSep } ]; var aliases= { } ,users= { } ,app_notice_newline='\x0a: ',HBnicknames,allow_mod,show_alias,regularExp_ListSplit=/[,\s]+/,twcRegex=/t.?k.?n.?wh.?r.?_c.?nt.?/i; cb.setTimeout(atkingTipperNotifier,0xea60*cb.settings.atkingTipperNotifier),cb.setTimeout(mkingTipperNotifier,0xea60*cb.settings.mkingTipperNotifier); var setTimeout=function a(x008,x009) { function x010() { _aa.cancelled || x008(); } if (!(this instanceof a))return new a(x008,x009); var _aa=this; appTimeout(x010,x009); } ,clearTimeout=function(x011) { null!=x011 && (x011.cancelled=!0x0); }; if (cb.onMessage(function(x012) { function x013(a) { var _aa='I\'m sorry, but the silence level has been set to '+a+'. Your message was not sent.\x0a'; _aa+='For more information about silence levels, type \"/hbhelp silencelevel\"\x0a',_aa+='Please enjoy the show :smile',x012['X-Spam']=!0x0,_aa=0x1,notifyError(_aa,_aj); } function x014() { for (var _aa=0x0; _aa<_ai.length; _aa++)if (':'==_ai[_aa].charAt(0x0))return _ai[_aa].match(/^(:(-?|o?)(\)|\(|}|{|P|D|3|b|O|0|S|X|\$|\/|\\|\||\*))$/gi)?!0x1:(x012.m=x012.m.replace(/:[^\s]+/g,function(x015) { return'[IMG: '+x015.slice(0x1)+']'; } ),x012['X-Spam']=!0x0,!0x0); } function x016(a) { var _aa='I\'m sorry, but the graphic level has been set to '+a+'. Your message was not sent.\x0a'; _aa+='For more information about graphic levels, type \"/hbhelp graphiclevel\"\x0a',_aa+='Please enjoy the show :smile',x014() && (notifyError(_aa,_aj),_ac=0x1); } function x017(a) { if (x012['X-Spam']=!0x0,_ab=0x1,!_ag && !_cd && 0x0==_aa) { _aa=0x1,0x0==_ad && x014(), 'Spam Wordlist 1'==a|'Spam Wordlist 2'==a|'Spam Wordlist 3'==a && 'Yes'==cb.settings.autoSilenceSpamToggle && silenceArrayPopulate(x012.user); var _aa=x012.m; for (mod=0x0; mod<modAndEmodArray.length; mod++)thisMod=modAndEmodArray[mod],cbjs.arrayContains(modBlockMsgArray,thisMod) && (notifyErrorBold(bullets+'MESSAGE BLOCKED: '+a+bullets,thisMod),notifyError(x012.user+': '+_aa.substring(0x0,0x1f4),thisMod), 'Spam Wordlist 1'==a|'Spam Wordlist 2'==a|'Spam Wordlist 3'==a && 'Yes'==cb.settings.autoSilenceSpamToggle && notify(x012.user+' has been silenced by the Bot.',thisMod)); cbjs.arrayContains(modBlockMsgArray,cb.room_slug) && ('Yes'==cb.settings.greyWordlistShowBroadcaster && 'Yes'==cb.settings.greyWordlistToggle || 'Yes'==cb.settings.customWordlistShowBroadcaster && 'Yes'==cb.settings.customWordlistToggle || 'Yes'==cb.settings.customWordlistShowBroadcaster && 'Yes'==cb.settings.spamWordlistToggle) && (notifyErrorBold(bullets+'MESSAGE BLOCKED: '+a+bullets,cb.room_slug),notifyError(x012.user+': '+_aa.substring(0x0,0x1f4),cb.room_slug), 'Spam Wordlist 1'==a|'Spam Wordlist 2'==a|'Spam Wordlist 3'==a && 'Yes'==cb.settings.autoSilenceSpamToggle && notify(x012.user+' has been silenced by the Bot.',cb.room_slug)),('Yes'==cb.settings.greyWordlistNotice || 'Yes'==cb.settings.customWordlistNotice || 'Yes'==cb.settings.spamWordlistNotice) && notifyError('Your message was not sent because it was flagged by the wordlist. Be nice and don\'t make demands, don\'t ask for something without tipping, don\'t talk about religion or politics, no racist comments or posting spam and no bb, babe, baby, or feet. Be a Tipper or Fanclub member to keep from being silenced by the bot for spammy words!',_aj),lastBlocked.push(x012.user),0xa==lastBlocked.length && lastBlocked.shift(); } } function x018() { this.debug=function(x019) { try { notifyHelpPlain(eval(x019),dev),notifyHelpPlain(eval(x019),sm); } catch(x020) { notifyHelpPlain('no such variable',dev),notifyHelpPlain('no such variable',sm); } }; } var _aa=0x0,_ab=0x0,_ac=0x0,_ad=0x0,_ae='~`!@#$%^&*()_-+={[}]|\\:;\"\'<,>.?/',_af=x012.m.trim(),_ag='/'==_af.charAt(0x0),_ah='!'==_af.charAt(0x0),_ai=_af.split(/\s+/g),_aj=x012.user,_ba=findTipper(_aj)>-0x1 && Number.parseInt(tipArray[findTipper(_aj)].nTotal)>0x0,_bb=_aj==cb.room_slug,_bc=_aj==samod,_bd=_aj==dev,_be=_aj==sm,_bf=x012.is_mod,_bg=x012.in_fanclub,_bh=cbjs.arrayContains(emodArray,_aj),_bj=cbjs.arrayContains(niceArray,_aj),_cb=cbjs.arrayContains(greyArray,_aj),_cd=cbjs.arrayContains(silenceArray,_aj),_cf=!x012.has_tokens && !_ba && !x012.tipped_recently,_cg=x012.tipped_recently || _ba,_ch=x012.m,_ci=!0x0,_cj=_bb || _bf,_da=cbjs.arrayContains(vipArray,_aj),_dc=/[,\s]+/,_dd,_de,_df,_dg=_aj.toLowerCase(),_dh,_di,_dj,_ea; if (_bf || _bd || _be || _bb || !cbjs.arrayContains(modArray,_aj) || (modArrayDepopulate(_aj),modAndEmodArrayDepopulate(_aj)),_bf || _bd || _be || _bb || !cbjs.arrayContains(modBlockMsgArray,_aj) || modBlockMsgArrayDepopulate(_aj),(_bf || _bd || _be) && (cbjs.arrayContains(modArray,_aj) || (modArrayPopulate(_aj),modAndEmodArrayPopulate(_aj),('Yes'==cb.settings.greyWordlistShowModerators || 'Yes'==cb.settings.customWordlistShowModerators || 'Yes'==cb.settings.spamWordlistShowModerators) && modBlockMsgArrayPopulate(_aj),!_bd && !_be || 'No'!=cb.settings.greyWordlistShowModerators && 'No'!=cb.settings.customWordlistShowModerators && 'No'!=cb.settings.spamWordlistShowModerators || modBlockMsgArrayPopulate(_aj))),_cd && !(_bb || _bf || _bh || _bj || _bd || _be || _bc) && 0x0==_aa && (x012['X-Spam']=!0x0,_aa=0x1),silenceLevel>0x0 && !(_bb || _bf || _bh || _bg || isFC(_aj) || isSFC(_aj) || _bj || _bd || _be || _bc) && 0x0==_aa)switch(silenceLevel) { case 0x1:_cf && x013(silenceLevel); break; case 0x2:_cg || x013(silenceLevel); break; case 0x3:_ba || x013(silenceLevel); break; case 0x4:x013(silenceLevel); } if (graphicLevel>0x0 && !(_bb || _bf || _bh || _bg || isFC(_aj) || isSFC(_aj) || _bj || _bd || _be || _bc) && 0x0==_aa)switch(graphicLevel) { case 0x1:(_cf || _cb) && x016(graphicLevel); break; case 0x2:(!_cg || _cb) && x016(graphicLevel); break; case 0x3:(!_ba || _cb) && x016(graphicLevel); break; case 0x4:x016(graphicLevel); } if (!(_bb || _bf || _bh || _bg || isFC(_aj) || isSFC(_aj) || _bj || _bd || _be || _bc)) { if ('Yes'==cb.settings.spamWordlistToggle && (_cf || _cb || 'Everyone'==cb.settings.spamWordlistLevel && !_ba && !_bg)) { var _eb=dospamWordlist(_af); _eb && x017(_eb); } if ('Yes'==cb.settings.customWordlistToggle && ''!=customWordlistRegex && (_cf || _cb || 'Everyone'==cb.settings.customWordlistLevel && !_ba && !_bg) && 'blocked'==docustomWordlist(_af,_aj) && x017('Custom Wordlist'), 'Yes'==cb.settings.greyWordlistToggle && (_cf || _cb || 'Everyone'==cb.settings.greyWordlistLevel && !_ba && !_bg)) { var _eb=dogreyWordlist(_af); _eb && x017(_eb); } } if (_ag) { x012['X-Spam']=!0x0,x012.background=whis_cmnds_sentbg,x012.c=whis_cmnds_senttext; var _ed=0x0,_ee,_ef,_eg; _eg=_af.indexOf(' '),_eg>-0x1?(_ee=_af.substr(0x0,_eg).toLowerCase(),_ef=_af.substring(_eg+0x1).trim()):(_ee=_af.toLowerCase(),_ef=null); var _eh=null; for (_fb=0x1; _fb<_ai.length; _fb++)0x1==_fb?_eh=_ai[_fb]:_eh+=' '+_ai[_fb]; var _ei=null; for (_fb=0x2; _fb<_ai.length; _fb++)0x2==_fb?_ei=_ai[_fb]:_ei+=' '+_ai[_fb]; var _ej=null; for (_fb=0x1; _fb<_ai.length; _fb++)0x1==_fb?_ej=_ai[_fb]:_ej+=' '+_ai[_fb]; if (0x0==_ed && (_bb || _bf || _bh || _bd || _be || _bc))switch(_ed=0x1,_ee) { case'/n':case '/note':case'/notice':case '/sendnotice':case '/cn':'r'==_ai[0x1]?null==_ei || ''==_ei && ' '==_ei && ' '==_ei?notifyError('You can\'t send a blank message.\x0aThe correct syntax for this command is \"/cn r message\".',_aj):sendPublicNotice(_ei,_aj, '', 'red'):null==_eh || ''==_eh && ' '==_eh && ' '==_eh?notifyError('You can\'t send a blank message.\x0aThe correct syntax for this command is \"/cn message\".',_aj):sendPublicNotice(_eh,_aj, '', 'default'); break; case '/cndh':'r'==_ai[0x1]?null==_ei || ''==_ei && ' '==_ei && ' '==_ei?notifyError('You can\'t send a blank message.\x0aThe correct syntax for this command is \"/cndh r message\".',_aj):sendPublicNotice(_ei,_aj, 'divh', 'red'):null==_eh || ''==_eh && ' '==_eh && ' '==_eh?notifyError('You can\'t send a blank message.\x0aThe correct syntax for this command is \"/cndh message\".',_aj):sendPublicNotice(_eh,_aj, 'divh', 'default'); break; case '/cnd':'r'==_ai[0x1]?null==_ei || ''==_ei && ' '==_ei && ' '==_ei?notifyError('You can\'t send a blank message.\x0aThe correct syntax for this command is \"/cnd r message\".',_aj):sendPublicNotice(_ei,_aj, 'div', 'red'):null==_eh || ''==_eh && ' '==_eh && ' '==_eh?notifyError('You can\'t send a blank message.\x0aThe correct syntax for this command is \"/cnd message\".',_aj):sendPublicNotice(_eh,_aj, 'div', 'default'); break; case '/cnh':'r'==_ai[0x1]?null==_ei || ''==_ei && ' '==_ei && ' '==_ei?notifyError('You can\'t send a blank message.\x0aThe correct syntax for this command is \"/cnh r message\".',_aj):sendPublicNotice(_ei,_aj, 'h', 'red'):null==_eh || ''==_eh && ' '==_eh && ' '==_eh?notifyError('You can\'t send a blank message.\x0aThe correct syntax for this command is \"/cnh message\".',_aj):sendPublicNotice(_eh,_aj, 'h', 'default'); break; case '/tb':case '/pmm':null==_eh || ''==_eh && ' '==_eh && ' '==_eh?notifyError('You can\'t send a blank message.\x0aThe correct syntax for this command is \"/tb message\".',_aj):sendPrivateNotice(_eh,_aj, 'to_caster'); break; case '/tm':null==_eh || ''==_eh && ' '==_eh && ' '==_eh?notifyError('You can\'t send a blank message.\x0aThe correct syntax for this command is \"/tm message\".',_aj):sendPrivateNotice(_eh,_aj, 'to_mods'); break; case '/tbm':null==_eh || ''==_eh && ' '==_eh && ' '==_eh?notifyError('You can\'t send a blank message.\x0aThe correct syntax for this command is \"/tbm message\".',_aj):sendPrivateNotice(_eh,_aj, 'to_mods_and_caster'); break; case '/tv':var _fa=_ai[0x1]; null==_fa || ''==_fa && ' '==_fa?notifyError('You didn\'t specify a username.\x0aThe correct syntax for this command is \"/tv username message\".',_aj):_fa!=_aj?null==_eh || ''==_eh && ' '==_eh && ' '==_eh?notifyError('You can\'t send a blank message.\x0aThe correct syntax for this command is \"/tv username message\".',_aj):sendPrivateNotice(_eh,_aj, 'to_viewer',_fa.toLowerCase()):notifyError('Talking to yourself is a little odd...',_aj); break; case '/emod':emod(_ai[0x1],_ai[0x2],_aj); break; case '/tiptotal':case '/tt':notify('Total tips: '+tipTotal+' tokens',_aj); break; case '/clearchat':case '/cc':if (_bb || _bf || _bh || _bd || _be || _bc) { for (var _fb=0x0,_fc=0x1b; _fb<_fc; )notifyHeaderThemeBold(bullets+' Clearing Chat! '+bullets),_fb++; notifyHeaderThemeBold(bullets+' Chat has been Cleared! '+bullets); break; } case '/req':if (_bb || _bf || _bh || _bd || _be || _bc) { for (var _fb=0x0,_fc=0x1; _fb<_fc; )notifyHeaderThemeBold(bullets+' GUYS! '+bullets),_fb++; notifyHeaderThemeBold(bullets+' :RequestTip '+bullets); break; } case '/eng':if (_bb || _bf || _bh || _bd || _be || _bc) { for (var _fb=0x0,_fc=0x1; _fb<_fc; )notifyHeaderThemeBold(bullets+' GUYS! '+bullets),_fb++; notifyHeaderThemeBold(bullets+' :englishOnlyPlease '+bullets); break; } case '/bio':if (_bb || _bf || _bh || _bd || _be || _bc) { for (var _fb=0x0,_fc=0x1; _fb<_fc; )notifyHeaderThemeBold(bullets+' GUYS! '+bullets),_fb++; notifyHeaderThemeBold(bullets+' :ReadBioInteresting '+bullets); break; } case '/node':if (_bb || _bf || _bh || _bd || _be || _bc) { for (var _fb=0x0,_fc=0x1; _fb<_fc; )notifyHeaderThemeBold(bullets+' GUYS! '+bullets),_fb++; notifyHeaderThemeBold(bullets+' :nodemandmov2 '+bullets); break; } case '/tipif':if (_bb || _bf || _bh || _bd || _be || _bc) { for (var _fb=0x0,_fc=0x1; _fb<_fc; )notifyHeaderThemeBold(bullets+' GUYS! '+bullets),_fb++; notifyHeaderThemeBold(bullets+' :tipifyou '+bullets); break; } case'/rude':if (_bb || _bf || _bh || _bd || _be || _bc) { for (var _fb=0x0,_fc=0x1; _fb<_fc; )notifyHeaderThemeBold(bullets+' GUYS! '+bullets),_fb++; notifyHeaderThemeBold(bullets+' :ml-rude '+bullets); break; } case '/classy':if (_bb || _bf || _bh || _bd || _be || _bc) { for (var _fb=0x0,_fc=0x1; _fb<_fc; )notifyHeaderThemeBold(bullets+' GUYS! '+bullets),_fb++; notifyHeaderThemeBold(bullets+' :classytip '+bullets); break; } case '/nickname':'No'==allow_mod && _bf?notifyError('Sorry the broadcaster has not allowed Mods to modify nicknames',_aj):null==_eh?notifyError('Missing arguments, the right command is /nickname user nick',_aj):null!=(_di=/^([a-zA-Z0-9_]{3,})(\s+.+)?$/.exec(_eh))?notify(set_alias(_di[0x1].toLowerCase(),parse_ucodes_and_emotes((_di[0x2] || '').trim())).join(app_notice_newline),_aj):notifyError('Missing arguments, the right command is /nickname user nick',_aj); break; case '/nicknames':_dh=[]; for (_dd in aliases)aliases.hasOwnProperty(_dd) && _dh.push(_dd+'@'+encode_ucodes(aliases[_dd])); notify('Nicknames List: '+(_dh.length?_dh.join(', '):'(empty)'),_aj); break; case '/nickmod':'Yes'==allow_mod?(allow_mod='No',notify('Mod Access : REVOKED',_aj)):'No'==allow_mod && (allow_mod='Yes',notify('Mod Access : ENABLED',_aj)); break; default:_ed=0x0; } if (0x0==_ed && (_bb || _bf || _bh || _bd || _be || _bc))switch(_ed=0x1,_ee) { case '/blocknotice':blockNotice(_ef,_aj); break; case'/addvip':if (_bf || _bb || _bd || _be || _bc)if (null!=_ef) { var _gh=_ef.split(_dc); if (_gh.length>0x1) { notify('Adding multiple users to the VIP list.',_aj); for (var _fb=0x0; _fb<_gh.length; _fb++)''!=_gh[_fb] && (cbjs.arrayContains(vipArray,_gh[_fb])?notify(_gh[_fb]+' is already on the list. Skipping.',_aj):(vipArrayPopulate(_gh[_fb]),notify('Added '+_gh[_fb]+' to the list.',_aj),notify(_aj+' has added you to the VIP list.',_gh[_fb]))); notify('All users were added and notified.',_aj),notify(_aj+' has added multiple users to the VIP list.\x0aUsers added: '+cbjs.arrayJoin(_gh, ', '), ''); } else { var _gj=_ai[0x1]; vip(_gj,_aj, 'a'); } } else notifyError('You didn\'t specify who you want to add to the VIP list.\x0aType \"/hbhelp addvip\" to see how to use /addvip.\x0aAdditionally, check the viplist help section for more info.',_aj); else notifyError('Only moderators and broadcasters are able to use that command.\x0aType \"/hbhelp commands\" to see a full list of the available commands.',_aj); break; case'/removevip':_bf || _bb || _bd || _be || _bc?vip(_ai[0x1],_aj, 'r'):notifyError('Only moderators and broadcasters are able to use that command.\x0aType \"/hbhelp commands\" to see a full list of the available commands.',_aj); break; case '/viplist':_bf || _bb || _bd || _be || _bc?(notify('Users currently on the VIP List: '+vipArray.length,_aj),notify(vipArray.length>0x0==0x1?cbjs.arrayJoin(vipArray, ', '):'No users.',_aj),notify('',_aj)):notifyError('Only moderators and broadcasters are able to use that command.\x0aType \"/hbhelp commands\" to see a full list of the available commands.',_aj); break; case '/export':_bf || _bb || _bd || _be || _bc?vipArray.length>0x0?x012.m='/add '+cbjs.arrayJoin(vipArray, ', '):notifyError('There\'s no one on the VIP list.',_aj):notifyError('Only moderators and broadcasters are able to use that command.\x0aType \"/hbhelp commands\" to see a full list of the available commands.',_aj); break; case '/silencelevel':setSilenceLevel(_ef,_aj); break; case '/greysoff':case '/greyoff':case '/graysoff':case'/grayoff':case '/silencegreys':case '/silencegrays':setSilenceLevel(0x1,_aj); break; case'/greyson':case '/greyon':case '/grayson':case '/grayon':case'/unsilencegreys':case '/unsilencegrays':setSilenceLevel(0x0,_aj); break; case '/graphiclevel':setGraphicLevel(_ef,_aj); break; case '/silence':case'/s':silence(_ef,_aj); break; case'/unsilence':case '/us':unsilence(_ef,_aj); break; case '/unsilencelast':case'/usl':unsilencelast(_aj); break; case '/silencelast':case'/sl':silenceLast(_aj); break; case '/addnice':case'/an':niceList(_ef,_aj, 'a'); break; case '/removenice':case '/rn':niceList(_ef,_aj, 'r'); break; case '/addgrey':case '/addgray':case '/ag':greyList(_ef,_aj, 'a'); break; case'/removegrey':case '/removegray':case '/rg':greyList(_ef,_aj, 'r'); break; case '/starttimerg':case '/stg':startTimerG(_ef,_aj); break; case '/addtimeg':case '/atg':addTimeG(_ef,_aj); break; case '/minustimeg':case '/mtg':minusTimeG(_ef,_aj); break; case '/stoptimerg':case '/endtimerg':case '/etg':stopTimerG(_aj); break; case '/starttimers':case '/sts':startTimerS(_ef,_aj); break; case '/addtimes':case'/ats':addTimeS(_ef,_aj); break; case '/minustimes':case '/mts':minusTimeS(_ef,_aj); break; case'/stoptimers':case '/endtimers':case '/ets':stopTimerS(_aj); break; case '/starttimerm':case'/stm':startTimerM(_ef,_aj); break; case '/addtimem':case '/atm':addTimeM(_ef,_aj); break; case'/minustimem':case '/mtm':minusTimeM(_ef,_aj); break; case'/stoptimerm':case '/endtimerm':case '/etm':stopTimerM(_aj); break; case '/starttimerl':case '/stl':startTimerL(_ef,_aj); break; case'/addtimel':case '/atl':addTimeL(_ef,_aj); break; case'/minustimel':case '/mtl':minusTimeL(_ef,_aj); break; case '/stoptimerl':case'/endtimerl':case '/etl':stopTimerL(_aj); break; case'/kingspam':kingSpamToggle(_ef,_aj); break; case '/notifierspam':notifierSpamToggle(_ef,_aj); break; case '/leaderboardspam':leaderboardSpamToggle(_ef,_aj); break; case '/shownotices':var _ha=''; if (noticeArray.length) { for (var _fb=0x0; _fb<noticeArray.length; _fb++)_fb>0x0 && (_ha+='\x0a-------------------------\x0a'),_ha+='� Rotating Notice #'+(_fb+0x1)+': \x0a',_ha+=noticeArray[_fb]; notifyHelpPlain(_ha,_aj); } else notifyHelpPlain('There are no rotating notices set.',_aj); break; case '/removenotice':case'/removenote':var _hc=parseInt(_ef); _hc>0x0 && _hc<=noticeArray.length?(noticeArray.splice(_hc-0x1,0x1),notify('You have removed notice #'+_hc,_aj)):_ef?notifyError('\''+_ef+'\' is not a valid notice.',_aj):notifyError('You did not enter a valid notice.',_aj); break; case '/addnotice':case '/addnote':var _hd=noticeArray.length; _ef?(addNotice(_ef),_hd || (sendRotating(),notifierSpam()),notify('You have successfully added a new notice!',_aj)):notifyError('You did not enter a valid notice.',_aj); break; case '/addword':case '/aw':_ef?(addWord(_ef),notify('You have successfully added \''+_ef+'\' to the custom wordlist!',_aj)):notifyError('You did not enter a valid word.',_aj); break; case '/noticetimer':var _hc=parseInt(_ef); _hc>0x0?(notifierTimer=_hc,notify('Rotating notices will now display every '+_hc+' minutes.',_aj)):_ef?notifyError('\''+_ef+'\' is not a valid value for /noticetimer.',_aj):notifyError('You did not enter a valid value for /noticetimer.',_aj); break; default:_ed=0x0; } if (0x0==_ed)switch(_ed=0x1,_ee) { case '/hbhelp':help(_ef,_aj); break; case '/leaderboard':case '/lb':showLeaderBoard(_aj); break; case '/timeleftg':case '/tlg':timeLeftG(x012.user); break; case '/timelefts':case '/tls':timeLeftS(x012.user); break; case '/timeleftm':case '/tlm':timeLeftM(x012.user); break; case '/timeleftl':case '/tll':timeLeftL(x012.user); break; case '/tipmenu':tipMenu(_aj); break; case '/changefcicon':case'/cfci':_bb || _bf || _bd || _be || _bc?_ef?(changefcIcon(_ef),notify('You have successfully changed '+cb.settings.fanclubName+' icon to '+_ef,_aj)):notifyError('You did not enter a valid word.',_aj):notifyError('\"'+_ee+'\" is not a valid command.\x0aType \"/lbhelp\u00a0commands\" to see a full list of the available commands.',_aj); break; case'/changesfcicon':case '/csfci':_bb || _bf || _bd || _be || _bc?_ef?(changesfcIcon(_ef),notify('You have successfully changed '+cb.settings.specialfanclubName+' icon to '+_ef,_aj)):notifyError('You did not enter a valid word.',_aj):notifyError('\"'+_ee+'\" is not a valid command.\x0aType \"/lbhelp\u00a0commands\" to see a full list of the available commands.',_aj); break; case '/changecrownicon':case '/cci':_bb || _bf || _bd || _be || _bc?_ef?(changecrownIcon(_ef),notify('You have successfully changed the daily crown icon to '+_ef,_aj)):notifyError('You did not enter a valid word.',_aj):notifyError('\"'+_ee+'\" is not a valid command.\x0aType \"/lbhelp\u00a0commands\" to see a full list of the available commands.',_aj); break; case '/fanclubtoggle':case '/fct':(_bb || _bf || _bd || _be || _bc) && fanclubToggle(_ef,_aj); break; case '/specialfanclubtoggle':case '/sfct':(_bb || _bf || _bd || _be || _bc) && specialfanclubToggle(_ef,_aj); break; case '/whispertoggle':case'/wt':(_bb || _bf || _bd || _be || _bc) && whisperToggle(_ef,_aj); break; case'/spamwordlisttoggle':case '/swlt':(_bb || _bf || _bd || _be || _bc) && spamWordlistToggle(_ef,_aj); break; case'/customwordlisttoggle':case '/cwlt':(_bb || _bf || _bd || _be || _bc) && customWordlistToggle(_ef,_aj); break; case '/greywordlisttoggle':case'/gwlt':(_bb || _bf || _bd || _be || _bc) && greyWordlistToggle(_ef,_aj); break; case '/limitcamtoggle':case '/lct':(_bb || _bf || _bd || _be || _bc) && limitCamToggle(_ef,_aj); break; case '/tipmenutoggle':case'/tmt':(_bb || _bf || _bd || _be || _bc) && tipMenuToggle(_ef,_aj); break; case '/tipmenunotifiertoggle':case '/tmnt':(_bb || _bf || _bd || _be || _bc) && tipMenuNotifierToggle(_ef,_aj); break; case '/tipmenumessagetoggle':case '/tmmt':(_bb || _bf || _bd || _be || _bc) && tipMenuMessageNotifierToggle(_ef,_aj); break; case '/fanclubtipstoggle':case '/fctip':(_bb || _bf || _bd || _be || _bc) && fanclubtipsToggle(_ef,_aj); break; case '/specialfanclubtipstoggle':case '/sfctip':(_bb || _bf || _bd || _be || _bc) && specialfanclubtipsToggle(_ef,_aj); break; case'/autosilencespamtoggle':case'/asst':(_bb || _bf || _bd || _be || _bc) && autoSilenceSpamToggle(_ef,_aj); break; case '/invalidcommandtoggle':case '/ict':(_bb || _bf || _bd || _be || _bc) && invalidCommandToggle(_ef,_aj); break; case '/whisper':case'/w':case'/tell':case'/t':case '/pm':case'/reply':case'/r':case '/ignorelevel':case'/ignore':case '/unignore':if (_bd || _be)_ee.match(/\b(whisper|w|tell|t|pm)\b/gi)?(sendWhisper(_ai,_aj,!0x0),x012.m=textReplaceWhisper(_ai,_aj),x012.background=cb_light,x012.c=cb_dark):_ee.match(/\b(reply|r)\b/gi) && (sendReply(_ai,_aj),x012.m=textReplaceWhisper(_ai,_aj,!0x0),x012.background=cb_light,x012.c=cb_dark); else if ('No'==cb.settings.whisperToggle.substr(0x0,0x2))notifyError('The broadcaster has disabled the \"whisper\" feature',_aj); else if (_ee.match(/\b(whisper|w|tell|t|pm)\b/gi)) { var _hf; _hf=_cf && 0x0==_aa?0x1:_cg || 0x0!=_aa?_ba || 0x0!=_aa?0x4:0x3:0x2,_bb || _bf || _bh || _bg || isFC(_aj) || isSFC(_aj) || _bj || _bd || _be || _bc?(sendWhisper(_ai,_aj,!0x0,_hf),x012.m=textReplaceWhisper(_ai,_aj),x012.background=cb_light,x012.c=cb_dark):0x0==_ab && 0x0==_ac?(sendWhisper(_ai,_aj,!0x1,_hf),x012.m=textReplaceWhisper(_ai,_aj),x012.background=cb_light,x012.c=cb_dark):(x012.m='Whisper not sent.',x012.background='#EEE',x012.c='#AAA'); } else _ee.match(/\b(reply|r)\b/gi)?0x0==_ab && 0x0==_ac?(sendReply(_ai,_aj),x012.m=textReplaceWhisper(_ai,_aj,!0x0),x012.background=cb_light,x012.c=cb_dark):(x012.m='Reply not sent.',x012.background='#EEE',x012.c='#AAA'):'/ignorelevel'==_ee?setIgnoreLevel(_ef,_aj):'/ignore'==_ee?ignoreUser(_ef,_aj):'/unignore'==_ee && unignoreUser(_ef,_aj); break; case'/showvar':case '/sv':if (_bd || _be) { var _hg=_ef,_hh=new x018(); _hh.debug(_hg); } else _ed=0x0; break; default:_ed=0x0; } 0x0==_ed && (x012.background='#EEE',x012.c='#AAA',_ee.match(/\b(hbhelp|addvip|removevip|viplist|export|sendnotice|cn|cnd|cnh|cndh|pmm|tb|tv|ict|tm|tbm|tipmenu|tmmt|tipmenumessagetoggle|tipmenunotifiertoggle|tmnt|tmt|tipmenutoggle|specialfanclubtipstoggle|fanclubtipstoggle|fctip|sfctip|limitcamtogle|lct|changefcicon|cfci|changesfcicon|csfci|changecrownicon|cdci|fanclubtoggle|fct|specialfanclubtoggle|sfct|whispertoggle|wt|greywordlisttoggle|gwlt|customwordlisttoggle|cwlt|spamwordlisttoggle|swlt|invalidcommandtoggle|ict|autosilencespamtoggle|asst|clearchat|cc|req|eng|bio|node|tipif|rude|classy|whisper|w|r|note|notice|n|emod|addnice|an|removenice|rn|addgrey|ag|addgray|removegrey|rg|removegray|addword|aw|tiptotal|tt|ttipsupdate|ttup|blocknotice|silencelevel|greysoff|greyoff|greyson|greyon|graphiclevel|silence|s|unsilence|us|starttimerg|stg|addtimeg|atg|minustimeg|mtg|timeleftg|tlg|stoptimerg|endtimerg|etg|starttimers|sts|addtimes|ats|minustimes|mts|timelefts|tls|stoptimers|endtimers|ets|starttimerm|stm|addtimem|atm|minustimem|mtm|timeleftm|tlm|stoptimerm|endtimerm|etm|starttimerl|stl|addtimel|atl|minustimel|mtl|timeleftl|tll|stoptimerl|endtimerl|etl|kingspam|notifierspam|leaderboardspam|leaderboard|lb|shownotices|removenotice|removenote|addnotice|addnote|noticetimer)\b/gi)?notifyError('Only moderators and in some cases just special access mod and broadcasters are able to use the \"'+_ee+'\" command.\x0aType \"/hbhelp\u00a0commands\" to see a full list of the available commands.',_aj):_ee.match(/\b(b|p|lb|rewards|prizes|winners|startshow|showtimeleft|printtime|addshowtime|adduser|changegoal|hide|unhide|selltickets|uacommands|luhelp|levels|topt|stats|help|addvip|removevip|viplist|export|newshow|tickets|pass|timeleft|showtime|sendpw|add|del|check|plist|plistw|email|hilite|hl|lock|schat|spass|tipsoff|starttimer|addtime|startshow|stopshow|showover|showend|newshow|subject|ctsubject|hcwarn|ctn|ctnd|ctnh|ctndh|ctm|ctb|ctbm|ctt|ctv|new|changepw|ctreset)\b/gi) || _ee.match(/\b(nickmod|nickname|nicknamesfchelp|addFC|removeFC|showfc|fchelp|sfchelp|addSFC|removeSFC|showsfc)\b/gi) || 'Yes'==cb.settings.invalidToggle && notifyError('\"'+_ee+'\" is not a valid command.\x0aType \"/hbhelp\u00a0commands\" to see a full list of the available commands.',_aj)); } if (!(_bb || _bf || _bh || _bg || isFC(_aj) || isSFC(_aj) || _bj || _bd || _be || _bc)) { if (('Yes'==cb.settings.capsToggle || 'Only for greys'==cb.settings.capsToggle && (_cf || _cb)) && x012.m==x012.m.toUpperCase() && x012.m.toUpperCase()!=x012.m.toLowerCase())for (var _fb=0x0; _fb<x012.m.length; _fb++)-0x1==_ae.indexOf(x012.m.charAt(_fb)) && (x012.m=x012.m.replace(/[^\s]+/g,function(x021) { return 0x0===x021.indexOf(':')?x021:x021.toLowerCase(); } )); if (('Yes'==cb.settings.stickyToggle || 'Only for greys'==cb.settings.stickyToggle && (_cf || _cb)) && x012.m.match(/(.)\1{3,}/gi)) { _ai=x012.m.trim().split(/\s+/g); for (var _ch='',_fb=0x0; _fb<_ai.length; _fb++)_fb>=0x0 && (_ch+=' '),_ch+=':'==_ai[_fb].charAt(0x0)?_ai[_fb]:_ai[_fb].replace(/(.)\1{3,}/gi, '$1$1$1'); x012.m=_ch; } } if ('Yes'!=cb.settings.tipTitles || !_ba || _ag || _ah || (x012.m=setTipTitles(x012.user,x012.m)),_de=x012.m,_df='', 'Yes'==show_alias && (!aliases.hasOwnProperty(_dg) || _ah || _ag || (_df+=aliases[_dg])),x012.m=''!=_df?_df+' '+_de:_de, '/'==_ch[0x0]) { if (x012['X-Spam']=!0x0,x012.background=whis_cmnds_sentbg,x012.c=whis_cmnds_senttext, 'Yes'==cb.settings.fanclubToggle && (_bb || _bf || _bh || _bd || _be || _bc)) { var _ib=_ch.substr(0x1).split(' '); if (_ib.length>=0x2)switch(_ib[0x0]) { case 'addFC':cb.sendNotice('Adding '+cb.settings.fanclubName+' member '+_ib[0x1]),setFC(_ib[0x1]); break; case 'removeFC':cb.sendNotice('Removing '+cb.settings.fanclubName+' member '+_ib[0x1]),unsetFC(_ib[0x1]); } else if (0x1==_ib.length)switch(_ib[0x0].toLowerCase()) { case 'showfc':cb.sendNotice('Current '+cb.settings.fanclubName+' members ',_aj); var _hc=''; for (var x022 in fcMembers)_hc+=' '+x022+','; cb.sendNotice(_hc,_aj); break; case 'fchelp':var _hc=''; _hc+=''+cb.settings.fanclubName+' Bot Actions\x0a',_hc+='---------------------------------\x0a',_hc+='REMEMBER TO ADD USER TO BOT BEFORE LAUNCH\x0a',_hc+='/addFC <membername> : Adds '+cb.settings.fanclubName+' member\x0a',_hc+='/removeFC <membername> : Removes '+cb.settings.fanclubName+' member\x0a',_hc+='/showfc: List of '+cb.settings.fanclubName+' members\x0a',_hc+='\x0a',cb.sendNotice(_hc,_aj, '#E7E7E7', '', 'bold'); } } if ('Yes'==cb.settings.specialfanclubToggle && (_bb || _bf || _bd || _be || _bc)) { var _ib=_ch.substr(0x1).split(' '); if (_ib.length>=0x2)switch(_ib[0x0]) { case 'addSFC':cb.sendNotice('Adding '+cb.settings.specialfanclubName+' member '+_ib[0x1]),setSFC(_ib[0x1]); break; case 'removeSFC':cb.sendNotice('Removing '+cb.settings.specialfanclubName+' member '+_ib[0x1]),unsetSFC(_ib[0x1]); } else if (0x1==_ib.length)switch(_ib[0x0].toLowerCase()) { case 'showsfc':cb.sendNotice('Current '+cb.settings.specialfanclubName+' members ',_aj); var _hc=''; for (var x022 in sfcMembers)_hc+=' '+x022+','; cb.sendNotice(_hc,_aj); break; case 'sfchelp':var _hc=''; _hc+=''+cb.settings.specialfanclubName+' Bot Actions\x0a',_hc+='---------------------------------\x0a',_hc+='REMEMBER TO ADD USER TO BOT BEFORE LAUNCH\x0a',_hc+='/addSFC <membername> : Adds '+cb.settings.specialfanclubName+' member\x0a',_hc+='/removeSFC <membername> : Removes '+cb.settings.specialfanclubName+' member\x0a',_hc+='/showsfc: List of '+cb.settings.specialfanclubName+' members\x0a',_hc+='\x0a',cb.sendNotice(_hc,_aj, '#E7E7E7', '', 'bold'); } } } return isSFC(_aj) && 'Yes'==cb.settings.specialfanclubToggle && (_ag || (x012.background='#'+cb.settings.sfcBGColor,x012.c='#'+cb.settings.sfcTextColor,x012.m=' '+cb.settings.specialfanclubIcon+' '+x012.m)),isFC(_aj) && 'Yes'==cb.settings.fanclubToggle && (_ag || (x012.background='#'+cb.settings.fcBGColor,x012.c='#'+cb.settings.fcTextColor,x012.m=' '+cb.settings.fanclubIcon+' '+x012.m)), 'Yes'==cb.settings.atkingTipperToggle && (atkingtippernamelc=atkingtippername.toLowerCase(),_ag || _aj!=atkingtippernamelc || (x012.background='#'+cb.settings.atkingTipperbgColor,x012.c='#'+cb.settings.atkingTippertxtColor,x012.m=' '+cb.settings.atkingTipperIcon+' '+x012.m)), 'Yes'==cb.settings.mkingTipperToggle && (mkingtippernamelc=mkingtippername.toLowerCase(),_ag || _aj!=mkingtippernamelc || (x012.background='#'+cb.settings.mkingTipperbgColor,x012.c='#'+cb.settings.mkingTippertxtColor,x012.m=' '+cb.settings.mkingTipperIcon+' '+x012.m)),x012; } ),cb.onTip(function(x023) { var _ih=parseInt(x023.amount),_ii=x023.from_user,_ij=addTip(_ii,_ih); tipNote=x023.message,tipTotal+=_ih; for (var _jb=0xf,_jc=[],_jd=[],_je=0x1; _je<=_jb; _je++) { var _jf; if (_jf=cb.settings['item'+_je]) { var _jg=_jf.split('--'),_jh=parseInt(_jg[0x0]); _jh>0x0 && (_jc[_je]=_jh,_jd[_je]=_jg[0x1]),_ih==_jc[_je] && 'Yes'==cb.settings.tipMenuToggle && notifyTheme(x023.from_user+' tipped for '+_jd[_je]); } _ih>atkingtippertip && 'Yes'==cb.settings.atkingTipperToggle && (atkingtippername=x023.from_user,atkingtippertip=_ih,notifyTheme(x023.from_user+' is the new high tip King! All Hail '+x023.from_user)),_ih>mkingtippertip && 'Yes'==cb.settings.mkingTipperToggle && (mkingtippername=x023.from_user,mkingtippertip=_ih,notifyTheme(x023.from_user+' is the new monthly high tip King! All Hail '+x023.from_user)),isFC(x023.from_user) || isSFC(x023.from_user) || 'Yes'!=cb.settings.fanclubToggle || 'Yes'!=cb.settings.fanclubtips || _ih!=cb.settings.fcTip || (makeFC(x023.from_user),cb.chatNotice(x023.from_user+' has joined '+cb.settings.fanclubName)),isSFC(x023.from_user) || 'Yes'!=cb.settings.specialfanclubToggle || 'Yes'!=cb.settings.specialfanclubtips || _ih!=cb.settings.sfcTip && _ih!=cb.settings.tfcTip || (makeSFC(x023.from_user),cb.chatNotice(x023.from_user+' has joined '+cb.settings.specialfanclubName)); } if ('No'!=cb.settings.notifierTip.substr(0x0,0x2) && _ih>=cb.settings.tipMessageMin) { var _ji=''; tipMessage=cb.settings.tipMessage.replace('{username}',_ii), 'Privately to tipper only'==cb.settings.notifierTip && (_ji=_ii), 'Theme'==cb.settings.tipMessageColorscheme?notify(tipMessage,_ji,tip_bg,tip_text):isBlank(cb.settings.tipMessageBackground) || isBlank(cb.settings.tipMessageText)?notifyErrorBold('Whoops. You selected a custom color scheme for tip messages but you didn\'t fill in the colors. Reverted to default color scheme.',roomHost):cb.sendNotice(tipMessage,_ji, '#'+cb.settings.tipMessageBackground, '#'+cb.settings.tipMessageText, 'bold'); } 'Yes'==cb.settings.kingTipper && (_ii==currentKing?kingTip=_ij:_ij>kingTip && _ij>=kingMin && (currentking=_ii,kingTip=_ij,notifyTheme(' '+cb.settings.crownIcon+' there is a new '+cb.settings.kingMessage+', '+_ii+'! '+cb.settings.crownIcon, ''))); } ),cb.onEnter(function(x024) { var _jj=x024.user,_ka=_jj==dev,_kb=_jj==sm,_kc=_jj==cb.room_slug; if (isFC(_jj) && 'Yes'==cb.settings.fanclubToggle && !isSFC(_jj) && cb.chatNotice(cb.settings.fanclubName+' member '+_jj+' has joined the room! ', '', '#'+cb.settings.reBGColor, '#'+cb.settings.reTextColor, ''),isSFC(_jj) && 'Yes'==cb.settings.specialfanclubToggle && cb.chatNotice(cb.settings.specialfanclubName+' member '+_jj+' has joined the room! ', '', '#'+cb.settings.specialreBGColor, '#'+cb.settings.reTextColor, ''),!isBlank(cb.settings.enterMessage)) { var _kd=cb.settings.enterMessage.replace(/{newline}/gi, '\x0a'); notifyTheme(_kd,_jj); } if (x024.is_mod || _ka || _kb || _kc || !cbjs.arrayContains(modArray,_jj) || (modArrayDepopulate(_jj),modAndEmodArrayDepopulate(_jj)),x024.is_mod || _ka || _kb || _kc || !cbjs.arrayContains(modBlockMsgArray,_jj) || modBlockMsgArrayDepopulate(_jj),(x024.is_mod || _ka || _kb) && (cbjs.arrayContains(modArray,_jj) || (modArrayPopulate(_jj),modAndEmodArrayPopulate(_jj),('Yes'==cb.settings.greyWordlistShowModerators || 'Yes'==cb.settings.customWordlistShowModerators || 'Yes'==cb.settings.spamWordlistShowModerators) && modBlockMsgArrayPopulate(_jj),!_ka && !_kb || 'No'!=cb.settings.greyWordlistShowModerators && 'No'!=cb.settings.customWordlistShowModerators && 'No'!=cb.settings.spamWordlistShowModerators || modBlockMsgArrayPopulate(_jj)), 'Yes'==cb.settings.greyWordlistToggle || 'Yes'==cb.settings.customWordlistToggle || 'Yes'==cb.settings.spamWordlistToggle)) { notifyErrorBold(bullets+'MrBot - MODERATOR NOTICE'+bullets,_jj); var _ke='Welcome to '+cb.room_slug+'\'s room. '+cb.room_slug+' is running MrBot. This bot automatically blocks certain messages that contain words and phrases that are deemed abusive, inappropriate, or annoying.\x0a'; _ke+=cbjs.arrayContains(modBlockMsgArray,_jj)?'Your blocked message notices are currently ON. To stop seeing them, type: /blocknotice\u00a0off.\x0a':'Your blocked message notices are currently OFF. To see them again, type: /blocknotice\u00a0on.\x0a',_ke+='To view commands type /hbhelp, To view Fan Club commands type /fchelp /sfchelp',notifyError(_ke,_jj); } } ),cb.onLeave(function(x025) { var _kf=x025.user; isFC(_kf) && 'Yes'==cb.settings.fanclubToggle && !isSFC(_kf) && cb.chatNotice(cb.settings.fanclubName+' member '+_kf+' has left the room! ', '', '#'+cb.settings.reBGColor, '#'+cb.settings.reTextColor, ''),isSFC(_kf) && 'Yes'==cb.settings.specialfanclubToggle && cb.chatNotice(cb.settings.specialfanclubName+' member '+_kf+' has left the room! ', '', '#'+cb.settings.specialreBGColor, '#'+cb.settings.reTextColor, ''); } ),0x0==initialize) { if (cb.room_slug!=am && 'on'==limitCam && (cb.limitCam_start(hm),notifyError(mm,cb.room_slug),cb.sendNotice(':kissy',cb.room_slug, '#FFFFFF', '#000000', 'bold')),cb.settings.colorscheme && setColor(), 'Yes'==cb.settings.customWordlistToggle && parsecustomWordlist(), 'Yes'==cb.settings.tipMenuToggle && 'Yes'==cb.settings.tipMenuNotifierToggle && (tipMenuSpam=0x1,cb.setTimeout(function() { tipMenuNotifier(); } ,Math.floor(Math.random()*tipMenuTimer+0x1)*minuteMS/0x3)), 'Yes'==cb.settings.tipMenuMessageNotifierToggle && (parseRotatingMessages(),tipMenuMessageSpam=0x1,cb.setTimeout(function() { sendRotatingMessages(),tipMenuMessageNotifierSpam(); } ,Math.floor(Math.random()*tipMenuMessageTimer+0x1)*minuteMS)),cb.settings.defaultSilenceLevel && (silenceLevel=parseInt(cb.settings.defaultSilenceLevel.charAt(0x0)),0x4==silenceLevel && notifyErrorBold('No one will be able to chat except for your mods and fan club members. Did you mean to do this?\x0aFor more information, type \"/hbhelp\u00a0silencelevel\" ',cb.room_slug)),cb.settings.defaultGraphicLevel && (graphicLevel=parseInt(cb.settings.defaultGraphicLevel.charAt(0x0))), 'Yes'==cb.settings.notifierSpam && (parseRotating(),notifierSpamTGL=0x1,cb.setTimeout(function() { sendRotating(),notifierSpam(); } ,Math.floor(Math.random()*notifierTimer+0x1)*minuteMS)), 'Yes'==cb.settings.kingTipper && 'Yes'==cb.settings.kingTipperSpam && (kingTipperSpam=0x1,cb.setTimeout(function() { kingSpamTimer(); } ,Math.floor(Math.random()*kingTimer+0x1)*minuteMS/0x3)), 'Yes'==cb.settings.leaderBoard && 'Yes'==cb.settings.leaderBoardSpam && (leaderboardSpam=0x1,cb.setTimeout(function() { ldrSpamTimer(); } ,Math.floor(Math.random()*ldrTimer+0x1)*minuteMS*0x2/0x3)),('Yes'==cb.settings.greyWordlistShowBroadcaster || 'Yes'==cb.settings.customWordlistShowBroadcaster || 'Yes'==cb.settings.spamWordlistShowBroadcaster) && modBlockMsgArrayPopulate(cb.room_slug),!isBlank(cb.settings.silenceList)) { var s=cb.settings.silenceList.replace(/\s+/g, ''); silenceArray=s.replace(/^,+|,+$/g, '').split(','); } if (!isBlank(cb.settings.niceList)) { var n=cb.settings.niceList.replace(/\s+/g, ''); niceArray=n.replace(/^,+|,+$/g, '').split(','); } if (!isBlank(cb.settings.greyList)) { var g=cb.settings.greyList.replace(/\s+/g, ''); greyArray=g.replace(/^,+|,+$/g, '').split(','); } if (''!=cb.settings.vipList && null!=cb.settings.vipList) { var regularExp_ListSplit=/[,\s]+/,v=cb.settings.vipList; vipArray=v.split(regularExp_ListSplit),numVip=vipArray.length; } if (isBlank(cb.settings.hostWhisperLevel) || (ignoreArray[findIgnorer(cb.room_slug)][0x1]=parseInt(cb.settings.hostWhisperLevel.charAt(0x0))), 'Yes'==cb.settings.greyWordlistToggle || 'Yes'==cb.settings.customWordlistToggle || 'Yes'==cb.settings.spamWordlistToggle) { notifyErrorBold(bullets+'MrBot - MODERATOR NOTICE'+bullets, 'onlyMods'); var modMessage=cb.room_slug+' has just started MrBot. This bot automatically blocks certain messages that contain words and phrases that are deemed abusive, inappropriate, or annoying.\x0a'; if (modMessage+='Yes'==cb.settings.greyWordlistShowModerators && 'Yes'==cb.settings.greyWordlistToggle || 'Yes'==cb.settings.customWordlistShowModerators && 'Yes'==cb.settings.customWordlistToggle || 'Yes'==cb.settings.spamWordlistShowModerators && 'Yes'==cb.settings.spamWordlistToggle?'Your blocked message notices are currently ON. To stop seeing them, type: /blocknotice\u00a0off.\x0a':'Your blocked message notices are currently OFF. To see them again, type: /blocknotice\u00a0on.\x0a',modMessage+='To view commands type /hbhelp, To view Fan Clubs commands type /fchelp /sfchelp',notifyError(modMessage, 'onlyMods'), 'Yes'==cb.settings.greyWordlistShowBroadcaster && 'Yes'==cb.settings.greyWordlistToggle || 'Yes'==cb.settings.customWordlistShowBroadcaster && 'Yes'==cb.settings.customWordlistToggle || 'Yes'==cb.settings.spamWordlistShowBroadcaster && 'Yes'==cb.settings.spamWordlistToggle) { notifyErrorBold(bullets+'MrBot - BROADCASTER NOTICE'+bullets, 'roomHost'); var modMessage='You have chosen to see blocked message notices. This has the potential to be distracting. It is recommended that let your moderators handle these blocked messages instead.\x0a'; modMessage+='To stop seeing them, type \"/blocknotice\u00a0off\"\x0a',modMessage+='Or set \"Notify broadcaster\" to \"No\" under Section 3 Section 4 and Section 5 of the bot launch screen.',notifyError(modMessage, 'roomHost'); } } allow_mod=cb.settings.allow_mod,show_alias=cb.settings.show_alias,HBnicknames=cb.settings.nicknames,parseNick(),initialize=0x1; } grabSettings();
© Copyright Chaturbate 2011- 2024. All Rights Reserved.