Apps Home
|
Create an App
Seanti Shares Notices
Author:
seantisharestest
Description
Source Code
Launch App
Current Users
Created by:
Seantisharestest
// MASTER TO-DO // // // // // Something wrong with both foreground & background colors // * ENTRY notices correct // * MSG notices dark blue when should be light purple // // Improve Tip Comment Handling // // onLeave // // Exports (prolly as notices to be delivered onBroadcastStop) // * Transcripts (date, time, user, message) // * Visitors (date, user, time in, time out) // * Tippers (date, name, time, amount) // // // // Get notifications while in private (for now, must monitor chat window via second account) // // Still Need to Test: // fanclub join notifications (get a server error on join attempt; as in, doesn't appear to work on their end) // // Add Settings:font-weight // Add Settings (and Feature): Shortcode for manually sending rules and/or posting to main chat // CURRENT FEATURES // ### Bigger, Bolder, More Colorful, Harder-to-Miss Notifications to Admins & Users // ### Independent Control of All Features (only use the ones you want) // ### Doesn't Override, Alter, or Impede Native Chaturbate Functionality // ### Custom Admin Notifications on User Activity (tips, messages, follows, room entry, fanclub join) // ### User Slug Showing Gender, Tipper Status, & Token Status Added to Admin Notifications // ### Up to 3 Group-Specific Welcome Messages // ### Up to 5 Rules Sent Automatically on Room Entry (User-Based) // ### Action/Group-Specific Thank You Messages (tips, follows, fanclub join) // ### Your Brand Colors for Welcome's, Thank You's, & Rules // ### Token/Tip/Mod/Fan-Based Colors // // global variables var glbl_user = { gender: '', background: '', foreground: '', has_tokens: '', tipper_level: '', is_mod: false, in_fanclub: false, slug: '' } var glbl_colors = { background: '', foreground: '' } let glbl_visitors = []; function get_time_stamp() { let currentDate = new Date(); let cDay = currentDate.getDate(); let cMonth = currentDate.getMonth() + 1; let cYear = currentDate.getFullYear(); let cHours = currentDate.getHours(); let cMinutes = currentDate.getMinutes(); let cSeconds = currentDate.getSeconds(); let timestamp = cYear + cMonth + cDay + '_' + cHours + cMinutes + cSeconds; return timestamp; } function set_user_params(obj) { // obj is user: onEnter, onFollow, & onFanclubJoin // obj is tip: onTip // obj is message: onMessage // message & user objects share most of the same user-related properties // tip objects, however, do not; mostly implementing .from_user_ as prefix to // the standard user properties var gender = ''; var is_mod = false; var in_fanclub = false; var has_tokens = false; var tipper_level = 0; if(obj.hasOwnProperty('user')) { gender = obj.gender; is_mod = obj.is_mod; has_tokens = obj.has_tokens; in_fanclub = obj.in_fanclub; switch(true) { case (obj.tipped_tons_recently == true): tipper_level = 3; break; case (obj.tipped_alot_recently == true): tipper_level = 2; break; case (obj.tipped_recently == true): tipper_level = 1; break; case (obj.tipped_recently == false): tipper_level = 0; break; } // switch(true) } else if(obj.hasOwnProperty('from_user')) { gender = obj.from_user_gender; is_mod = obj.from_user_is_mod; has_tokens = obj.from_user_has_tokens; in_fanclub = obj.from_user_in_fanclub; switch(true) { case (obj.tipped_tons_recently == true): tipper_level = 3; break; case (obj.tipped_alot_recently == true): tipper_level = 2; break; case (obj.tipped_recently == true): tipper_level = 1; break; case (obj.tipped_recently == false): tipper_level = 0; break; } // switch(true) } // if(obj.hasOwnProperty('user')) glbl_user.gender= gender.toUpperCase(); glbl_user.is_mod = is_mod; glbl_user.in_fanclub = in_fanclub; glbl_user.has_tokens = has_tokens; glbl_user.tipper_level = tipper_level; glbl_user.slug = user_slug; } // function set_user_params(obj) function get_user_slug() { // user_slug bookends var bookends = cb.settings.user_slug_bookends; var bookend_lt = ''; var bookend_rt = ''; if(bookends != 'none') { bookend_lt = bookends.substring(0,1); bookend_rt = bookends.substring(1,2); } // user_slug delimiter var delim = cb.settings.user_slug_delimiter; if(delim == 'none') { delim = ''; } // user_slug spaces around delimiter var spaces = cb.settings.user_slug_spaces_around_delimter; var space = ''; if(spaces == 'yes') { space = ' '; } // user_slug order var user_slug_order = cb.settings.user_slug_order; // replace inner brackets with selected delimiter user_slug_order = user_slug_order.replace(/\]\[/g, space + delim + space); // strip out outer brackets, so won't be included in split items user_slug_order = user_slug_order.replace('[', ''); user_slug_order = user_slug_order.replace(']', ''); /////////////////////////////////////////////////////////////////////////// ///////// STILL NEED TO TRANSLATE TIPPER-LEVELS FROM INT's to $'s //////// /////////////////////////////////////////////////////////////////////////// var user_slug = user_slug_order.replace('gender', glbl_user.gender); user_slug = user_slug.replace(/tipper_level/g, glbl_user.tipper_level); user_slug = user_slug.replace('has_tokens', glbl_user.has_tokens); user_slug = bookend_lt + user_slug + bookend_rt; glbl_user.slug = user_slug; } function set_user_colors() { // cb foreground colors // No tokens: #666 Grey // Has tokens: #0cc Light Blue // Tipped: #00c Dark Blue // Tipped Alot: #ad33ff Light Purple // Tipped Tons: #5c0099 Dark Purple // Is Mod: #ff3333 Red // In Fanclub: #009900 Green // Broadcasters: #ffad33 Orange var background = ''; var foreground = ''; // background colors chosen by app user var level_01 = cb.settings.background_colors_token_based_tipped_recently; var level_02 = cb.settings.background_colors_token_based_tipped_alot_recently; var level_03 = cb.settings.background_colors_token_based_tipped_tons_recently; var is_mod = cb.settings.background_colors_mod_fan_based_is_mod; var is_fan = cb.settings.background_colors_mod_fan_based_in_fanclub; var has_tokens = cb.settings.background_colors_token_based_has_tokens; var has_no_tokens = cb.settings.background_colors_token_based_has_no_tokens; if(cb.settings.background_colors_token_based_master=='enable') { switch(true) { case(glbl_user.tipper_level==3): background = level_03; foreground = '#5c0099'; break; case(glbl_user.tipper_level==2): background = level_02; foreground = '#ad33ff'; break; case(glbl_user.tipper_level==1): background = level_01; foreground = '#00c'; break; case(glbl_user.has_tokens==true): background = has_tokens; foreground = '#0cc'; break; case(glbl_user.has_tokens==false): background = has_no_tokens; foreground = '#666'; break; } // switch(true) // tipper-level } if(cb.settings.background_colors_mod_fan_based_master=='enable') { if(cb.settings.background_colors_token_based=='skip'||cb.settings.background_colors_mod_fan_based_overrided_token_based==true) { switch(true) { case(glbl_user.is_mod==true): background = is_mod; foreground = '#ff3333'; break; case(glbl_user.in_fanclub==true): background = is_fan; foreground = '#009900'; break; } } } glbl_colors.background = background; glbl_colors.foreground = foreground; } // function set_user_colors function compile_rules() { // compile individual rules into a single variable var lb = '\n'; var rules_heading = cb.settings.rules_heading; var rules_sub_heading = cb.settings.rules_sub_heading; var label = cb.settings.rules_labels; var text = ''; var rules_closing = cb.settings.rules_closing; var rules_compiled = ''; var rules = [ cb.settings.rule_01 , cb.settings.rule_02 , cb.settings.rule_03 , cb.settings.rule_04 , cb.settings.rule_05 ] var x = ''; for(var i = 0;i < rules.length;i++) { if (rules[i] != '') { if (label != '') { if (i < 10) { // add leading zeros, when applicable x = '0' + (i + 1); } else { x = (i + 1); } text = text + label.replace('[rule_number]', x) + ' '; } // if(label != '') } // if (rules[i] != '') text = text + rules[i] + lb + lb; } // for (var i = 1;i < rules.length;i++) // put it all together // text contains the linebreaks which would otherwise precede rules_closing rules_compiled = rules_heading + lb + rules_sub_heading + lb + lb + text + rules_closing; return rules_compiled; } function send_notice_to_admin(obj, notification_type) { // Types of admin notifications // onEnter // onMessage // onTip // onFollow // onFanclubJoin // // obj is user: onEnter, onFollow, & onFanclubJoin // obj is tip: onTip // obj is message: onMessage // message & user objects share most of the same user-related properties // tip objects, however, do not; mostly implementing .from_user_ as prefix to // the standard user properties var notice_sent_to_admin=false; var user = ''; if(obj.hasOwnProperty('user')) { user = obj.user; } else if (obj.hasOwnProperty('from_user')) { // Tip objects use from_user instead of user user = obj.from_user; } var room_owner = cb.room_slug; var user_slug = ''; if(cb.settings.user_slug_master == 'enable') { user_slug = glbl_user.slug; } var text = ''; var to_user = ''; var background = glbl_colors.background; var foreground = glbl_colors.foreground; var weight = 'bold'; var to_group = ''; var proceed = false; var send_to = ''; var regarding = ''; var tip_amount = ''; var is_anon_tip = false; var tip_anonymous = false; var tip_message = ''; var tip_message_edit = ''; var message = ''; var padding_above = ''; var padding_below = ''; switch(notification_type) { case 'room_entry': send_to = cb.settings.room_entry_notifications_send_to; regarding = cb.settings.room_entry_notifications_regarding; text = cb.settings.room_entry_notifications_text; padding_above = cb.settings.room_entry_notifications_padding_above_text; padding_below = cb.settings.room_entry_notifications_padding_below_text; break; case 'message': send_to = cb.settings.message_notifications_send_to; regarding = cb.settings.message_notifications_regarding; text = cb.settings.message_notifications_text; padding_above = cb.settings.message_notifications_padding_above_text; padding_below = cb.settings.message_notifications_padding_below_text; message = obj.m; break; case 'tip': tip_amount = obj.amount; tip_message = obj.message; // Don't include if no message included with tip if(tip_message!=''){ tip_message_edit = cb.settings.tip_notifications_tip_message_edit; } is_anon_tip = obj.is_anon_tip; send_to = cb.settings.tip_notifications_send_to; regarding = cb.settings.tip_notifications_regarding; text = cb.settings.tip_notifications_text; padding_above = cb.settings.tip_notifications_padding_above_text; padding_below = cb.settings.tip_notifications_padding_below_text; break; case 'follow': send_to = cb.settings.follow_notifications_send_to; regarding = cb.settings.follow_notifications_regarding; text = cb.settings.follow_notifications_text; padding_above = cb.settings.follow_notifications_padding_above_text; padding_below = cb.settings.follow_notifications_padding_below_text; break; case 'fanclub_join': send_to = cb.settings.fanclub_join_notifications_send_to; regarding = cb.settings.fanclub_join_notifications_regarding; text = cb.settings.fanclub_join_notifications_text; padding_above = cb.settings.fanclub_join_notifications_padding_above_text; padding_below = cb.settings.fanclub_join_notifications_padding_below_text; break; } switch(padding_above) { case 'none': padding_above = ''; break; case 'one_line': padding_above = '\n'; break; case 'two_lines': padding_above = '\n\n'; break; case 'three_lines': padding_above = '\n\n\n'; break; case 'four_lines': padding_above = '\n\n\n\n'; break; } switch(padding_below) { case 'none': padding_below = ''; break; case 'one_line': padding_below = '\n'; break; case 'two_lines': padding_below = '\n\n'; break; case 'three_lines': padding_below = '\n\n\n'; break; case 'four_lines': padding_below = '\n\n\n\n'; break; } //////////////////////////////////// //// BUILD OUTGOING TEXT STRING //// //////////////////////////////////// if(is_anon_tip == true) { tip_anonymous = 'ANON'; } else { tip_anonymous = ''; } var shortcodes = [ "[user]" , "[user_slug]" , "[tip_anonymous]" , "[tip_amount]" , "[tip_message_edit]" , "[tip_message]" , "[user_message]" ] var replacements = [ user , user_slug , tip_anonymous , tip_amount , tip_message_edit , tip_message , message ] // Replace shortcodes with appropriate elements var shortcode = ''; var replacement = ''; for(var i = 0;i<shortcodes.length;i++) { shortcode = shortcodes[i]; replacement = replacements[i]; text = text.replace(shortcode, replacement); } ////////////////////////////////////////////////////////// //////////// FINAL TEXT STRING /////////////////////////// ////////////////////////////////////////////////////////// text = padding_above + text + padding_below; ////////////////////////////////////////////////////////// //////////// FINAL TEXT STRING /////////////////////////// ////////////////////////////////////////////////////////// // Are we currently set to send this type of notification to anyone, if so, whom? switch(send_to) { case 'room_owner_and_mods': to_user = room_owner; to_group = 'red'; break; case 'room_owner_only': to_user = room_owner; break; case 'mods_only': to_group = 'red'; break; case 'neither': break; } if(to_user != '' || to_group != '') { // Does user meet current criteria for notification switch (regarding) { case 'nobody': break; case 'all_registered_users': proceed = true; break; case 'mods_fans_and_users_with_tokens': if(obj.is_mod == true || obj.in_fanclub == true || obj.has_tokens == true) { proceed = true; break; } case 'mods_and_fans': if(obj.is_mod == true || obj.in_fanclub == true) { proceed = true; break; } case 'all_token_holders': if(obj.has_tokens == true) { proceed = true; break; } case 'all_recent_tippers': if(obj.tipped_recently == true) { proceed = true; break; } case 'big_recent_tippers': if(obj.tipped_alot_recently == true || obj.tipped_tons_recently == true) { proceed = true; break; } case 'huge_recent_tippers': if (obj.tipped_tons_recently == true) { proceed = true; break; } } // switch if(proceed == true) { if(to_group != '') { cb.sendNotice(text, to_user, background, foreground, weight, to_group) notice_sent_to_admin=true; } if(to_user != '') { to_group = ''; cb.sendNotice(text, to_user, background, foreground, weight, to_group) notice_sent_to_admin=true; } } // if(proceed == true) } // if(to_user != '' || to_group != '') return notice_sent_to_admin; } function send_notice_to_user(obj, type) { var room_owner = cb.room_slug; var text = ''; var to_user = ''; if(obj.hasOwnProperty('user')) { to_user = obj.user; } else if (obj.hasOwnProperty('from_user')) { to_user = obj.from_user; } var background = ''; var foreground = ''; if(cb.settings.branded_colors_master == 'enable') { background = cb.settings.branded_colors_background; foreground = cb.settings.branded_colors_foreground; } var weight = 'bold'; var to_group = ''; var proceed = false; // Get/build message text switch (type) { case 'room_entry': if(cb.settings.welcome_messages_master == 'enable'){ text = compile_welcome_messages(obj); } if(cb.settings.rules == 'enable') { var send_to = cb.settings.rules_on_entry_send_to; switch(send_to) { case 'nobody': proceed = false; break; case 'all_registered_users': proceed = true; break; case 'non_tippers_with_or_without_tokens': if(obj.tipped_recently == false) { proceed = true; break; } case 'non_tippers_without_tokens': if(obj.tipped_recently == false && obj.has_tokens == false) { proceed = true; break; } case 'users_without_tokens': if(obj.has_tokens == false) { proceed = true; break; } } // switch (send_to) if (proceed == true) { // no need to send rules to admin members if(obj.user != room_owner && obj.is_mod == false) { // pad the rules differently depending on whether sending any welcome message with them var lb = ''; if(text == '') { lb = ''; } else { lb = '\n\n'; } text = text + lb + compile_rules(); } } } // if(cb.settings.rules == 'enable') break; case 'follow': text = cb.settings.thank_you_messages_on_follow.replace('[user]', to_user); break; case 'tip': text = cb.settings.thank_you_messages_on_tip.replace('[user]', to_user); break; case 'fanclub': text = cb.settings.thank_you_messages_on_fanclub_join.replace('[user]', to_user); break; } // switch (type) // pad a line each above and below so message will stand out better & be easier to read text = '\n' + text.replace('[user]', to_user) + '\n'; cb.sendNotice(text, to_user, background, foreground, weight, to_group); } function compile_welcome_messages(user) { //Initialize Variables var i = 0; var send_to = ''; var message = ''; var include = false; var text = ''; // Get array of which messages go to which messages go to which users let sending_to = [ cb.settings.welcome_messages_01_send_to , cb.settings.welcome_messages_02_send_to , cb.settings.welcome_messages_03_send_to ] let messages = [ cb.settings.welcome_messages_01_text , cb.settings.welcome_messages_02_text , cb.settings.welcome_messages_03_text ] for (var i = 0; i < messages.length; i++) { send_to = sending_to[i]; message = messages[i]; include = false; switch (send_to) { case 'nobody': include = false; break; case 'all_registered_users': include = true; break; case 'all_token_holders': if(user.has_tokens == true) { include = true; break; } case 'all_recent_tippers': if(user.tipped_recently == true) { include = true; break; } case 'mods_fans_and_users_with_tokens': if(user.is_mod == true || user.in_fanclub == true || user.has_tokens == true) { include = true; break; } case 'mods_and_fans': if(user.is_mod == true || user.in_fanclub == true) { include = true; break; } case 'big_recent_tippers': if(user.tipped_alot_recently == true || user.tipped_tons_recently == true) { include = true; break; } case 'huge_recent_tippers': if(user.tipped_tons_recently == true) { include = true; break; } } // switch (send_to) if (include == true) { // add this portion of message to notice text text = text + message.replace('[user]', user.user) + ' '; } // if (include == true) } // for loop return text; } cb.onEnter(function(user) { // this function handles // * room entry notifications // * welcome messages // * initial sending of rules // // need to add // * only send welcome messages & rules on user's first entry per broadcast // * don't notify until user has been in the room at least a few seconds, so not getting notified for every room jumper) var initial_entry = true; // check whether user has already been here since app last started if(glbl_visitors.includes(user.user)==false) { glbl_visitors.push(user.user); // send welcome messages and/or rules to users, where applicable if(user.user != cb.room_slug && (cb.settings.welcome_messages_master == 'enable' || cb.settings.rules == 'enable')) { send_notice_to_user(user, 'room_entry'); } } set_user_params(); set_user_colors(); // send entry notice to admins, where applicable if(cb.settings.room_entry_notifications_master == 'enable') { if(user != cb.room_slug || cb.settings.room_entry_notifications_notify_on_owner_entry == 'yes') { send_notice_to_admin(user, 'room_entry'); } } }); cb.onMessage(function(msg) { if(msg['X-Spam'] != true) { set_user_params(); set_user_colors(); if(cb.settings.message_notifications_master == 'enable') { // our message notifications are enabled // no need to notify us of our own messages, so ... if (msg.user != cb.room_slug || cb.settings.messages_notifications_notify_on_owner_message == 'yes') { sent_notice_to_admin = send_notice_to_admin(msg, 'message'); } } // if(cb.settings.message_notifications_master == 'enable') var original_reformat=false; if(cb.settings.message_notifications_original_message_reformat=='yes') { original_reformat=true; } if(original_reformat==true) { // reformat original message, then display msg['background'] = glbl_colors.background; msg.c = glbl_colors.foreground; } } // if(msg['X-Spam'] != true) return msg; }); cb.onTip(function(tip) { set_user_params(); set_user_colors(); if(cb.settings.tip_notifications_master == 'enable') { send_notice_to_admin(tip, 'tip'); } if(cb.settings.thank_you_messages == 'enable') { send_notice_to_user(tip, 'tip'); } }); cb.onFollow(function(user) { set_user_params(); set_user_colors(); if(cb.settings.follow_notifications_master == 'enable') { send_notice_to_admin(user, 'follow'); } if(cb.settings.thank_you_messages == 'enable') { send_notice_to_user(user, 'follow'); } }); cb.onFanclubJoin(function(user) { set_user_params(); set_user_colors(); if(cb.settings.fanclub_join_notifications_master == 'enable') { send_notice_to_admin(user, 'fanclub_join'); } if(cb.settings.thank_you_messages == 'enable') { send_notice_to_user(user, 'fanclub_join'); } }); cb.onStart(user => { var room_subject = cb.settings.room_subject; cb.changeRoomSubject(room_subject); }); cb.settings_choices = [ // FYI: sendNotice ['to group'] options are limited to: // red: #dc0000 moderators // green: #008000 fans (unofficial) // darkblue: #00c recent tippers // lightpurple: #ad33ff big recent tippers // darkpurple: #5c0099 huge recent tippers // lightblue: #0cc users who've purchased tokens // // Also note, users in multiple groups will get messages // intended for any group they are in { name: 'room_subject' , type: 'str' , minLength: 1 , maxLength: 255 , defaultValue: '#feet #smalldick #bigtoys #vibrator #cbt' , required: false , label: 'ROOM SUBJECT' } , { name: 'branded_colors_master' , type: 'choice' , choice1: 'enable' , choice2: 'skip' , defaultValue: 'enable' , required: false , label: "BRANDED COLORS for User Notifications (Welcome's, Thank You's, & Rules)" } , { name: 'branded_colors_background' , type: 'str' , minLength: 4 , maxLength: 7 , defaultValue: '#000' , required: false , label: 'BRANDED COLORS - Background Color' } , { name: 'branded_colors_foreground' , type: 'str' , minLength: 6 , maxLength: 7 , defaultValue: '#e60213' , required: false , label: 'BRANDED COLORS - Foreground' } , { name: 'background_colors_token_based_master' , type: 'choice' , choice1: 'enable' , choice2: 'skip' , defaultValue: 'enable' , required: false , label: 'TOKEN-BASED BACKGROUND COLORS for Admin Notifications (Tips, Follows, Fans, Messages, etc.)' } , { name: 'background_colors_token_based_tipped_tons_recently' , type: 'str' , minLength: 3 , maxLength: 7 , defaultValue: '#ffff66' , required: false , label: 'TOKEN-BASED BACKGROUND COLORS - Users who\'ve tipped tons recently' } , { name: 'background_colors_token_based_tipped_alot_recently' , type: 'str' , minLength: 3 , maxLength: 7 , defaultValue: '#ffff99' , required: false , label: 'TOKEN-BASED BACKGROUND COLORS - Users who\'ve tipped a lot recently' } , { name: 'background_colors_token_based_tipped_recently' , type: 'str' , minLength: 3 , maxLength: 7 , defaultValue: '#ffffcc' , required: false , label: 'TOKEN-BASED BACKGROUND COLORS - Users who\'ve tipped recently' } , { name: 'background_colors_token_based_has_tokens' , type: 'str' , minLength: 3 , maxLength: 7 , defaultValue: '#e9d66b' , required: false , label: 'TOKEN-BASED BACKGROUND COLORS - Users with tokens' } , { name: 'background_colors_token_based_has_no_tokens' , type: 'str' , minLength: 3 , maxLength: 7 , defaultValue: '#ffffff' , required: false , label: 'TOKEN-BASED BACKGROUND COLORS - Users without tokens' } , { name: 'background_colors_mod_fan_based_master' , type: 'choice' , choice1: 'enable' , choice2: 'skip' , defaultValue: 'enable' , required: false , label: 'MOD/FAN-BASED BACKGROUND COLORS for Admin Notifications (Tips, Follows, Fans, Messages, etc.)' } , { name: 'background_colors_mod_fan_based_override_token_based' , type: 'choice' , choice1: 'true' , choice2: 'false' , defaultValue: 'false' , required: false , label: 'MOD/FAN-BASED BACKGROUND COLORS - Override Token-Based Background Colors' } , { name: 'background_colors_mod_fan_based_is_mod' , type: 'str' , minLength: 3 , maxLength: 7 , defaultValue: '#eae0c8' , required: false , label: 'MOD/FAN-BASED BACKGROUND COLORS - Moderators' } , { name: 'background_colors_mod_fan_based_in_fanclub' , type: 'str' , minLength: 3 , maxLength: 7 , defaultValue: '#fafad2' , required: false , label: 'MOD/FAN-BASED BACKGROUND COLORS - Fans' } , { name: 'user_slug_master' , type: 'choice' , choice1: 'enable' , choice2: 'skip' , defaultValue: 'enable' , required: false , label: 'USER SLUG in Admin Notices (e.g., [gender]-[tipper_level]-[has_tokens])' } , { name: 'user_slug_order' , type: 'choice' , choice1: '[gender][tipper_level][has_tokens]' , choice2: '[gender][has_tokens][tipper_level]' , choice3: '[tipper_level][gender][has_tokens]' , choice4: '[has_tokens][gender][tipper_level]' , choice5: '[tipper_level][has_tokens][gender]' , choice6: '[has_tokens][tipper_level][gender]' , defaultValue: '[gender][tipper_level][has_tokens]' , label: 'USER SLUG - Order' } , { name: 'user_slug_bookends' , type: 'choice' , choice1: '[]' , choice2: '()' , choice3: '{}' , choice4: '||' , choice5: 'none' , defaultValue: '[]' , required: false , label: 'USER SLUG - Bookends ([bookend][gender][tipper_level][has_tokens][bookend])' } , { name: 'user_slug_delimiter' , type: 'choice' , choice1: '_' , choice2: '-' , choice3: '|' , choice4: ':' , choice5: ',' , choice6: ';' , choice7: '.' , choice8: 'space' , choice9: 'none' , defaultValue: '-' , required: false , label: 'USER SLUG - Delimiter ([bookend][gender][delimiter][tipper_level][delimiter][has_tokens][bookend])' } , { name: 'user_slug_spaces_around_delimiter' , type: 'choice' , choice1: 'yes' , choice2: 'no' , defaultValue: 'no' , label: 'USER SLUG - Spaces Around Delimiters ([bookend][gender][space][delimiter][space][tipper_level][space][delimiter][space][has_tokens][bookend])' , required: false } , { name: 'room_entry_notifications_master' , type: 'choice' , choice1: 'enable' , choice2: 'skip' , defaultValue: 'enable' , label: 'ROOM ENTRY NOTIFICATIONS' , required: false } , { name: 'room_entry_notifications_send_to' , type: 'choice' , choice1: 'room_owner_and_mods' , choice2: 'room_owner_only' , choice3: 'mods_only' , choice4: 'neither' , defaultValue: 'room_owner_and_mods' , label: 'ROOM ENTRY NOTIFICATIONS - Send To' , required: false } , { name: 'room_entry_notifications_regarding' , type: 'choice' , choice1: 'all_registered_users' , choice2: 'mods_fans_and_users_with_tokens' , choice3: 'mods_and_fans' , choice4: 'all_token_holders' , choice5: 'all_recent_tippers' , choice6: 'big_recent_tippers' , choice7: 'huge_recent_tippers' , choice8: 'nobody' , defaultValue: 'all_recent_tippers' , label: 'ROOM ENTRY NOTIFICATIONS - Regarding These Users' , required: false } , { name: 'room_entry_notifications_notify_on_owner_entry' , type: 'choice' , choice1: 'yes' , choice2: 'no' , defaultValue: 'no' , required: false , label: 'ROOM ENTRY NOTIFICATIONS - Notify on Owner Entry' } , { name: 'room_entry_notifications_text' , type: 'str' , minLength: 1 , maxLength: 255 , defaultValue: 'ENTRY: [user] [user_slug] -' , required: false , label: 'ROOM ENTRY NOTIFICATIONS - Text' } , { name: 'room_entry_notifications_padding_above_text' , type: 'choice' , choice1: 'one_line' , choice2: 'two_lines' , choice3: 'three_lines' , choice4: 'four_lines' , choice5: 'none' , defaultValue: 'none' , required: false , label: 'ROOM ENTRY NOTIFICATIONS - Padding Above Text' } , { name: 'room_entry_notifications_padding_below_text' , type: 'choice' , choice1: 'one_line' , choice2: 'two_lines' , choice3: 'three_lines' , choice4: 'four_lines' , choice5: 'none' , defaultValue: 'none' , required: false , label: 'ROOM ENTRY NOTIFICATIONS - Padding Below Text' } , { name: 'message_notifications_master' , type: 'choice' , choice1: 'enable' , choice2: 'skip' , defaultValue: 'enable' , label: 'MESSAGE NOTIFICATIONS' , required: false } , { name: 'message_notifications_send_to' , type: 'choice' , choice1: 'room_owner_and_mods' , choice2: 'room_owner_only' , choice3: 'mods_only' , choice4: 'neither' , defaultValue: 'owner_and_mods' , label: 'MESSAGE NOTIFICATIONS - Send To' , required: false } , { name: 'message_notifications_regarding' , type: 'choice' , choice1: 'all_registered_users' , choice2: 'mods_fans_and_users_with_tokens' , choice3: 'mods_and_fans' , choice4: 'all_token_holders' , choice5: 'all_recent_tippers' , choice6: 'big_recent_tippers' , choice7: 'huge_recent_tippers' , choice8: 'nobody' , defaultValue: 'all_recent_tippers' , label: 'MESSAGE NOTIFICATIONS - Regarding These Users' , required: false } , { name: 'message_notifications_notify_on_owner_message' , type: 'choice' , choice1: 'yes' , choice2: 'no' , defaultValue: 'no' , required: false , label: 'MESSAGE NOTIFICATIONS - Notify on Owner Message' } , { name: 'message_notifications_text' , type: 'str' , minLength: 1 , maxLength: 255 , defaultValue: 'MSG: [user] [user_slug] WROTE: [user_message]' , required: false , label: 'MESSAGE NOTIFICATIONS - Text' } , { name: 'message_notifications_padding_above_text' , type: 'choice' , choice1: 'one_line' , choice2: 'two_lines' , choice3: 'three_lines' , choice4: 'four_lines' , choice5: 'none' , defaultValue: 'none' , required: false , label: 'MESSAGE NOTIFICATIONS - Padding Above Text' } , { name: 'message_notifications_padding_below_text' , type: 'choice' , choice1: 'one_line' , choice2: 'two_lines' , choice3: 'three_lines' , choice4: 'four_lines' , choice5: 'none' , defaultValue: 'none' , required: false , label: 'MESSAGE NOTIFICATIONS - Padding Below Text' } , { name: 'message_notifications_original_message_deliver' , type: 'choice' , choice1: 'yes' , choice2: 'no' , defaultValue: 'no' , required: false , label: 'MESSAGE NOTIFICATIONS - Deliver Original Message' } , { name: 'message_notifications_original_message_reformat' , type: 'choice' , choice1: 'yes' , choice2: 'no' , defaultValue: 'yes' , required: false , label: 'MESSAGE NOTIFICATIONS - Reformat Original Message' } , { name: 'tip_notifications_master' , type: 'choice' , choice1: 'enable' , choice2: 'skip' , defaultValue: 'skip' , label: 'TIP NOTIFICATIONS' , required: false } , { name: 'tip_notifications_send_to' , type: 'choice' , choice1: 'room_owner_and_mods' , choice2: 'room_owner_only' , choice3: 'mods_only' , choice4: 'neither' , defaultValue: 'owner_and_mods' , label: 'TIP NOTIFICATIONS - Send To' , required: false } , { name: 'tip_notifications_regarding' , type: 'choice' , choice1: 'all_registered_users' , choice2: 'mods_fans_and_users_with_tokens' , choice3: 'mods_and_fans' , choice4: 'all_token_holders' , choice5: 'all_recent_tippers' , choice6: 'big_recent_tippers' , choice7: 'huge_recent_tippers' , choice8: 'nobody' , defaultValue: 'all_registers_users' , label: 'TIP NOTIFICATIONS - Regarding These Users' , required: false } , { name: 'tip_notifications_tip_message_edit' , type: 'str' , minLength: 1 , maxLength: 255 , defaultValue: 'with COMMENT: [tip_message]' , required: false , label: 'TIP NOTIFICATIONS - [tip_message_edit] (to be used in next setting)' } , { name: 'tip_notifications_text' , type: 'str' , minLength: 1 , maxLength: 255 , defaultValue: '[tip_anonymous] TIP: [user] [user_slug] TIPPED [tip_amount] [tip_message_edit]' , required: false , label: 'TIP NOTIFICATIONS - Text' } , { name: 'tip_notifications_padding_above_text' , type: 'choice' , choice1: 'one_line' , choice2: 'two_lines' , choice3: 'three_lines' , choice4: 'four_lines' , choice5: 'none' , defaultValue: 'none' , required: false , label: 'TIP NOTIFICATIONS - Padding Above Text' } , { name: 'tip_notifications_padding_below_text' , type: 'choice' , choice1: 'one_line' , choice2: 'two_lines' , choice3: 'three_lines' , choice4: 'four_lines' , choice5: 'none' , defaultValue: 'none' , required: false , label: 'TIP NOTIFICATIONS - Padding Below Text' } , { name: 'follow_notifications_master' , type: 'choice' , choice1: 'enable' , choice2: 'skip' , defaultValue: 'enable' , label: 'FOLLOW NOTIFICATIONS' , required: false } , { name: 'follow_notifications_send_to' , type: 'choice' , choice1: 'room_owner_and_mods' , choice2: 'room_owner_only' , choice3: 'mods_only' , choice4: 'neither' , defaultValue: 'owner_and_mods' , label: 'FOLLOW NOTIFICATIONS - Send To' , required: false } , { name: 'follow_notifications_regarding' , type: 'choice' , choice1: 'all_registered_users' , choice2: 'mods_fans_and_users_with_tokens' , choice3: 'mods_and_fans' , choice4: 'all_token_holders' , choice5: 'all_recent_tippers' , choice6: 'big_recent_tippers' , choice7: 'huge_recent_tippers' , choice8: 'nobody' , defaultValue: 'all_registered_users' , label: 'FOLLOW NOTIFICATIONS - Regarding These Users' , required: false } , { name: 'follow_notifications_text' , type: 'str' , minLength: 1 , maxLength: 255 , defaultValue: 'FOLLOW: [user] [user_slug] -' , required: false , label: 'FOLLOW NOTIFICATIONS - Text' } , { name: 'follow_notifications_padding_above_text' , type: 'choice' , choice1: 'one_line' , choice2: 'two_lines' , choice3: 'three_lines' , choice4: 'four_lines' , choice5: 'none' , defaultValue: 'none' , required: false , label: 'FOLLOW NOTIFICATIONS - Padding Above Text' } , { name: 'follow_notifications_padding_below_text' , type: 'choice' , choice1: 'one_line' , choice2: 'two_lines' , choice3: 'three_lines' , choice4: 'four_lines' , choice5: 'none' , defaultValue: 'none' , required: false , label: 'FOLLOW NOTIFICATIONS - Padding Below Text' } , { name: 'fanclub_join_notifications_master' , type: 'choice' , choice1: 'enable' , choice2: 'skip' , defaultValue: 'enable' , label: 'FANCLUB JOIN NOTIFICATIONS' , required: false } , { name: 'fanclub_join_notifications_send_to' , type: 'choice' , choice1: 'room_owner_and_mods' , choice2: 'room_owner_only' , choice3: 'mods_only' , choice4: 'neither' , defaultValue: 'owner_and_mods' , label: 'FANCLUB JOIN NOTIFICATIONS - Send To' , required: false } , { name: 'fanclub_join_notifications_regarding' , type: 'choice' , choice1: 'all_registered_users' , choice2: 'mods_fans_and_users_with_tokens' , choice3: 'mods_and_fans' , choice4: 'all_token_holders' , choice5: 'all_recent_tippers' , choice6: 'big_recent_tippers' , choice7: 'huge_recent_tippers' , choice8: 'nobody' , defaultValue: 'all_recent_tippers' , label: 'FANCLUB JOIN - Regarding These Users' , required: false } , { name: 'follow_notifications_text' , type: 'str' , minLength: 1 , maxLength: 255 , defaultValue: 'FOLLOW: [user] [user_slug] -' , required: false , label: 'FOLLOW NOTIFICATIONS - Text' } , { name: 'follow_notifications_padding_above_text' , type: 'choice' , choice1: 'one_line' , choice2: 'two_lines' , choice3: 'three_lines' , choice4: 'four_lines' , choice5: 'none' , defaultValue: 'none' , required: false , label: 'FOLLOW NOTIFICATIONS - Padding Above Text' } , { name: 'follow_notifications_padding_below_text' , type: 'choice' , choice1: 'one_line' , choice2: 'two_lines' , choice3: 'three_lines' , choice4: 'four_lines' , choice5: 'none' , defaultValue: 'none' , required: false , label: 'FOLLOW NOTIFICATIONS - Padding Below Text' } , { name: 'welcome_messages_master' , type: 'choice' , choice1: 'enable' , choice2: 'skip' , defaultValue: 'enable' , label: 'WELCOME MESSAGES' , required: false } , { name: 'welcome_messages_01_text' , type: 'str' , minLength: 1 , maxLength: 255 , label: 'WELCOME MESSAGES - Message 01 - Text' , defaultValue: 'Welcome, [user]!' , required: false } , { name: 'welcome_messages_01_send_to' , type: 'choice' , choice1: 'all_registered_users' , choice2: 'mods_fans_and_users_with_tokens' , choice3: 'mods_and_fans' , choice4: 'all_token_holders' , choice5: 'all_recent_tippers' , choice6: 'big_recent_tippers' , choice7: 'huge_recent_tippers' , choice8: 'nobody' , defaultValue: 'all_registered_users' , label: 'WELCOME MESSAGES - Message 01 - Send To' , required: false } , { name: 'welcome_messages_02_text' , type: 'str' , minLength: 1 , maxLength: 255 , label: 'WELCOME MESSAGES - Message 02 - Text' , defaultValue: 'Thanks for stopping by!' , required: false } , { name: 'welcome_messages_02_send_to' , type: 'choice' , choice1: 'all_registered_users' , choice2: 'mods_fans_and_users_with_tokens' , choice3: 'mods_and_fans' , choice4: 'all_token_holders' , choice5: 'all_recent_tippers' , choice6: 'big_recent_tippers' , choice7: 'huge_recent_tippers' , choice8: 'nobody' , defaultValue: 'all_registered_users' , required: false , label: 'WELCOME MESSAGES - Message 02 - Send To' } , { name: 'welcome_messages_03_text' , type: 'str' , minLength: 1 , maxLength: 255 , defaultValue: 'Let me know if there\'s anything special you\'d like to see. ... I do it all! ... If the price is right. ;-)' , required: false , label: 'WELCOME MESSAGES - Message 03 - Text' } , { name: 'welcome_messages_03_send_to' , type: 'choice' , choice1: 'all_registered_users' , choice2: 'mods_fans_and_users_with_tokens' , choice3: 'mods_and_fans' , choice4: 'all_token_holders' , choice5: 'all_recent_tippers' , choice6: 'big_recent_tippers' , choice7: 'huge_recent_tippers' , choice8: 'nobody' , defaultValue: 'all_recent_tippers' , label: 'WELCOME MESSAGES - Message 03 - Send To' , required: false } , { name: 'rules_master' , type: 'choice' , choice1: 'enable' , choice2: 'skip' , defaultValue: 'enable' , label: 'RULES' , required: false } , { name: 'rules_on_entry_send_to' , type: 'choice' , choice1: 'all_registered_users' , choice2: 'non_tippers_with_or_without_tokens' , choice3: 'non_tippers_without_tokens' , choice4: 'users_without_tokens' , choice5: 'nobody' , defaultValue: 'non_tippers_with_or_without_tokens' , label: 'RULES - Send to these users on room entry' , required: false } , { name: 'rules_heading' , type: 'str' , minLength: 1 , maxLength: 255 , defaultValue: '*** RULES ***' , required: false , label: 'RULES - Heading (may be left blank)' } , { name: 'rules_sub_heading' , type: 'str' , minLength: 1 , maxLength: 255 , defaultValue: 'Learn them. Live them. Love them.' , required: false , label: 'RULES - Sub-Heading (may be left blank)' } , { name: 'rules_labels' , type: 'str' , minLength: 1 , maxLength: 255 , defaultValue: 'Rule #[rule_number]:' , required: false , label: 'RULES - Labels (before each rule; may be left blank)' } , { name: 'rule_01' , type: 'str' , minLength: 1 , maxLength: 255 , label: 'RULES - 01' , defaultValue: 'I put a lot of time, effort, & money into these broadcasts. Like my show and want me to keep improving and coming back? Show me some love (tip, follow, share).' , required: false } , { name: 'rule_02' , type: 'str' , minLength: 1 , maxLength: 255 , label: 'RULES - 02 (may be left blank)' , defaultValue: 'Be patient. Might be a minute before I see your messages. If you want me to see it sooner, send it with a tip.' , required: false } , { name: 'rule_03' , type: 'str' , minLength: 1 , maxLength: 255 , label: 'RULES - 03 (may be left blank)' , defaultValue: 'Have a special request? Great! Send tokens.' , required: false } , { name: 'rule_04' , type: 'str' , minLength: 1 , maxLength: 255 , label: 'RULES - 04 (may be left blank)' , defaultValue: 'PM\'s distract performers & disrupt shows for other viewers. Don\'t expect them, especially for free.' , required: false } , { name: 'rule_05' , type: 'str' , minLength: 1 , maxLength: 255 , label: 'RULES - 05 (may be left blank)' , defaultValue: 'Prefer to interact with me on a different platform? Great! Find me on that platform after the show (@seantishares), but please don\'t interrupt me here.' , required: false } , { name: 'rules_closing' , type: 'str' , minLegth: 1 , maxLength: 255 , defaultValue: 'Thank you!' , required: false , label: 'RULES - Closing (added to end of rules; may be left blank)' } , { name: 'thank_you_messages_master' , type: 'choice' , choice1: 'enable' , choice2: 'skip' , defaultValue: 'enable' , required: false , label: 'THANK YOU MESSAGES' } , { name: 'thank_you_messages_on_follow' , type: 'str' , minLength: 1 , maxLength: 255 , defaultValue: 'Thanks for the follow, [user]!' , required: false , label: 'THANK YOU MESSAGES - Followed - Text' } , { name: 'thank_you_messages_on_tip' , type: 'str' , minLength: 1 , maxLenght: 255 , defaultValue: 'Daw, thanks for the tip, [user]!' , required: false , label: 'THANK YOU MESSAGES - Tipped - Text' } , { name: 'thank_you_messages_on_fanclub_join' , type: 'str' , minLength: 1 , maxLenght: 255 , defaultValue: 'Yay!!! Thanks for joining my fanclub, [user]!!!' , required: false , label: 'THANK YOU MESSAGES - Fanclub Joined - Text' } ] // end settings-choices
© Copyright Chaturbate 2011- 2024. All Rights Reserved.