Apps Home
|
Create an App
Salty's App
Author:
skittlesbob
Description
Source Code
Launch App
Current Users
Created by:
Skittlesbob
/** * * @title F Y I * @author rubzombie <yeah@right.com> * @version 0.1.7 * @file Keep everyone up-to-date with your latest news... */ /* * A simple notification bot that will repeat a message of your choice at a rate of your choice.<br /> In-chat commands to re-configure the bot without the need to restart it: <ul style='list-style-type:none;'> <li><p><strong>/fyi text</strong> <em><i>sets the fyi message to </i></em>text</p></li> <li><p><strong>/fyi number</strong> <em><i>repeats the fyi message after every </i></em>number <em><i>of chat messages (default 25, 0 to suspend fyi messages temporarily)</i></em></p></li> </ul> <strong>Notes.</strong> <ol style='font-size:.75em;'> <li>To include one or more <strong>/</strong> characters in the fyi message, enter them on the launch app startup page. They cannot be entered using the <strong>/fyi text</strong> in-chat command.</li> </ol> * */ var fyi = (function () { 'use strict'; //* const */ var author = 'rubzombie', is_prerelease_version = false, max_frequency = 60; //* var */ var count = 0; function toInt(s) { var i = /^\d+$/.exec(s.replace(/^\s+|\s+$/g, '')); if (i !== null) { i = Number(i[0]); } return i; } function notify() { if (cb.settings.frequency) { cb.chatNotice('fyi: ' + cb.settings.message); } } function init() { if (is_prerelease_version && cb.room_slug !== author) { cb.chatNotice('F Y I bot under development. Thank you for your interest. Please look out for the release version, which should be available soon, hopefully ;)', cb.room_slug); } while (is_prerelease_version && cb.room_slug !== author) { // infinite loop should force bot to be unloaded } notify(); } function onMessage(msg) { var text = msg.m, user = msg.user, is_broadcaster = (user === cb.room_slug), cmdRe = /\/(fyi)\s*([^\/]*)/ig, cmd, n; // commands only available to broadcaster if (is_broadcaster) { while ((cmd = cmdRe.exec(text)) !== null) { msg['X-Spam'] = true; // suppress message broadcast switch (cmd[1].toLowerCase()) { case 'fyi': if (cmd[2]) { n = toInt(cmd[2]); if (n === null) { cb.settings.message = cmd[2]; // default, user entered argument that wasn't a number cb.chatNotice('FYI message set to: ' + cb.settings.message, user); } else { cb.settings.frequency = n > max_frequency ? max_frequency : n; if (cb.settings.frequency === 0) { cb.chatNotice('FYI message temporarily disabled.', user); } else { cb.chatNotice('FYI frequency set to once every ' + cb.settings.frequency + ' message' + (cb.settings.frequency === 1 ? '' : 's') + '.', user); } } } else { cb.chatNotice('FYI in-chat commands:', user); cb.chatNotice('\u00a0\u00a0/fyi text - set the fyi message to \'text\'', user); cb.chatNotice('\u00a0\u00a0/fyi number - repeat fyi message after \'number\' chat messages', user); } break; } } } if (!msg['X-Spam']) { count++; } if (count >= cb.settings.frequency) { count = 0; notify(); } return msg; } return { max_frequency: max_frequency, onMessage: onMessage, init: init }; })(); cb.settings_choices = [{ name: 'message', type: 'str', minLength: 1, maxLength: 255, label: 'Message' }, { name: 'frequency', type: 'int', minValue: 0, maxValue: fyi.max_frequency, 'default': 10, label: 'Frequency' }]; // handlers cb.onMessage(function (msg) { 'use strict'; return fyi.onMessage(msg); }); fyi.init();
© Copyright Chaturbate 2011- 2026. All Rights Reserved.