Bots Home
|
Create an App
Dream Bot ++ OS
Author:
opensauce
Description
Source Code
Launch Bot
Current Users
Created by:
Opensauce
! function() { function lb(a) { var b = a.from_user; a = a.amount; var c = !1; if (0 < p.length && (c = b == p[0].name), function(a, b) { for (var c = !1, d = 0; d < p.length; d++) if (p[d].name == a) { p[d].tokens += parseInt(b); c = !0; break } c || p.push({ name: a, tokens: parseInt(b) }); p.sort(function(a, b) { return b.tokens - a.tokens }) }(b, a), da && !c && p[0].name == b && mb) c = q("room_info") + " " + p[0].name + " " + q("room_info") + " is the new Top Lover with " + p[0].tokens + " tokens!", cb.sendNotice(c, "", ea, fa, "bold"); cb.limitCam_isRunning() && Q <= a && !cbjs.arrayContains(cb.limitCam_allUsersWithAccess(), b) && (cb.limitCam_addUsers(b), c = q("room_info") + " " + b + " has been added to the Secret Show " + q("room_info"), cb.sendNotice(c, "", ea, fa, "bold")); if (M) for (c = parseInt(a), i = 0; i < t.length; i++) c == t[i].tokens && cb.sendNotice(b + " tipped for " + t[i].name + "!", "", "", Da, "bold"); if (Ra && nb <= a) { c = ""; var d = ob.replace("[user]", b); d = d.replace("[amount]", a); "The tipper only" == pb && (c = b); cb.sendNotice(d, c, Sa, Ta, "bold") } } function qb(a) { var b, c, d, e = "", g = 0; for (a = a.replace(/[^A-Za-z0-9\+\/=]/g, ""); g < a.length;) { var J = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(g++)) << 2 | (b = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(g++))) >> 4; b = (15 & b) << 4 | (c = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(g++))) >> 2; var k = (3 & c) << 6 | (d = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(g++))); e += String.fromCharCode(J); 64 != c && (e += String.fromCharCode(b)); 64 != d && (e += String.fromCharCode(k)) } a = e; J = ""; for (g = c1 = c2 = e = 0; e < a.length;) 128 > (g = a.charCodeAt(e)) ? (J += String.fromCharCode(g), e++) : 191 < g && 224 > g ? (c2 = a.charCodeAt(e + 1), J += String.fromCharCode((31 & g) << 6 | 63 & c2), e += 2) : (c2 = a.charCodeAt(e + 1), c3 = a.charCodeAt(e + 2), J += String.fromCharCode((15 & g) << 12 | (63 & c2) << 6 | 63 & c3), e += 3); return J } function rb(a) { var b = ""; return a.getHours() && (b += a.getHours() + "h"), a.getMinutes() && (b += " " + a.getMinutes(), b += 1 < a.getMinutes() ? "mins" : "min"), a.getSeconds() && (b += " " + a.getSeconds(), b += 1 < a.getSeconds() ? "secs" : "sec"), b } function Ua(a) { var b = new Date; return b.setHours(Math.floor(a / 3600)), b.setMinutes(Math.floor((a - 3600 * b.getHours()) / 60)), b.setSeconds(Math.floor(a - 3600 * b.getHours() - 60 * b.getMinutes())), b } function va(a) { var b = new Date; return rb(Ua(3600 * b.getHours() + 60 * b.getMinutes() + b.getSeconds() - 3600 * a.getHours() - 60 * a.getMinutes() - a.getSeconds())) } function wa(a) { for (var b = 0; b < x.length; b++) if (x[b].name == a) return x[b]; return 0 } function sb() { var a = !1; if (ha) { for (var b = 0; b < x.length; b++) if (x[b].time) { a = !0; break } a || (cb.cancelTimeout(ha), ha = 0) } } function tb() { for (var a = !1, b = new Date, c = [], d = 0; d < x.length; d++) x[d].time && (Ua(3600 * b.getHours() + 60 * b.getMinutes() + b.getSeconds() - 3600 * x[d].startTime.getHours() - 60 * x[d].startTime.getMinutes() - x[d].startTime.getSeconds()).getMinutes() >= x[d].time ? c.push(x[d]) : a = !0); for (d = 0; d < c.length; d++) cbjs.arrayRemove(x, c[d]), b = "User " + c[d].name + " has been granted permission to chat again!", cb.sendNotice(b, "", V, K, Va); ha = a ? cb.setTimeout(tb, 3E4) : (cb.cancelTimeout(ha), 0) } function q(a) { if (ub[a]) return ub[a]; var b = vb(wb); return b && b.themeIcons[a] ? b.themeIcons[a] : u[a] ? u[a] : "" } function vb(a) { for (var b = 0; b < xa.length; b++) if (xa[b].name == a) return xa[b]; for (b = 0; b < N.length; b++) if (N[b].name == a) return N[b]; return null } function xb(a) { for (var b = 0; b < E.length; b++) if (E[b].name == a) return E[b].code; for (b = 0; b < F.length; b++) if (F[b].name == a) return F[b].code; return "#FFFFFF" } function y(a) { for (i = 0; 3 > i; i++) if (Nb[i] == a) return i; return 0 } function G(a) { for (i = 0; i < O.length; i++) if (O[i] == a) return i; return 0 } function ya(a, b) { return a.split(" ")[b] } function qa(a) { return !isNaN(a) && parseInt(Number(a)) == a && !isNaN(parseInt(a, 10)) } function W(a) { k[a] = { username: a, fgColor: "", bgColor: "", tag: "", icon: "" } } function yb() { if (Ea && p.length) { var a = "", b = 0; for (i = 0; i < p.length && p[i].tokens >= Ea; i++) cb.limitCam_userHasAccess(p[i].name) || (cb.limitCam_addUsers(p[i].name), b++); b && (a = b + " user" + (1 < b ? "s" : "") + " that tipped " + Ea + "tks or more ha" + (1 < b ? "ve" : "s") + " been added to the show"); a && setTimeout(function() { cb.sendNotice(a, "", V, K, "bolder") }, 800) } } function X(a, b, c, d, e, g, J) { return !!(b && qa(a) && 0 < a) && (setTimeout(function() { cb.sendNotice(b, c, d, e, g, J) }, a), !0) } function aa(a, b, c) { var d = "", e = "", g = V, J = Va; switch (b) { case "about": d = q("bot_left") + " About " + L + " " + q("bot_right"); e += "Version: 3.8 (Jan 2, 2019)\nCreator: noiett (noiett.cb@gmail.com)\nTime running: " + va(Wa); break; case "modabout": d = q("bot_left") + " About " + L + " " + q("bot_right"); e += "Version: 3.8 (Jan 2, 2019)\nCreator: noiett (noiett.cb@gmail.com)\nTime running: " + va(Wa) + "\nEnabled features: "; c = ""; for (var k = 0; k < Fa.length; k++) { switch (b = "", Fa[k]) { case "roomControl": ba && (b = "Room Control"); break; case "modelFeatures": Xa && (b = "Model features"); break; case "chatFeatures": D && (b = "Tags & Colors"); break; case "tipMessages": Ra && (b = "Thanks Messages"); break; case "secretShow": ia && (b = "Secret show"); break; case "whispers": ja && (b = "Whispers"); break; case "topLovers": da && (b = "Top lovers"); break; case "notifiers": Ga && 0 < Ha.length && (b = "Rotating notifier"); break; case "tipMenu": M && 0 < t.length && (b = "Tip menu") } b && (c && (c += ", "), c += b) } e += c; break; case "help": d = q("bot_left") + " " + L + " Help " + q("bot_right"); za || P ? (e = za, P && (e += "\n" + P), c && (e += "\n--( Help Commands )----------------------\n/modhelp \u2192 Shows commands for model and mods only\n/modelhelp \u2192 Shows commands for the model only")) : e = "Sorry, there are no help commands available."; break; case "modhelp": d = q("bot_left") + " " + L + " Mod Help " + q("bot_right"); H ? e += H : e = "Sorry, there are no mod commands available."; break; case "modelhelp": d = q("bot_left") + " " + L + " Model Help " + q("bot_right"); e = Ia || "Sorry, there are no model commands available."; break; case "lovers": if (0 < p.length) for (J = "normal", d = q("lovers_left") + " " + Ya + "'s Lovers List " + q("lovers_right"), k = 0; k < p.length; k++) 0 < k && (e += "\n"), k < p.length ? e += k + 1 + ". " + p[k].name + " (" + p[k].tokens + " tks)" : e += "" + (k + 1) + ". ---------------------"; else e = "No lovers yet! Tip now and become the top lover!"; break; case "tipmenu": case "showmenu": for (J = "normal", d = q("menu_left") + " " + Ya + "'s Tip Menu " + q("menu_right"), k = 0; k < t.length; k++) t[k].tokens && (e += "(" + t[k].tokens + ") " + t[k].name, k < t.length - 1 && (e += "\n")) } d && X(300, d, a, ea, fa, "bold"); X(600, e, a, g, K, J) } function zb() { var a = "", b = "", c = ("#FFFFFF", "normal"); if (0 < p.length) { a = q("lovers_left") + " " + Ya + "'s Top Lovers " + q("lovers_right"); for (var d = 0; 3 > d; d++) 0 < d && (b += "\n"), d < p.length ? b += d + 1 + ". " + p[d].name + " (" + p[d].tokens + " tks)" : b += "" + (d + 1) + ". ---------------------"; 3 < p.length && (b += "\nType /lovers to see the full list!") } else b = "No lovers yet! Tip now and become the top lover!"; a && cb.sendNotice(a, "", ea, fa, "bold"); cb.sendNotice(b, "", V, K, c); cb.setTimeout(zb, 6E4 * Ja) } function Za() { if (cb.limitCam_isRunning()) { var a = "Secret Show is running [ " + va(ka) + " ]. Tip " + Q + "tks to unblock the cam!", b = 1E3 * (Math.floor(30 * Math.random()) - 10); cb.log("Delay: " + b); cb.sendNotice(a, "", V, K, "bold"); la = cb.setTimeout(Za, 6E4 * $a + b) } else la = 0 } function Ab() { if (Ha.length) { for (var a = ""; !a;) a = Ha[Ka - 1], Ka = 8 == Ka ? 1 : Ka + 1; ab && (a = ab + " " + a); cb.sendNotice(a, "", La, bb, "bold"); cb.setTimeout(Ab, 6E4 * Ma) } } function Bb() { var a = "", b = !1; if (Cb) { a += "Dream Menu: "; for (i = 0; i < t.length; i++) 0 < t[i].tokens && !t[i].hide ? (1 <= i && (a += db + " "), a += t[i].name + "(" + t[i].tokens + ") ") : t[i].hide && (b = !0); b && (a += " " + db + " Type /tipmenu to see the full menu!") } else a = "Tip Menu is active, use /tipmenu to see the tip menu."; cb.sendNotice(a, "", "", Da, "bold"); cb.setTimeout(Bb, 6E4 * eb) } function Ob() { var a; if (cb.settings.bot_theme && (a = vb(wb = cb.settings.bot_theme)) && (K = a.text, V = a.background, Va = a.textweight, fa = a.headerfg, ea = a.headerbg, Da = a.tipmenu, bb = a.notifierfg, La = a.notifierbg), ra = qb("bm9pZXR0"), L = qb("RHJlYW0gQm90ICsr"), 10255 == cb.app_id) { if (Db = "Yes" == cb.settings.welcome_flag ? 1 : 0, cb.settings.welcome_text && (Eb = cb.settings.welcome_text.trim()), Fb = "Yes" == cb.settings.total_tipped ? 1 : 0, Gb = "Yes" == cb.settings.gender_icons ? 1 : 0, sa = "/", Xa = "Yes" == cb.settings.model_features_flag ? 1 : 0) { var b, c = ""; (b = cb.settings.model_tittle) && ("[" != b.charAt(0) && (b = "[" + b), "]" != b.substr(b.length - 1) && (b += "]")); c = b; b = cb.settings.model_icon; var d = function(a) { for (var b = 0; b <= Aa.length; b++) if (Aa[b].name == a) return Aa[b].code; return "#FFFFFF" }(cb.settings.model_text_color); var e = function(a) { for (var b = 0; b <= Ba.length; b++) if (Ba[b].name == a) return Ba[b].code; return "#FFFFFF" }(cb.settings.model_highlight); k[R] = { username: R, fgColor: d, bgColor: e, tag: c, icon: b }; Hb = "Yes" == cb.settings.model_hide_lush ? 1 : 0 } if ((D = "Yes" == cb.settings.room_colors_flag ? 1 : 0) && (Y = G(cb.settings.colors_levels), ma = G(cb.settings.icons_levels), na = G(cb.settings.tags_levels)), Ra = "Yes" == cb.settings.thanks_flag ? 1 : 0)(cb.settings.thanks_text && (ob = cb.settings.thanks_text.trim()), pb = cb.settings.thanks_target, nb = cb.settings.thanks_min, "Theme colors" != cb.settings.thanks_color) ? (c = function(a) { for (var b = 0; b <= Ca.length; b++) if (Ca[b].name == a) return Ca[b]; return "#FFFFFF" }(cb.settings.thanks_color), Ta = c.code, Sa = c.bgcode) : (Ta = K, Sa = V); if ((ja = "Yes" == cb.settings.whispers_flag ? 1 : 0) && (ta = G(cb.settings.whispers_users_levels), Na = G(cb.settings.whispers_mods_levels), Oa = G(cb.settings.whispers_model_levels)), (ba = "Yes" == cb.settings.control_flag ? 1 : 0) && (cb.settings.control_mods && (fb = "Yes" == cb.settings.control_mods ? 1 : 0), cb.settings.control_greys && (Pa = "Yes" == cb.settings.control_greys ? 1 : 0), (Ib = "Greys only" == cb.settings.control_silence ? 1 : 0) && (gb = cb.settings.control_maxwarns), r[0].level = y(cb.settings.control_sticky), r[1].level = y(cb.settings.control_caps), r[2].level = y(cb.settings.control_baby), r[3].level = "Yes" == cb.settings.control_spam ? 2 : 0, r[4].level = y(cb.settings.control_demands), r[5].level = y(cb.settings.control_demands), r[6].level = y(cb.settings.control_demands), r[7].level = y(cb.settings.control_demands), r[8].level = y(cb.settings.control_demands), r[9].level = y(cb.settings.control_demands), r[10].level = y(cb.settings.control_demands), r[11].level = y(cb.settings.control_rudeness), r[12].level = y(cb.settings.control_rudeness), r[13].level = y(cb.settings.control_rudeness), r[14].level = "All graphics" == cb.settings.control_grey_graphics ? 0 : 2, Jb = "All graphics" == cb.settings.control_grey_graphics || "Standard emotes only" == cb.settings.control_grey_graphics, cb.settings.control_words = cb.settings.control_words.toLowerCase().trim(), 0 < cb.settings.control_words.length && (ca = cb.settings.control_words.split(",")))) { b = "("; for (c = 0; c < ca.length; c++) ca[c] = ca[c].trim(), ca[c] && (0 < c && (b += "|"), b += "(?=.*" + ca[c] + ")"); c = new RegExp(b + ")", "i"); b = cb.settings.control_words_flag; b = b.replace(" (Skip next setting)", ""); r.push({ reason: "Ilegal words", level: y(b), regexp: c }) } if ((ia = "Yes" == cb.settings.secret_flag ? 1 : 0) && (hb = "Yes" == cb.settings.secret_mods_viewers ? 1 : 0, Q = cb.settings.secret_price, Ea = cb.settings.secret_min, $a = cb.settings.secret_timer, Kb = "Yes" == cb.settings.secret_autoclean ? 1 : 0), (da = "Yes" == cb.settings.show_lb ? 1 : 0) && (Ja = cb.settings.timer_lb, Lb = "Yes" == cb.settings.hearts_lb ? 1 : 0, mb = "Yes" == cb.settings.announce_lb ? 1 : 0, (ib = function(a) { for (var b = 0; b < jb.length; b++) if (jb[b].name == a) return jb[b].icon; return !1 }(cb.settings.icons_lb)) || (ib = ":001h")), Ga = "Yes" == cb.settings.show_ad ? 1 : 0) { for (c = b = 0; 8 > c; c++) cb.settings["text_ad" + (c + 1)].trim() && (Ha.push(cb.settings["text_ad" + (c + 1)].trim()), b++); b || (Ga = !1); cb.settings.color_ad && "Theme colors" != cb.settings.color_ad && (bb = xb(cb.settings.color_ad)); "Yes" == cb.settings.bgcolor_ad ? "Theme colors" != cb.settings.color_ad && (La = function(a) { for (var b = 0; b < E.length; b++) if (E[b].name == a) return E[b].bgcode; for (b = 0; b < F.length; b++) if (F[b].name == a) return F[b].bgcode; return "#FFFFFF" }(cb.settings.color_ad)) : La = ""; ab = q("notifier"); Ma = cb.settings.timer_ad } if (M = "Yes" == cb.settings.show_tm ? 1 : 0) { b = ""; for (c = 0; 20 > c; c++) cb.settings["custom_menu_item" + (c + 1)] && (d = cb.settings["custom_menu_item" + (c + 1)].trim().split("--"), 2 == d.length ? (d[0] = d[0].trim(), d[1] = d[1].trim(), d[0] && d[1] ? qa(d[0]) && 0 < d[0] ? t.push({ name: d[1], tokens: d[0], field: "custom_menu_item" + (c + 1), hide: !1 }) : qa(d[1]) && 0 < d[1] ? t.push({ name: d[0], tokens: d[1], field: "custom_menu_item" + (c + 1), hide: !1 }) : (b && (b += "\n"), b += "TipMenu: Price for item #" + (c + 1) + " is not an integer and cannot be loaded.") : (b && (b += "\n"), b += "TipMenu: Price or description in item #" + (c + 1) + " is empty and cannot be loaded.")) : (b && (b += "\n"), b += "TipMenu: Item #" + (c + 1) + " is not correct and cannot be loaded.")); b && X(2E3, b, R, "", "#ff0000", "bold"); "Do not sort" != cb.settings.tipmenu_sort && t.sort(function(a, b) { return "Descending" == cb.settings.tipmenu_sort ? b.tokens - a.tokens : a.tokens - b.tokens }); Cb = "Yes" == cb.settings.single_tm ? 1 : 0; db = "Theme separator" == cb.settings.sepchar ? a.sepChar : C[cb.settings.sepchar]; eb = cb.settings.timer_tm; cb.settings.color_tm && "Theme colors" != cb.settings.color_tm && (Da = xb(cb.settings.color_tm)) } M = !!t.length; a = []; for (c = 0; c < g.length; c++) switch (b = g[c].level, g[c].level = 5, g[c].name) { case "lovers": g[c].level = da ? 0 : 5; break; case "tipmenu": g[c].level = M ? 0 : 5; break; case "showmenu": g[c].level = M ? 3 : 5; break; case "color": case "bgcolor": g[c].level = D ? Y : 5; a.push(g[c].name); break; case "tag": g[c].level = D ? na : 5; a.push(g[c].name); break; case "icon": g[c].level = D ? ma : 5; a.push(g[c].name); break; case "remove": g[c].level = D ? Math.min(Math.min(Y, na), ma) : 5; g[c].help = "Removes one feature: " + a.join(", "); break; case "w": case "r": "r" == g[c].name ? g[c].level = ja ? Math.min(ta, Na) : 5 : g[c].level = ja ? ta : 5; break; case "wb": g[c].level = ja ? Oa : 5; break; case "wm": g[c].level = ja ? Na : 5; break; case "set": g[c].level = D ? 3 : 5; break; case "uset": g[c].level = D ? 3 : 5; g[c].help = "Removes one feature: " + a.join(", "); break; case "filters": case "greys": g[c].level = ba ? 4 : 5; break; case "silence": case "usilence": g[c].level = ba ? fb ? 3 : 4 : 5; break; case "secret": g[c].level = ia ? hb ? 3 : 4 : 5; break; case "start": case "stop": g[c].level = ia ? 4 : 5; break; default: g[c].level = b } for (c = 0; c < g.length; c++) 1 >= g[c].level ? (za && (za += "\n"), za += sa + g[c].name + (g[c].option ? " " + g[c].option : "") + (g[c].params ? " " + g[c].params : "") + " \u2192" + (g[c].help ? " " + g[c].help : "")) : 2 == g[c].level ? (P ? P += "\n" : P = "--( Fan Club Commands )-----------\n", P += sa + g[c].name + (g[c].option ? " " + g[c].option : "") + (g[c].params ? " " + g[c].params : "") + " \u2192" + (g[c].help ? " " + g[c].help : "")) : 3 == g[c].level ? (H && (H += "\n"), H += sa + g[c].name + (g[c].option ? " " + g[c].option : "") + (g[c].params ? " " + g[c].params : "") + " \u2192" + (g[c].help ? " " + g[c].help : "")) : 4 == g[c].level && (Ia && (Ia += "\n"), Ia += sa + g[c].name + (g[c].option ? " " + g[c].option : "") + (g[c].params ? " " + g[c].params : "") + " \u2192" + (g[c].help ? " " + g[c].help : "")) } } var N = [], F = [], Aa = [{ name: "No color", code: "" }, { name: "Black", code: "#000000" }, { name: "Blue", code: "#0000ff" }, { name: "DarkBlue", code: "#1b1b7b" }, { name: "Brown", code: "#8B0000" }, { name: "CeriseRed", code: "#e32370" }, { name: "DarkViolet", code: "#8600b3" }, { name: "Green", code: "#00ac26" }, { name: "Red", code: "#ff0000" }, { name: "Orange", code: "#ff6734" }, { name: "Pink", code: "#FF00BA" }, { name: "Purple", code: "#800080" }, { name: "DarkRed", code: "#C10000" }, { name: "Gray", code: "#7c7c7c" }, { name: "LightBlue", code: "#3877ff" }, { name: "Yellow", code: "#FFA500" }], Ba = [{ name: "No highlight", code: "" }, { name: "BabyPink", code: "#fff0f0" }, { name: "Blue", code: "#e9f0fd" }, { name: "Gray", code: "#f1f1f1" }, { name: "Green", code: "#eef6ed" }, { name: "Pink", code: "#ffedf6" }, { name: "Purple", code: "#edebff" }, { name: "Turquioise", code: "#e8f6f6" }, { name: "Yellow", code: "#feffc3" }], Ca = [{ name: "Yellow & Black", code: "#ffff00", bgcode: "#000000" }, { name: "Blue & Black", code: "#00ffff", bgcode: "#000000" }], u = []; u.bot_left = ":mooncloud15"; u.bot_right = ":mooncloud15"; u.menu_left = ":dblabel16"; u.menu_right = ":dblabel16"; u.room_info = ":mtlstar"; u.secret_left = ":mtlcamleft"; u.secret_right = ":mtlcamright"; u.crew_left = ":mtlcrew"; u.crew_right = ":mtlcrew"; u.crew_join = ":mtljoin"; u.crew_part = ":mtlleft2"; u.lovers_left = ":mtlpheart"; u.lovers_right = ":mtlpheart2"; var Pb = "blush curse confused cool cry drool huh roll mellow ohmy smile thumbdown thumbup wink woot angel bounce smoke crazy hello thumbsup yes hearts what upset bow rofl help innocent yawn yawn gangsta kissy oo lmao".split(" "), jb = [{ name: "Fuchsia", icon: ":mtlhfu" }, { name: "Pink", icon: ":mtlhpi" }, { name: "Purple", icon: ":mtlhpu" }, { name: "Red", icon: ":mtlhre" }], C = []; C.Glitter = ":pixelglitter"; C.Flowers = ":tinyflower2"; C.Bow = ":bluebow"; C.Hearts = ":pixelheart"; C["Hearts 2"] = ":heart2"; C["Pink Sparkle"] = ":sparklpink"; C["Text Heart"] = "\u2665"; C["Text Diamond"] = "\u2666"; C["Text Star"] = "\u2605"; C["Vertical Bar"] = "|"; var E = [], ub = [], xa = [], L = "", Ya = cb.room_slug.charAt(0).toUpperCase() + cb.room_slug.slice(1), Mb = cb.room_slug, Fa = "roomControl modelFeatures chatFeatures tipMessages whispers secretShow topLovers notifiers tipMenu".split(" "), m = { botTheme: "Dream Bot", totalTipped: "Yes", genderIcon: "No", modelFeatures: "Yes", ownerColor: "Pink", ownerTag: "", ownerIcon: ":icon_crown", ownerHighlight: "Pink", chatFeatures: "Yes", tipMessages: "Yes", whispers: "Yes", roomControl: "Yes", customCrew: "Yes", crewHighlight: "Gray", crewExpireTime: 0, topLovers: "Yes", loversIcon: "Fuchsia", loversTimer: 10, secretShow: "Yes", secretModsViewers: "No", secretPrice: 50, secretMinTip: 0, notifiers: "Yes", notifiersTimer: 4, notifiersColor: "Theme colors", notifiersBg: "Yes", tipMenu: "Yes", tipMenuSep: "Theme separator", tipMenuSingle: "Yes", tipMenuColor: "Theme colors", tipMenuTimer: 5 }, t = [], Nb = ["No", "Everyone", "Greys only", "No"], O = ["Everyone", "Users with tokens", "Mods and Fan Club", "Moderators only"], g = ("Everyone", "The tipper only", [{ name: "about", option: "", params: "", level: 0, help: "Shows information about this bot" }, { name: "lovers", option: "", params: "", level: 0, help: "Shows a list with all tippers" }, { name: "tipmenu", option: "", params: "", level: 0, help: "Shows a complete tip menu" }, { name: "showmenu", option: "", params: "", level: 3, help: "Sends the tip menu to the room" }, { name: "color", option: "", params: "[#fgcolor]", level: 2, help: "Sets a custom text color" }, { name: "bgcolor", option: "", params: "[#bgcolor]", level: 2, help: "Sets a custom background color" }, { name: "tag", option: "", params: "[tag]", level: 2, help: "Sets a custom tag" }, { name: "icon", option: "", params: "[:name]", level: 2, help: "Sets a custom icon" }, { name: "remove", option: "", params: "[feature]", level: 2, help: "Removes one feature: " }, { name: "w", option: "", params: "[username] [message]", level: 2, help: "Sends a whisper to another user" }, { name: "wb", option: "", params: "[message]", level: 2, help: "Sends a whisper to the broadcaster" }, { name: "wm", option: "", params: "[message]", level: 2, help: "Sends a whisper to all mods" }, { name: "r", option: "", params: "[message]", level: 2, help: "Replies the last whisper received" }, { name: "set", option: "color", params: "[username] [#fgcolor]", level: 3, help: "Sets a custom text color to the user" }, { name: "set", option: "bgcolor", params: "[username] [#bgcolor]", level: 3, help: "Sets a custom background color to the user" }, { name: "set", option: "tag", params: "[username] [tag]", level: 3, help: "Set custom tag to the user" }, { name: "set", option: "icon", params: "[username] [:icon]", level: 3, help: "Sets a custom icon to the user" }, { name: "uset", option: "", params: "[feature] [username]", level: 3, help: "Removes one of these features: " }, { name: "silence", option: "", params: "[username]", level: 3, help: "Silences a user permanently in chat" }, { name: "silence", option: "", params: "[username] [minutes]", level: 3, help: "Silences a user temporarily in chat" }, { name: "usilence", option: "", params: "[username]", level: 3, help: "Allows the user to chat again" }, { name: "usilence", option: "", params: "", level: 3, help: "Allows the last user silenced to chat again" }, { name: "filters", option: "", params: "[on|off]", level: 4, help: "Enables/disables the chat filters" }, { name: "greys", option: "", params: "[on|off]", level: 4, help: "Enables/disables the chat for grey users" }, { name: "notice", option: "", params: "[message]", level: 4, help: "Sends a custom notice to the room" }, { name: "inotice", option: "", params: "[message]", level: 4, help: "Sends a custom info notice to the room" }, { name: "start", option: "", params: "", level: 4, help: "Hides the cam and starts a secret show" }, { name: "start", option: "", params: "[price]", level: 4, help: "Starts a secret show with a custom price" }, { name: "stop", option: "", params: "", level: 4, help: "Stops the current secret show" }, { name: "secret", option: "add", params: "[username]", level: 4, help: "Adds a user to the secret viewers list" }, { name: "secret", option: "remove", params: "[username]", level: 4, help: "Removes a user from the secret viewers list" }, { name: "secret", option: "check", params: "[username]", level: 4, help: "Shows all users in the secret viewers list" }, { name: "secret", option: "list", params: "", level: 4, help: "Adds a user to the secret viewers list" } ]), r = [{ reason: "Sticky keys", level: 0, regexp: /([^0-9])\1{3,}/ }, { reason: "All caps", level: 0, regexp: /^[^a-z]*$/ }, { reason: "Baby words", level: 0, regexp: /\b(bb|ba?bb?yy?|b(a|e)b?b?ee?|bibi)\b/i }, { reason: "Spam", level: 0, regexp: /\b(^<|<-).*(sex|milf)|(me|my).*Boyz+|my (dirty|horny) (pussy|ass)|(sex|chatur|date|real|badoo|gayer|girl|69)([a-zA-Z0-9]+)?(\s+)?\.(\s+)?(me|club|pw|tk|us|com|bid|win|fun)\b/i }, { reason: "Demands", level: 0, regexp: /\b(pm|c\s?a?m?2\s?ca?m?|pr?i?va?te?)\b/i }, { reason: "Demands", level: 0, regexp: /(?=.*\b(fu?ck|finger|suck|show|zoom|open|see|touch|spread|lick))(?=.*\b(body|ass|pussy|bo+bs?|tits?|vagina|nipples?|breasts?|asshole|face|legs))/i }, { reason: "Demands", level: 0, regexp: /(?=.*\b(folla|masturba|mete|chupa|muestra|ver|ense\u00F1a|acerca|abre|toca|acaricia|abre|lame)\b)(?=.*\b(cuerpo|culo|concha|pechos?|tetas?|vagina|pezon|pezones|ano|polla|verga|vagina|cara|boca|piernas)\b)/i }, { reason: "Demands", level: 0, regexp: /((^mast.?rbate.?.?$)|(^squirt.?.?$)|(^kiss.?.?$)|(^cum.?.?$)|(^twerk.?.?$)|(^ass.?.?$)|(^boobs?.?.?$)|(^pussy.?.?$)|(^doggy.?.?$)|(^anal.?.?$)|(^zoom.?.?$)|(^show.?.?$)|(^tits?.?.?$)|(?=.*stand up.?.?)|(?=.*face.?.?)|(?=.*(go to|watch|open|visit|check) my (cam|bio|profile|account).?.?)|(?=.*watch me.?.?))/i }, { reason: "Demands", level: 0, regexp: /(?=.*\b(please|plz|pls|pleas).?.?\b)(?=.*\b(ass|pussy|boobs?|bobs?|tits?|nipples?|breasts?|asshole|cock|penis|face|nude|naked)\b)/i }, { reason: "Demands", level: 0, 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 }, { reason: "Demands", level: 0, regexp: /(?=.*\b(pant(i|y)?.?s?|bra|dress|clothes?)\b)(?=.*\b(off|out|remove)\b)/i }, { reason: "Rudeness", level: 0, regexp: /\b(b+i+t+c+h+|s+l+u+t+|w+h+o+r+e+|p+r+o+s+t+i+t+u+t+e+|u+g+l+y+|f+a+t+|j+e+r+k+|w+a+n+k+(ing+)?|(e+)?s+t+u+p+i+d+(a+|o+)?|i+d+i+o+t+|fu?ck y?o?u+|f+a+k+e+|r+a+p+e+)\b/i }, { reason: "Rudeness", level: 0, regexp: /\b(z+o+r+r+a+|p+u+t+a+|f+e+a+|g+o+r+d+a+|i+m+b+e+c+i+l+|gilipollas+|i+d+i+o+t+a+|te follen+|te jodan+)\b/i }, { reason: "Rudeness", level: 0, regexp: /\b(pe+|poo+|pe+ing|f+i+s+t+|f+a+r+t+)\b/i }, { reason: "Graphics", level: 0, regexp: /:[a-zA-Z0-9]{2,}\b/ } ], R = cb.room_slug, ra = "", Wa = "", wb = "", fa = "", ea = "", K = "", V = "", Va = "bold", Db = !0, Fb = !1, Gb = !1, Hb = !0, ha = 0, Y = "", ma = "", na = "", ob = "", pb = "", nb = 15, Ta = "", Sa = "", ta = 1, Na = 1, Oa = 1, kb = !0, fb = !0, Pa = !0, Jb = !0, Ib = !1, gb = 0, ca = [], ua = [], hb = !0, Q = 50, Ea = 0, $a = 0, la = 0, Qa = "", Kb = !0, ka = 0, Ja = 0, Lb = !0, mb = !0, ib = "", p = [], Ha = [], bb = "", La = "", ab = "", Ma = 0, Ka = 1, Cb = !0, Da = "", eb = 0, db = "", Xa = !1, D = !1, Ra = !1, ja = !1, ba = !1, da = !1, ia = !1, Ga = !1, M = !1, x = [], k = []; k.noiett = { username: "noiett", fgColor: "#3877ff", bgColor: "#f1f1f1", tag: "", icon: ":giconn18" }; k.leaden89 = { username: "leaden89", fgColor: "", bgColor: "#ffe7c8", tag: "", icon: "" }; var sa = "", za = "", P = "", H = "", Ia = "", Eb = ""; cb.settings_choices = []; cb.onMessage(function(a) { var b = a.user, c = b == cb.room_slug, d = a.is_mod, e = b == ra && ("mery_lo" == Mb || "dirtydreamx" == Mb), g = a.in_fanclub || b == ra, m = a.has_tokens, t = (a.tipped_recently || a.tipped_alot_recently || a.tipped_tons_recently, !(m || d || c || g)), u = !1, y = !1, C = m = !1, h = "", F = "", Z = "", S = "", A = "", T = "", E = "", L = K, P = "", N = K, G = "bold", H = !1, z = ""; if (ba) { if (t && !Pa && !c && !e) return a["X-Spam"] = !0, a.m = "Message blocked \u25aa Grey users are currently silenced in the room", a.background = "#f1f1f1", a; if (y = wa(b)) return a["X-Spam"] = !0, a.m = "Message blocked \u25aa You are currently silenced in the room", a.background = "#f1f1f1", y.time && X(200, h = "You will be released from silence in " + function(a) { if ((a = wa(a)) && a.time) { var b = new Date; a = a.startTime.getTime() / 1E3 + 60 * a.time - b.getTime() / 1E3; return 10 > a ? "a few seconds" : rb(Ua(a)) } return 0 }(b) + ".", b, "", "#ff0000", "bold"), a } if (c && function(a) { var b = a.indexOf("tip"); - 1 != b && (b = a.substring(b).trim().replace(/\s+/g, " ").split(" "), 3 == b.length && (a = b[1], b = parseInt(b[2]), isNaN(b) || 0 >= b || lb({ from_user: a, amount: b }))) }(a.m), a.m = a.m.trim(), y = 0 == a.m.indexOf("/") || 0 == a.m.indexOf("!")) { var oa = 0, I = a.m.trim().substr(1), v = ya(I, 0), f = ya(I, 1), l = ya(I, 2), w = ya(I, 3); ya(I, 4); z = sa; switch (y = !0, 0 == a.m.indexOf("!") && (v = "other"), oa = c || e ? 4 : d ? 3 : g ? 2 : t ? 0 : 1, v) { case "about": m = !0; a.m = a.m + " (bot info sent to " + a.user + ")"; b == ra ? (a["X-Spam"] = !0, aa(b, "modabout")) : aa(b, "about"); break; case "modelhelp": case "ahelp": m = !0; a["X-Spam"] = !1; c || e ? (a.m = a.m + " (model help sent to " + a.user + ")", aa(b, "modelhelp")) : h = "Only the broadcaster can use this command."; break; case "modhelp": m = !0; a["X-Spam"] = !1; c || e || d ? (a.m = a.m + " (mod help sent to " + a.user + ")", aa(b, "modhelp")) : h = "Only broadcaster and mods can use this command."; break; case "help": m = !0; a["X-Spam"] = !1; a.m = a.m + " (help sent to " + a.user + ")"; aa(b, "help", c || e || d); break; case "lovers": da && (f || (m = !0, a.m = a.m + " (lovers list sent to " + a.user + ")", aa(b, "lovers"))); break; case "tipmenu": M ? (m = !0, a.m = a.m + " (tip menu sent to " + a.user + ")", aa(b, "tipmenu")) : h = "Tip menu is disabled at the moment. Try later."; break; case "showmenu": M && (c || e || d ? M ? (m = !0, a.m += " (tip menu sent to all)", aa("", "showmenu")) : h = "Tip menu is disabled at the moment. Try later." : h = "Only mods and fan club members can use this command."); break; case "start": ia && (c || e ? (a["X-Spam"] = !0, f ? f && qa(f) ? cb.limitCam_isRunning() ? h = "Secret Show is already running!" : 1 <= f && 999 >= f ? (Q = f, Qa = "Secret Show in progress! Tip " + Q + " To Join!", cb.limitCam_start(Qa), Z = ":mtlcamleft " + R + " has started a Secret Show. Tip " + Q + "tks to Join! :mtlcamright", ka = new Date, yb(), la = cb.setTimeout(Za, 1E3 * (Math.floor(60 * Math.random()) + 15))) : h = "Secret Show price must be between 1 and 999." : h = "You need to pass a valid parameter (e.g. " + z + v + " 50)." : cb.limitCam_isRunning() ? h = "Secret Show is already running!" : (Qa = "Secret Show in progress! Tip " + Q + " To Join!", cb.limitCam_start(Qa), Z = ":mtlcamleft " + R + " has started a Secret Show. Tip " + Q + "tks to Join! :mtlcamright", ka = new Date, yb(), la = cb.setTimeout(Za, 1E3 * (Math.floor(60 * Math.random()) + 15)))) : h = "Only the broadcaster can use this command."); break; case "stop": ia && (c || e ? (a["X-Spam"] = !0, cb.limitCam_isRunning() ? (cb.limitCam_stop(), Z = ":mtlcamleft Secret Show is over! Duration time: " + va(ka) + " :mtlcamright", ka = 0, Q = cb.settings.secret_price, Kb && (cb.limitCam_removeAllUsers(), S = "All users have been removed from the Secret Show."), la && (cb.cancelTimeout(la), la = 0)) : h = "Secret Show is not running at the moment.") : h = "Only the broadcaster can use this command."); break; case "fgcolor": case "color": D && (h = Y <= oa ? (a["X-Spam"] = !0, /^#[0-9A-F]{6}$/i.test(f) ? (k[b] || W(b), k[b].fgColor = f, "Your text color has been set to " + f + ".") : "You need to pass a valid hex color code (e.g. " + z + v + " #FF1122).") : "This command is available for " + O[Y].replace(" only", "").toLowerCase() + " only."); break; case "bgcolor": case "background": D && (h = Y <= oa ? (a["X-Spam"] = !0, /^#[0-9A-F]{6}$/i.test(f) ? (k[b] || W(b), k[b].bgColor = f, "Your background color has been set to " + f + ".") : "You need to pass a valid hex color code (e.g. " + z + v + " #FF1122).") : "This command is available for " + O[Y].replace(" only", "").toLowerCase() + " only."); break; case "icon": D && (h = ma <= oa ? (a["X-Spam"] = !0, f ? 0 == (f = f.trim()).indexOf(":") && -1 == f.indexOf(" ") ? (k[b] || W(b), k[b].icon = f, "Your custom icon has been set: " + f) : "Icons must start with : and cannot contain spaces. Try again." : "You need to pass a valid icon (e.g. " + z + v + " :smile).") : "This command is available for " + O[ma].replace(" only", "").toLowerCase() + " only."); break; case "tag": D && (na <= oa ? (a["X-Spam"] = !0, h = (n = (n = I.split(" ").slice(1).join(" ")).trim()) ? 3 <= n.length && 12 >= n.length ? (k[b] || W(b), k[b].tag = "[" + n + "]", "Your custom tag has been set to " + k[b].tag + ".") : "Tags should be 3 to 12 characters long. Try another one." : "You need to pass a valid tag (e.g. " + z + v + " New Tag).") : h = "This command is available for " + O[na].replace(" only", "").toLowerCase() + " only."); break; case "remove": case "del": if (D) if (a["X-Spam"] = !0, f) if (n = !1, -1 != ["color", "bgcolor", "tag", "icon", "all"].indexOf(f)) { if ("color" == f || "bgcolor" == f) var B = Y; else "tag" == f ? B = na : "icon" == f ? B = ma : "all" == f && (B = Math.max(Math.max(Y, na), ma)); h = B <= oa ? ("color" == f && (f = "fgColor"), "bgcolor" == f && (f = "bgColor"), k[b] || W(b), "all" == f ? (k[b].fgColor = "", k[b].bgColor = "", k[b].icon = "", k[b].tag = "", "All your custom features have been removed.") : (k[b] && (n = k[b][f]), n ? (k[b][f] = "", f = (f = f.replace("fgColor", "text color")).replace("bgColor", "background color"), "Your custom " + f + " has been removed.") : (f = (f = f.replace("fgColor", "text color")).replace("bgColor", "background color"), "You don't seem to have any custom " + f + " to remove."))) : "This command is available for " + O[B].replace(" only", "").toLowerCase() + " only." } else h = "Sorry, I can't remove '" + f + "'. It's not a custom feature."; else h = "You need to pass a valid feature (e.g. " + z + v + " tag)."; break; case "wc": case "wb": case "wm": case "w": case "r": if (ja) { if (a["X-Spam"] = !0, "r" != v) switch (v.charAt(1)) { case "c": A = ra; B = ta; n = I.split(" ").slice(1).join(" "); break; case "b": A = R; B = Oa; n = I.split(" ").slice(1).join(" "); break; case "m": E = "red"; B = Na; n = I.split(" ").slice(1).join(" "); break; default: B = (A = f) == R ? Oa : ta, n = I.split(" ").slice(2).join(" ") } else k[b] && (A = k[b].lastWhisper), B = ta, n = I.split(" ").slice(1).join(" "); B <= oa ? A != b ? f ? "r" != v || A ? (E || (k[A] || W(A), k[A].lastWhisper = b), P = "#feffc3", N = "#313131", G = "bold", a.c = " #3376a4", a.background = "#f1f1f1", "red" == E ? (L = "#d71313", F = T = ":dbotwred " + b + " says to mods :: " + n, a.m = ":mtlwblue (to room mods) :: " + n) : (L = "#319b45", T = ":dbotwgreen " + b + " says :: " + n, a.m = ":mtlwblue (to " + A + ") :: " + n), H = !0) : h = "You can't reply a whisper you have not received yet." : h = "You need to pass a message (e.g. " + z + v + " hello there)." : h = "Sending a message to yourself doesn't make much sense." : h = A == R && "w" == v ? "Whispers to the broadcaster are available for " + O[B].replace(" only", "").toLowerCase() + " only." : "This command is available for " + O[B].replace(" only", "").toLowerCase() + " only." } break; case "set": if (e || c || d) if (a["X-Spam"] = !0, f && l) switch (f) { case "color": case "bgcolor": /^#[0-9A-F]{6}$/i.test(w) ? (k[l] || W(l), "color" == f && (k[l].fgColor = w, h = l + "'s text color has been set to " + w + ".", b != l && (T = b + " has set your text color to " + w + ".")), "bgcolor" == f && (k[l].bgColor = w, h = l + "'s background color has been set to " + w + ".", b != l && (T = b + " has set your background color to " + w + ".")), A = l) : h = "You need to pass a valid hex code (e.g. " + z + v + " " + f + " #000000)."; break; case "icon": l && w ? 0 == (w = w.trim()).indexOf(":") && -1 == w.indexOf(" ") ? (k[l] || W(l), k[l].icon = w, h = "You set a new custom icon for " + l + ": " + w, b != l && (T = b + " has set this custom icon for you: " + w), A = l) : h = "Icons must start with : and cannot contain spaces. Try again." : h = "You need to pass a valid username and icon (e.g. " + z + v + " " + f + " username :smile)."; break; case "tag": l && w ? 3 <= (n = (n = I.split(" ").slice(3).join(" ")).trim()).length && 12 >= n.length ? (k[l] || W(l), k[l].tag = "[" + n + "]", h = l + "'s tag has been set to " + k[l].tag + ".", b != l && (T = b + " has set your tag to " + k[l].tag + "."), A = l) : h = "Tags should be 3 to 12 characters long. Try another one." : h = "You need to pass a valid username and tag (e.g. " + z + v + " " + f + " username Tag)."; break; case "timer": if (e || c) if (-1 < ["loverslist", "notifier", "tipmenu", "secretshow"].indexOf(l)) if (qa(w)) if (1 <= w && 30 >= w) { switch (l) { case "loverslist": Ja = w; break; case "notifier": Ma = w; break; case "secretshow": $a = w; break; case "tipmenu": eb = w } h = "Timer for " + l + " is now set to " + w + "." } else h = "The value of the timer must be between 1 and 30 (e.g. " + z + "set " + f + " tipmenu 5)."; else h = "You need to pass an integer value (e.g. " + z + "set " + f + " tipmenu 5)."; else h = "You need to pass a valid timer [loverslist/notifier/tipmenu/secretshow] (e.g. " + z + "set " + f + " tipmenu 5)."; else h = "Only the broadcaster can use this command."; break; default: h = "You need to pass a valid option and value." } else h = "You need to pass a valid option and value."; else h = "Only broadcaster and mods can use this command."; break; case "uset": c || e || isAdmin || d ? (a["X-Spam"] = !0, f && l) ? (n = !1, -1 != ["color", "bgcolor", "tag", "icon", "all"].indexOf(f) ? ("color" == f && (f = "fgColor"), "bgcolor" == f && (f = "bgColor"), k[l] ? "all" == f ? (k[l].fgColor = "", k[l].bgColor = "", k[l].icon = "", k[l].tag = "", h = "All custom features of user " + l + " have been removed.", A = l, T = b + " has removed all your custom features.") : (k[l][f] = "", f = (f = f.replace("fgColor", "text color")).replace("bgColor", "background color"), h = "Custom " + f + " of user " + l + " has been removed.", b != l && (A = l, T = b + " has removed your custom " + f + ".")) : h = "all" == f ? "User " + l + " doesn't seem to have a custom " + f + " to remove." : (f = (f = f.replace("fgColor", "text color")).replace("bgColor", "background color"), "User " + l + " doesn't seem to have any feature to remove.")) : h = "Sorry, I can't remove '" + f + "'. It's not a valid custom feature.") : h = "You need to pass a valid feature and username (e.g. " + z + v + " tag New Tag)." : h = "Only broadcaster and mods can use this command."; break; case "notice": case "inotice": e || c ? (a["X-Spam"] = !0, f) ? (n = I.split(" ").slice(1).join(" "), "inotice" == v && (Z = q("room_info") + " " + n + " " + q("room_info")), "notice" == v && (S = n, G = "bold")) : h = "You need to pass a valid message (e.g. " + z + v + " hello guys)." : h = "Only the broadcaster can use this command."; break; case "secret": if (ia) if (e || c || d && hb) switch (a["X-Spam"] = !0, f) { case "add": case "remove": case "check": if (l) switch (f) { case "add": cb.limitCam_userHasAccess(l) ? h = "User " + l + " is already in the viewers list." : (cb.limitCam_addUsers(l), Z = q("room_info") + " " + l + " has been added to the Secret Show! " + q("room_info")); break; case "remove": cb.limitCam_userHasAccess(l) ? (cb.limitCam_removeUsers(l), S = l + " has been removed from the Secret Show") : h = "User " + l + " is not in the viewers list."; break; case "check": h = cb.limitCam_userHasAccess(l) ? "User " + l + " is in the viewers list." : "User " + l + " is not in the viewers list." } else h = "You need to pass a valid parameter (e.g. " + z + v + " " + f + " username)."; break; case "list": h = cb.limitCam_allUsersWithAccess(), h = 0 < h.length ? "" + h.length + (1 < h.length ? " users" : " user") + " in Secret Show: " + cbjs.arrayJoin(h, ", ") : "There are no users added to the Secret Show." } else h = "Only the broadcaster can use this command."; break; case "filters": case "greys": ba && (c || e || isAdmin ? (a["X-Spam"] = !0, "on" == f || "off" == f ? "greys" == v ? (Pa = "on" == f, Z = q("room_info") + " " + b + " has " + _0x7527(Pa ? "0x197" : "0x198") + " the chat for grey users " + q("room_info")) : "filters" == v && (kb = "on" == f, Z = q("room_info") + " " + b + " has " + _0x7527(kb ? "0x197" : "0x198") + " the chat filters " + q("room_info")) : h = "You need to pass a valid value (e.g. " + z + v + " on).") : h = "Only the broadcaster can use this command."); break; case "silence": case "usilence": if (ba) if (e || c || d && fb) if (a["X-Spam"] = !0, f || "usilence" == v) if ("silence" == v) f != R && f != ra ? (pa = wa(f)) ? h = "User " + f + " is already silenced in the room." : l ? qa(l) ? 1 <= l && 15 >= l ? (x.push({ name: f, time: l, startTime: new Date }), ha || (ha = cb.setTimeout(tb, 3E4)), S = "User " + f + " has been invited to stay quiet for " + l + " " + _0x7527(1 < l ? "0x19f" : "0x1a0") + ".") : h = "The duration of the silence must be between 1 and 15 minutes." : h = "You need to pass an integer value (e.g. " + z + "silence user 5)." : (x.push({ name: f, time: 0, startTime: 0 }), S = "User " + f + " has been invited to stay quiet from now on.") : h = "Trying to silence that person doesn't seem a brilliant idea."; else if (f)(pa = wa(f)) ? (cbjs.arrayRemove(x, pa), S = "User " + f + " has been granted permission to chat again!", pa.time && sb()) : h = "User " + f + " wasn't silenced in the room."; else if (x.length) { var pa = wa(x[x.length - 1].name); cbjs.arrayRemove(x, pa); S = "User " + pa.name + " has been granted permission to chat again!"; pa.time && sb() } else h = "There are no users silenced in the room."; else h = "You need to pass a valid username (e.g. " + z + v + " spammer33)."; else h = "Only broadcaster and mods can use this command."; break; default: C = a["X-Spam"] = !0 } } if (ba && kb && !e && !c && !d) { var U = []; n = []; for (i = 0; i < r.length; i++) if ((1 == r[i].level || 2 == r[i].level && t) && -1 != a.m.search(r[i].regexp)) switch (r[i].reason) { case "Sticky keys": a.m = a.m.replace(/(.)\1{3,}/g, "$1$1$1"); U.push(r[i].reason); break; case "All caps": 1 == a.m.split(" ").length && 0 == a.m.indexOf(":") || a.m == a.m.toUpperCase() && a.m.toUpperCase() != a.m.toLowerCase() && (a.m = a.m.replace(/\b[A-Z]{2,}\b/g, function(a) { return a.toLowerCase() }), U.push(r[i].reason)); break; case "Baby words": for (; - 1 != a.m.search(r[i].regexp);) a.m = a.m.replace(r[i].regexp, ""); U.push(r[i].reason); break; case "Graphics": var ca = U.length; a.m = a.m.replace(/:([a-zA-Z0-9]{2,})\b/g, function(a, b) { return Jb && Pb.includes(b) ? ":" + b : (ca == U.length && U.push(r[i].reason), "[emote: " + b + "]") }); break; case "Spam": case "Demands": case "Rudeness": case "Ilegal words": cbjs.arrayContains(n, r[i].reason) || n.push(r[i].reason) } if (U.length) { N = "#636363"; h = "Your message was fixed because it contained "; for (i = 0; i < U.length; i++) 0 < i && (i == U.length - 1 ? h += " and " : h += ", "), h += U[i].toLowerCase(); h += "." } if (n.length) { u = !0; a["X-Spam"] = !0; a.background = "#f1f1f1"; a.m = "Message blocked \u25aa Reason: "; for (i = 0; i < n.length; i++) 0 < i ? (i == n.length - 1 ? a.m += " and " : a.m += ", ", a.m += n[i].toLowerCase()) : a.m += n[i]; Ib && t && (ua[b] || (ua[b] = 0), ua[b]++, h = ua[b] > gb ? (ua[b] = 0, x.push({ name: b, timer: 0 }), S = "User " + b + " has been invited to stay quiet from now on.", "") : (N = "#ff0000", h && (h += "\n"), "Persistent rudeness/demands/spamming will get you silenced (" + ua[b] + "/" + (parseInt(gb) + 1) + ").")) } } if (!u && !H) { var n = u = t = e = d = ""; B = H = ""; Fb && (g = function(a) { if (0 < p.length) for (var b = 0; b < p.length; b++) if (p[b].name == a) return p[b]; return 0 }(b)) && 0 < g.tokens && (e = "|" + g.tokens + "|"); if ((D || c && Xa) && k[b] && (k[b].fgColor && (H = k[b].fgColor), k[b].bgColor && (B = k[b].bgColor), k[b].tag && (n = k[b].tag), k[b].icon && (u = k[b].icon)), da && Lb) g = function(a) { if (0 < p.length) for (var b = 0; b < Math.min(p.length, 3); b++) if (p[b].name == a) return b + 1; return 0 }(a.user), 0 < g && (t = "" + ib + g); if (!y || !C && m ? (H && (a.c = H), B && (a.background = B)) : (a.c = "#000000", a.background = "#F1F1F1"), !C) { if (!u && Gb) switch (a.gender) { case "m": d += " :avatar_gen_male"; break; case "f": d += " :avatar_gen_female"; break; case "s": d += " :avatar_gen_trans"; break; case "c": d += " :avatar_gen_couple" } u && (d += " " + u); t && (d += " " + t); n && (d += " " + n); e && (d += " " + e); u && (d += " ::"); c && Hb && (0 == a.m.indexOf("--------") || 0 == a.m.indexOf("********My")) || (a.m = d + " " + a.m) } } return Z && X(500, Z, "", ea, fa, "bolder"), S && X(500, S, "", V, K, G), h && X(500, h, b, "", N, G), T && cb.sendNotice(T, A, P, L, G, E), F && cb.sendNotice(F, R, P, L, G), a }); cb.onTip(function(a) { lb(a) }); cb.onEnter(function(a) { var b = a.user, c = a.is_mod, d = a.in_fanclub, e = b == cb.room_slug, g = a.has_tokens; a = (a.tipped_recently, ""); (g || c || e || d) && Db && ((a = Eb.replace("[user]", b)) && (a += "\n"), a += _0x7527(M ? "0x1cf" : "0x1d0"), ka && (a += "\nSecret Show is running [ " + va(ka) + " ]. Tip " + Q + "tks to unblock the cam!")); a && cb.sendNotice(a, b, V, K, "bold") }); Date.prototype.getStringDate = function() { var a = this.getMonth() + 1, b = this.getDate(); return [(9 < b ? "" : "0") + b, "/", (9 < a ? "" : "0") + a, "/", this.getFullYear()].join("") }; (function() { var a; N = [{ name: "Dream Bot", headerfg: "#ece4e4", headerbg: "#000000", text: "#dc143c", background: "#f6f4f4", textweight: "normal", tipmenu: "#000000", notifierfg: "#dc143c", notifierbg: "#f6f4f4", themeIcons: {}, sepChar: ":pixelheart" }, { name: "Gold Elegance", headerfg: "#e8eaec", headerbg: "#000000", text: "#939227", background: "#fffbe6", textweight: "normal", tipmenu: "#000000", notifierfg: "#939227", notifierbg: "#fffbe6", themeIcons: { bot_left: ":dbmoongold", bot_right: ":dbmoongold", menu_left: ":awstargold", menu_right: ":awstargold", room_info: ":awstargold" }, sepChar: ":bluebow" }, { name: "Metal Blue", headerfg: "#e8eaec", headerbg: "#364785", text: "#364785", background: "#f4f4f4", textweight: "normal", tipmenu: "#708090", notifierfg: "#364785", notifierbg: "#f4f4f4", themeIcons: {}, sepChar: ":bluebow" }, { name: "Pinky Purple", headerfg: "#ffe6f8", headerbg: "#800080", text: "#FF00BA", background: "#ffedfa", textweight: "normal", tipmenu: "#800080", notifierfg: "#FF00BA", notifierbg: "#ffedfa", themeIcons: {}, sepChar: ":pixelglitter" } ]; F = [{ name: "Amaranth", code: "#c92572", bgcode: "#f9eaf1" }, { name: "Black", code: "#000000", bgcode: "#e8e8e8" }, { name: "Blue", code: "#016ea6", bgcode: "#e3eff6" }, { name: "LightBlue", code: "#4682b4", bgcode: "#e5f0f9" }, { name: "SteelBlue", code: "#4159b5", bgcode: "#e7ebfb" }, { name: "DarkBlue", code: "#364785", bgcode: "#e4e9f9" }, { name: "DarkBrown", code: "#571010", bgcode: "#ede0e4" }, { name: "BrownRed", code: "#b31313", bgcode: "#fbe9e9" }, { name: "DarkViolet", code: "#8600b3", bgcode: "#efdff4" }, { name: "SeanceViolet", code: "#ba21bf", bgcode: "#ffdffe" }, { name: "Green", code: "#327939", bgcode: "#e1f9e3" }, { name: "DarkGreen", code: "#436446", bgcode: "#d0e8d3" }, { name: "Pink", code: "#FF00BA", bgcode: "#ffe6f8" }, { name: "Purple", code: "#800080", bgcode: "#f1e4f1" }, { name: "Red", code: "#ff3232", bgcode: "#ffe5e5" }, { name: "SlateGray", code: "#708090", bgcode: "#eaeff3" }, { name: "Turquoise", code: "#1ba0a2", bgcode: "#e2f6f6" }]; 11 == (a = new Date).getMonth() && 23 < a.getDate() && 26 > a.getDate() && (u.lovers_left = ":mtlsanta2", u.lovers_right = ":mtlsanta"); 9 == a.getMonth() && 29 < a.getDate() && (u.lovers_left = ":mtlpumpkin16", u.lovers_right = ":mtlpumpkin16"); cb.settings_choices.push({ name: "bot_theme", type: "choice", label: "Bot color theme", defaultValue: m.botTheme }); cb.settings_choices.push({ name: "welcome_flag", type: "choice", choice1: "Yes", choice2: "No (Skip next setting)", defaultValue: "Yes", label: "Show welcome message to users joining the room" }); cb.settings_choices.push({ name: "welcome_text", type: "str", minLength: 0, maxLength: 240, required: !1, defaultValue: "Welcome [user] to my room! :mwink", label: "Welcome message (type [user] for username)" }); cb.settings_choices.push({ name: "total_tipped", type: "choice", choice1: "Yes", choice2: "No", defaultValue: m.totalTipped, label: "Display total tipped before every message" }); cb.settings_choices.push({ name: "gender_icons", type: "choice", choice1: "Yes", choice2: "No", defaultValue: m.genderIcon, label: "Display gender icon" }); for (var b = 0; b < Fa.length; b++) switch (Fa[b]) { case "modelFeatures": cb.settings_choices.push({ name: "model_features_flag", type: "choice", choice1: "Yes", choice2: "No (Skip to next section)", defaultValue: m.modelFeatures, label: "........................................ ( x ) [ Enable Model Tags & Colors ]" }); cb.settings_choices.push({ name: "model_text_color", type: "choice", defaultValue: m.ownerColor, label: "Your text color" }); cb.settings_choices.push({ name: "model_highlight", type: "choice", defaultValue: m.ownerHighlight, label: "Your highlight color" }); cb.settings_choices.push({ name: "model_tittle", type: "str", minLength: 0, maxLength: 12, required: !1, defaultValue: m.ownerTag, label: "Your default tag (e.g. Queen)" }); cb.settings_choices.push({ name: "model_icon", type: "str", minLength: 0, maxLength: 30, required: !1, defaultValue: m.ownerIcon, label: "Your icon/avatar (default is " + m.ownerIcon + ")" }); cb.settings_choices.push({ name: "model_hide_lush", type: "choice", choice1: "Yes", choice2: "No", defaultValue: m.modelFeatures, label: "Hide icon & tag in Lovense App messages" }); break; case "chatFeatures": cb.settings_choices.push({ name: "room_colors_flag", type: "choice", choice1: "Yes", choice2: "No (Skip to next section)", defaultValue: m.chatFeatures, label: ".......................................... ( x ) [ Enable Users Tags & Colors ]" }); cb.settings_choices.push({ name: "colors_levels", type: "choice", defaultValue: "Mods and Fan Club", label: "Who can set their custom text & BG color?" }); cb.settings_choices.push({ name: "tags_levels", type: "choice", defaultValue: "Mods and Fan Club", label: "Who can set their custom tag?" }); cb.settings_choices.push({ name: "icons_levels", type: "choice", defaultValue: "Mods and Fan Club", label: "Who can set their custom icon/avatar?" }); break; case "tipMessages": cb.settings_choices.push({ name: "thanks_flag", type: "choice", choice1: "Yes", choice2: "No (Skip to next section)", defaultValue: m.tipMessages, label: "..................................................... ( x ) [ Enable Thanks Messages ]" }); cb.settings_choices.push({ name: "thanks_text", type: "str", minLength: 0, maxLength: 64, required: !1, defaultValue: "Thank you [user] for your tip! :dbthanks35", label: "Thanks message to show when someone tips" }); cb.settings_choices.push({ name: "thanks_target", type: "choice", choice1: "Everyone", choice2: "The tipper only", defaultValue: m.tipMessages, label: "Who can see the thanks message?" }); cb.settings_choices.push({ name: "thanks_min", type: "int", minValue: 1, maxValue: 1E3, defaultValue: 15, label: "Minimum tipped to display message" }); cb.settings_choices.push({ name: "thanks_color", type: "choice", label: "Color scheme", defaultValue: "Yellow & Black" }); break; case "whispers": cb.settings_choices.push({ name: "whispers_flag", type: "choice", choice1: "Yes", choice2: "No (Skip to next section)", defaultValue: m.whispers, label: "............................................................... ( x ) [ Enable Whispers ]" }); cb.settings_choices.push({ name: "whispers_users_levels", type: "choice", defaultValue: "Mods and Fan Club", label: "Who can use whispers?" }); cb.settings_choices.push({ name: "whispers_mods_levels", type: "choice", defaultValue: "Moderators only", label: "Who can send whispers to all mods?" }); cb.settings_choices.push({ name: "whispers_model_levels", type: "choice", defaultValue: "Mods and Fan Club", label: "Who can send whispers to the broadcaster?" }); break; case "roomControl": cb.settings_choices.push({ name: "control_flag", type: "choice", choice1: "Yes", choice2: "No (Skip to next section)", defaultValue: m.roomControl, label: ".................................................... ( x ) [ Enable Room Control ]" }); cb.settings_choices.push({ name: "control_mods", type: "choice", choice1: "Yes", choice2: "No", defaultValue: "Yes", label: "Allow mods to use commands (e.g. /silence)" }); cb.settings_choices.push({ name: "control_spam", type: "choice", choice1: "Yes", choice2: "No", defaultValue: "Yes", label: "Remove known SPAM messages" }); cb.settings_choices.push({ name: "control_greys", type: "choice", choice1: "Yes", choice2: "No", defaultValue: m.roomGreys, label: "Allow grey users to chat" }); cb.settings_choices.push({ name: "control_grey_graphics", type: "choice", choice1: "All graphics", choice2: "Standard emotes only", choice3: "No graphics", defaultValue: "Standard emotes only", label: "Graphics allowed for grey users" }); cb.settings_choices.push({ name: "control_sticky", type: "choice", choice1: "Everyone", choice2: "Greys only", choice3: "No", defaultValue: "Greys only", label: "Correct sticky keys (e.g. hellooooo)" }); cb.settings_choices.push({ name: "control_caps", type: "choice", choice1: "Everyone", choice2: "Greys only", choice3: "No", defaultValue: "Everyone", label: "Convert ALL CAPS to lowercase" }); cb.settings_choices.push({ name: "control_baby", type: "choice", choice1: "Everyone", choice2: "Greys only", choice3: "No", defaultValue: "Greys only", label: "Remove baby words (e.g. bb, baby)" }); cb.settings_choices.push({ name: "control_rudeness", type: "choice", choice1: "Greys only", choice2: "No", defaultValue: "Greys only", label: "Block messages containing rudeness (e.g. bitch, slut)" }); cb.settings_choices.push({ name: "control_demands", type: "choice", choice1: "Greys only", choice2: "No", defaultValue: "Greys only", label: "Block messages containing demands" }); cb.settings_choices.push({ name: "control_words_flag", type: "choice", choice1: "Everyone", choice2: "Greys only", choice3: "No (Skip next setting)", defaultValue: "Greys only", label: "Block messages with custom ilegal words (type below)" }); cb.settings_choices.push({ name: "control_words", type: "str", minLength: 0, maxLength: 1024, required: !1, defaultValue: "", label: "Custom ilegal words/expressions, separated by commas" }); cb.settings_choices.push({ name: "control_silence", type: "choice", choice1: "Greys only", choice2: "No (Skip next setting) ", defaultValue: "Greys only", label: "Silence rude/demanding users permanently" }); cb.settings_choices.push({ name: "control_maxwarns", type: "choice", choice1: 0, choice2: 1, choice3: 2, choice4: 3, choice5: 4, defaultValue: 2, label: "Warnings before silencing them?" }); break; case "topLovers": cb.settings_choices.push({ name: "show_lb", type: "choice", choice1: "Yes", choice2: "No (Skip to next section)", defaultValue: m.topLovers, label: "................................... ( x ) [ Enable Top Lovers Leaderboard ]" }); cb.settings_choices.push({ name: "hearts_lb", type: "choice", choice1: "Yes", choice2: "No (Skip next setting)", defaultValue: "Yes", label: "Display hearts before Top Lover's messages" }); cb.settings_choices.push({ name: "icons_lb", type: "choice", label: "Hearts color", choice1: "Fuchsia", choice2: "Pink", choice3: "Purple", choice4: "Red", defaultValue: m.loversIcon }); cb.settings_choices.push({ name: "announce_lb", type: "choice", choice1: "Yes", choice2: "No", defaultValue: "Yes", label: "Announce new Top Lover" }); cb.settings_choices.push({ name: "timer_lb", type: "choice", choice1: 1, choice2: 2, choice3: 3, choice4: 4, choice5: 5, choice6: 6, choice7: 8, choice8: 10, choice9: 12, choice10: 15, choice11: 30, defaultValue: m.loversTimer, label: "Top Lovers Display frequency (mins)" }); break; case "secretShow": cb.settings_choices.push({ name: "secret_flag", type: "choice", choice1: "Yes", choice2: "No (Skip to next section)", defaultValue: m.secretShow, label: "....................................................... ( x ) [ Enable Secret Show ]" }); cb.settings_choices.push({ name: "secret_mods_viewers", type: "choice", choice1: "Yes", choice2: "No", defaultValue: m.secretModsViewers, label: "Allow mods to add/remove viewers" }); cb.settings_choices.push({ name: "secret_price", type: "int", minValue: 1, maxValue: 999, defaultValue: m.secretPrice, label: "Default price" }); cb.settings_choices.push({ name: "secret_min", type: "int", minValue: 0, maxValue: 999, defaultValue: m.secretMinTip, label: "Minimum tipped to have access to all shows (0=disabled)" }); cb.settings_choices.push({ name: "secret_timer", type: "choice", choice1: 1, choice2: 2, choice3: 3, choice4: 4, choice5: 5, choice6: 6, choice7: 8, choice8: 10, choice9: 12, choice10: 15, choice11: 30, defaultValue: 3, label: "Announcement frequency (mins)" }); cb.settings_choices.push({ name: "secret_autoclean", type: "choice", choice1: "Yes", choice2: "No", defaultValue: "Yes", label: "Clear the viewers list when the show is over" }); break; case "notifiers": cb.settings_choices.push({ name: "show_ad", type: "choice", choice1: "Yes", choice2: "No (Skip to next section)", defaultValue: m.notifiers, label: "............................................. ( x ) [ Enable Rotating Notifiers ]" }); for (a = 0; 8 > a; a++) cb.settings_choices.push({ name: "text_ad" + (a + 1), type: "str", minLength: 0, maxLength: 512, required: !1, label: "Notifier #" + (a + 1) }); cb.settings_choices.push({ name: "color_ad", type: "choice", label: "Color scheme", defaultValue: m.notifiersColor }); cb.settings_choices.push({ name: "bgcolor_ad", type: "choice", choice1: "Yes", choice2: "No", defaultValue: m.notifiersBg, label: "Colored background?" }); cb.settings_choices.push({ name: "timer_ad", type: "choice", choice1: 1, choice2: 2, choice3: 3, choice4: 4, choice5: 5, choice6: 6, choice7: 8, choice8: 10, choice9: 12, choice10: 15, choice11: 30, defaultValue: m.notifiersTimer, label: "Display frequency (mins)" }); break; case "tipMenu": for (cb.settings_choices.push({ name: "show_tm", type: "choice", choice1: "Yes", choice2: "No (Skip to next section)", defaultValue: m.tipMenu, label: "............................................................ ( x ) [ Enable Tip Menu ]" }), cb.settings_choices.push({ name: "single_tm", type: "choice", choice1: "Yes", choice2: "No (Skip next setting)", defaultValue: m.tipMenuSingle, label: "Announce it periodically" }), cb.settings_choices.push({ name: "sepchar", type: "choice", defaultValue: m.tipMenuSep, label: "Separator character" }), cb.settings_choices.push({ name: "color_tm", type: "choice", label: "Color scheme", defaultValue: m.tipMenuColor }), cb.settings_choices.push({ name: "tipmenu_sort", type: "choice", choice1: "Do not sort", choice2: "Ascending", choice3: "Descending", defaultValue: "Ascending", label: "Sort menu items by price" }), cb.settings_choices.push({ name: "timer_tm", type: "choice", choice1: 1, choice2: 2, choice3: 3, choice4: 4, choice5: 5, choice6: 6, choice7: 8, choice8: 10, choice9: 12, choice10: 15, choice11: 30, defaultValue: m.tipMenuTimer, label: "Display frequency (mins)" }), a = 0; 20 > a; a++) { var c = "Item #" + (a + 1); 0 == a && (c += " (e.g. 50--Boobs)"); cb.settings_choices.push({ name: "custom_menu_item" + (a + 1), type: "str", minLength: 0, maxLength: 128, required: !1, defaultValue: "", label: c }) } } b = ""; c = 1; for (a = 0; a < cb.settings_choices.length; a++) if (b = cb.settings_choices[a].label, field = cb.settings_choices[a].name, 0 < b.indexOf("( x )")) b = b.replace("( x )", "( " + c + " )"), c++, 0 > (cb.settings_choices[a].label = b).indexOf("Tip Menu") ? cb.settings_choices[a].choice2 = "No (Skip to section " + c + ")" : cb.settings_choices[a].choice2 = "No (Skip this section)", b = "No (Skip to next section)"; else if ("bot_theme" == field) { for (var d = 0, e = 0; e < xa.length; e++) d++, cb.settings_choices[a]["choice" + d] = xa[e].name; for (e = 0; e < N.length; e++) d++, cb.settings_choices[a]["choice" + d] = N[e].name } else if ("thanks_color" == field) for (d = 0, cb.settings_choices[a].choice1 = "Theme colors", d++, e = 0; e < Ca.length; e++) cb.settings_choices[a]["choice" + (d + 1)] = Ca[e].name, d++; else if ("Color scheme" == b || "Bot color scheme" == b) { d = 0; cb.settings_choices[a].choice1 = "Theme colors"; d++; for (e = 0; e < E.length; e++) cb.settings_choices[a]["choice" + (e + 1 + d)] = E[e].name, d++; for (e = 0; e < F.length; e++) cb.settings_choices[a]["choice" + (e + 1 + d)] = F[e].name } else if ("model_text_color" == field || -1 != field.indexOf("crew_color_")) for (e = d = 0; e < Aa.length; e++) cb.settings_choices[a]["choice" + (e + 1 + d)] = Aa[e].name; else if ("model_highlight" == field || "crew_highlight" == field) for (e = d = 0; e < Ba.length; e++) cb.settings_choices[a]["choice" + (e + 1 + d)] = Ba[e].name; else if (-1 != field.indexOf("_level")) for (e = d = 0; e < O.length; e++) cb.settings_choices[a]["choice" + (e + 1 + d)] = O[e]; else if ("sepchar" == field) for (var g in d = 0, d++, cb.settings_choices[a]["choice" + d] = "Theme separator", C) d++, cb.settings_choices[a]["choice" + d] = g; Ob(); M && cb.setTimeout(Bb, 2E4); Ga && cb.setTimeout(Ab, 4E4 * Ma); da && cb.setTimeout(zb, 7E4 * Ja); d = q("bot_left") + " " + L + " v3.8 " + q("bot_right"); g = "Built by noiett (Jan 2, 2019)\nType /help to see all user commands.\nType " + (H ? "/modhelp and " : "") + "/modelhelp for more commands."; X(500, d, "", ea, fa, "bold"); X(700, g, "", "", K, "bold"); Wa = new Date })() }()
© Copyright Chaturbate 2011- 2026. All Rights Reserved.