Bots Home
|
Create an App
Rotating Notifier Reborn
Author:
dehaan__
Description
Source Code
Launch Bot
Current Users
Created by:
Dehaan__
/* -------------------------------------------------------------------- * Site name: "Rotating Notifier Resurrected" * Working title / actual name: "Rotating Notifier Reborn" * Author: Mr. De Haan * ------------------------------------------------------------------- * Version: 0.90 developer preview * Built on: 30 September 2015 * ------------------------------------------------------------------- * Additional notes: * - None * --------------------------------------------------------------------*/ // For testing on chrome / node "use strict"; var _temporalUndefined = {}; var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; // ES6 part var App = _temporalUndefined; var RotNotifier = _temporalUndefined; // Main variables var Rotator = _temporalUndefined; var MsgHandler = _temporalUndefined; var UserHandler = _temporalUndefined; function _temporalAssertDefined(val, name, undef) { if (val === undef) { throw new ReferenceError(name + " is not defined - temporal dead zone"); } return true; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } if (cb == null) var cb = { changeRoomSubject: function changeRoomSubject(new_subject) {}, drawPanel: function drawPanel() {}, log: function log(message) { console.log(message); }, onDrawPanel: function onDrawPanel(func) {}, onEnter: function onEnter(func) {}, onLeave: function onLeave(func) {}, onMessage: function onMessage(func) {}, onShowStatus: function onShowStatus(func) {}, onTip: function onTip(func) {}, room_slug: "", sendNotice: function sendNotice(message, to_user, background, foreground, weight, to_group) { console.log(message); }, setTimeout: function setTimeout(func, msec) {}, settings_choices: [], settings: {}, tipOptions: function tipOptions(func) {}, limitCam_start: function limitCam_start(message, allowed_users) {}, limitCam_stop: function limitCam_stop() {}, limitCam_addUsers: function limitCam_addUsers(allowed_users) {}, limitCam_removeUsers: function limitCam_removeUsers(removed_users) {}, limitCam_removeAllUsers: function limitCam_removeAllUsers() {}, limitCam_userHasAccess: function limitCam_userHasAccess(user) {}, limitCam_allUsersWithAccess: function limitCam_allUsersWithAccess() {}, limitCam_isRunning: function limitCam_isRunning() {} }; // Additional String.proto functions String.prototype.capitalize = function () { return this.charAt(0).toUpperCase() + this.slice(1); }; if (!String.prototype.repeat) { String.prototype.repeat = function (number) { return new Array(number + 1).join(this); }; } App = function App(name, version, type) { _classCallCheck(this, _temporalAssertDefined(App, "App", _temporalUndefined) && App); this.name = name; this.version = version; this.type = type; var that = this; this.setChoices = new function () { cb.settings_choices = [{ name: "header", label: "Settings for " + String(that.name), type: "choice", choice1: "", choice2: "", required: false }, { name: "message1", label: "Message 1", type: "str", required: false }, { name: "message2", label: "Message 2", type: "str", required: false }, { name: "message3", label: "Message 3", type: "str", required: false }, { name: "message4", label: "Message 4", type: "str", required: false }, { name: "message5", label: "Message 5", type: "str", required: false }, { name: "message6", label: "Message 6", type: "str", required: false }, { name: "message7", label: "Message 7", type: "str", required: false }, { name: "message8", label: "Message 8", type: "str", required: false }, { name: "message9", label: "Message 9", type: "str", required: false }, { name: "message10", label: "Message 10", type: "str", required: false }, { name: "first_message_on_entry", type: "choice", choice1: "Yes", choice2: "No", defaultValue: "Yes", label: "Display Message 1 privately on entry? (Disable this function for busy rooms, in order to avoid bot crashes.)" }, { name: "message_color", type: "str", label: "Message color for rotating notices (default: dark red, HTML color code #9f000f).", defaultValue: "#9f000f" }, { name: "message_hl", type: "str", label: "Message background color for rotating notices (default: salmon-ish pink, HTML color code #ffcccc).", defaultValue: "#ffcccc" }, { name: "message_delay", type: "str", label: "Delay (in minutes) between notices being displayed. Seconds are also accepted - e.g. \"0.5\" for 30 seconds.", defaultValue: "2" }]; }(); this.callHandlers = (function () { cb.onEnter(function (user) { (_temporalAssertDefined(UserHandler, "UserHandler", _temporalUndefined) && UserHandler).onEnter(user); }); cb.onMessage(function (msg) { (_temporalAssertDefined(MsgHandler, "MsgHandler", _temporalUndefined) && MsgHandler).onMessage(msg); }); })(); }; RotNotifier = (function (_App) { _inherits(_temporalAssertDefined(RotNotifier, "RotNotifier", _temporalUndefined) && RotNotifier, _App); // ---------------------------------------------------- // Constructor - properties // ---------------------------------------------------- function RotNotifier() { _classCallCheck(this, _temporalAssertDefined(RotNotifier, "RotNotifier", _temporalUndefined) && RotNotifier); _get(Object.getPrototypeOf((_temporalAssertDefined(RotNotifier, "RotNotifier", _temporalUndefined) && RotNotifier).prototype), "constructor", this).call(this, '"Rotating Notifier Reborn"', "0.90", "bot"); this.VersionType = "dev_preview"; this.VersionExtraInfo = "DP1 (Developer Preview 1)"; this.Revision = null; this.BuildDate = "30 September 2015"; this.DashLine = "—".repeat(28); this.DashLineSmall = "-".repeat(50); this.BoxLine = "\u254c".repeat(28); // Colors this.Color = { dark_green: "#002a15", med_green: "#0ad80a", lite_green: "#a2ffa2", dark_red: "#4a0000", med_red: "#d80a00", lite_red: "#ff0a11", dark_blue: "#001a70", med_blue: "#000adc", lite_blue: "#1144ff", holo_blue: "#33b5e5", mtrl_teal: "#009688", mtrl_bluegray_500: "#607d8b", mtrl_bluegray_700: "#364248", mtrl_bluegray_800: "#263238", pink_lace: "#ffddf4", white: "#fff", black: "#000", // misc syntax: "#995b00", notice_grn: "#284", notice_prp: "#330066", notice_red: "#e84a10", hilite: "#eee5ff", hvtext: "#d80a00", hvback: "#ffffbf", info: "#144d8c", error: "#b94a48" }; } // ---------------------------------------------------- // Methods // ---------------------------------------------------- _createClass(_temporalAssertDefined(RotNotifier, "RotNotifier", _temporalUndefined) && RotNotifier, [{ key: "main", value: function main() { cb.sendNotice(boxline + "\n\u25ba " + this.name + " has started.", "", "", color.mtrl_bluegray_700, "bold"); if (this.VersionType == "alpha" || this.VersionType == "beta" || this.VersionType == "dev_preview") cb.sendNotice("\u25ba Version: " + this.version + "-" + this.VersionExtraInfo, "", "", color.mtrl_bluegray_700, "bold");else if (this.Revision != null) cb.sendNotice("\u25ba Version: " + this.version + " (Revision " + this.Revision + ")", "", "", color.mtrl_bluegray_700, "bold");else if (this.VersionExtraInfo != null) cb.sendNotice("\u25ba Version: " + this.version + "-" + this.VersionExtraInfo, "", "", color.mtrl_bluegray_700, "bold");else cb.sendNotice("\u25ba Version: " + this.version, "", "", color.mtrl_bluegray_700, "bold"); cb.sendNotice("\u25ba Build date: " + this.BuildDate + "\n" + dashline2 + "\n" + "\u25ba Written by Mr. De Haan \xA9 2015\n" + boxline, "", "", color.mtrl_bluegray_700, "bold"); cb.sendNotice("\u25ba Type /rnhelp for a list of available commands.", "", "", color.mtrl_bluegray_700, "bold"); // Color code checks if (cb.settings.message_color != null && cb.settings.message_color != "" || cb.settings.message_hl != null && cb.settings.message_hl != "") { if (cb.settings.message_color != "#9f000f" || cb.settings.message_hl != "#ffcccc") { cb.sendNotice("\u25ba Non-default color codes detected. Checking if they are valid...", cb.room_slug, "", color.mtrl_bluegray_700, "bold"); // Text color if (this.isValidColorCode(cb.settings.message_color) == true) { cb.sendNotice("\u25ba Message color: Valid.", cb.room_slug, "", "#091", "bold"); if (cb.settings.message_color.charAt(0) == "#") msgColor = cb.settings.message_color;else msgColor = "#" + cb.settings.message_color; } else { cb.sendNotice("\u25ba Message color: Invalid. Reverting to default.", cb.room_slug, "", "#b45", "bold"); msgColor = "#9f000f"; invalidCodeDetected = true; } // Highlight color if (this.isValidColorCode(cb.settings.message_hl) == true) { cb.sendNotice("\u25ba Message highlight: Valid.", cb.room_slug, "", "#091", "bold"); if (cb.settings.message_hl.charAt(0) == "#") msgHilite = cb.settings.message_hl;else msgHilite = "#" + cb.settings.message_hl; } else { cb.sendNotice("\u25ba Message highlight: Invalid. Reverting to default.", cb.room_slug, "", "#b45", "bold"); msgColor = "#fcc"; invalidCodeDetected = true; } // Invalid code warning if (invalidCodeDetected == true) { cb.sendNotice("\u25ba One or more invalid color codes have been used. Valid color codes must have between 3 or 6 characters (excluding the hash; 4 or 7 chars if including it) " + "and contain only hexadecimal numbers from 0 to F.\n" + "\u25ba Use http://www.color-hex.com/ to find the code for the color you want. Don't include the starting hash (#).", cb.room_slug, "", "#b45", "bold"); } } } // Timeout check if (Number.parseFloat(cb.settings.message_delay)) { if (cb.settings.message_delay < 1) { msgDelay = cb.settings.message_delay; cb.sendNotice("\u25ba Message delay set to " + 60 * msgDelay + " seconds.", cb.room_slug, "", color.mtrl_bluegray_700, "bold"); } else { msgDelay = cb.settings.message_delay; cb.sendNotice("\u25ba Message delay set to " + msgDelay + (msgDelay > 1 == true ? " minutes." : " minute."), cb.room_slug, "", color.mtrl_bluegray_700, "bold"); } } } }, { key: "isValidColorCode", value: function isValidColorCode(code) { var validChars = /[A-F0-9]+$/i; /* About the RegExp below: All characters till the last char in the unicode range will be invalid */ var invalidChars = /[\u0021\u0022\u0024-\u002f\u003a-\u0040G-Z\u005b-\u005e\u007b-\uffff]+$/i; if (code != null) { if (code.length == 3 || code.length == 6) { if (validChars.exec(code) && !invalidChars.exec(code)) { return true; } else if (invalidChars.exec(code)) { return false; } } else if (code.charAt(0) == "#" && (code.length == 4 || code.length == 7)) { if (validChars.exec(code) && !invalidChars.exec(code)) { return true; } else if (invalidChars.exec(code)) { return false; } } else { return false; } } return null; } }]); return _temporalAssertDefined(RotNotifier, "RotNotifier", _temporalUndefined) && RotNotifier; })(_temporalAssertDefined(App, "App", _temporalUndefined) && App); var RotNot = new (_temporalAssertDefined(RotNotifier, "RotNotifier", _temporalUndefined) && RotNotifier)(); var dashline = RotNot.DashLine; var dashline2 = RotNot.DashLineSmall; var boxline = RotNot.BoxLine; var color = RotNot.Color; var command = RotNot.Command; var devcmd = RotNot.DevCommand; var flag = RotNot.Flag; var invalidCodeDetected = false; // Message variables var Msgs = { m1: cb.settings.message1, m2: cb.settings.message2, m3: cb.settings.message3, m4: cb.settings.message4, m5: cb.settings.message5, m6: cb.settings.message6, m7: cb.settings.message7, m8: cb.settings.message8, m9: cb.settings.message9, m10: cb.settings.message10 }; var msgColor, msgDelay, msgHilite; var a = 1; Rotator = (function () { function Rotator() { _classCallCheck(this, _temporalAssertDefined(Rotator, "Rotator", _temporalUndefined) && Rotator); } _createClass(_temporalAssertDefined(Rotator, "Rotator", _temporalUndefined) && Rotator, null, [{ key: "rotate", // no variables value: function rotate() { var msg; // Don't rotate empty messages while (Msgs["m" + a] == 0) { a++; if (a > 10) a = 1; } msg = Msgs["m" + a]; a++; if (a > 10) i = 1; cb.sendNotice(msg, "", msgHilite, msgColor, "bold"); cb.setTimeout((_temporalAssertDefined(Rotator, "Rotator", _temporalUndefined) && Rotator).rotate, msgDelay * 60000); } }]); return _temporalAssertDefined(Rotator, "Rotator", _temporalUndefined) && Rotator; })(); cb.setTimeout((_temporalAssertDefined(Rotator, "Rotator", _temporalUndefined) && Rotator).rotate, msgDelay * 60000); MsgHandler = (function () { function MsgHandler() { _classCallCheck(this, _temporalAssertDefined(MsgHandler, "MsgHandler", _temporalUndefined) && MsgHandler); } _createClass(_temporalAssertDefined(MsgHandler, "MsgHandler", _temporalUndefined) && MsgHandler, null, [{ key: "onMessage", // no variables value: function onMessage(msg) { return msg; } }]); return _temporalAssertDefined(MsgHandler, "MsgHandler", _temporalUndefined) && MsgHandler; })(); UserHandler = (function () { function UserHandler() { _classCallCheck(this, _temporalAssertDefined(UserHandler, "UserHandler", _temporalUndefined) && UserHandler); } _createClass(_temporalAssertDefined(UserHandler, "UserHandler", _temporalUndefined) && UserHandler, null, [{ key: "onEnter", // no variables value: function onEnter(user) { if (cb.settings.first_message_on_entry == "Yes") { cb.sendNotice("\u25ba Welcome " + user.user + "!\n\u25ba " + Msgs.m1, user.user, msgHilite, msgColor, "bold"); } } }]); return _temporalAssertDefined(UserHandler, "UserHandler", _temporalUndefined) && UserHandler; })(); RotNot.main();
© Copyright Chaturbate 2011- 2026. All Rights Reserved.