DryRoastedLemon

Let's Raid Command for KoalaBot

Feb 16th, 2016
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.   Let's Raid Command
  3.   By DryRoastedLemon
  4.   Usage: !letsraid [twitch username]
  5.  
  6.   Can be used to quickly and easily set your viewers up for raiding a fellow streamer.
  7.   Automatically creates the link and gives your viewers your raiding message, which can
  8.   be customized from within KoalaBot.
  9.  
  10.   Note: The module was written in a very modular fashion, mostly so that I can easily take
  11.   the HTML interface as create more mods without having to go through every single interface
  12.   element. Also, it prevents typing errors and makes working with long id's a little easier.
  13.  */
  14.  
  15.  var modLetsRaid = (function() {
  16.     // -------------------- BASIC SETUP --------------------
  17.      
  18.     // Module information
  19.     var _moduleName = "Lets Raid Command";
  20.     var _moduleSName = "LetsRaid";
  21.     var _timedOut = false;
  22.    
  23.     // Save function
  24.     var _settingsFilename = "letsRaid.ini";
  25.     var _saveSettings = function()
  26.     {
  27.         apiWriteFile(_settingsFilename, JSON.stringify(_settings));
  28.     };
  29.    
  30.     // Time-out function
  31.     var _timeOut = function(duration) {
  32.         _timedOut = true;
  33.         setTimeout( function() { _timedOut = false; }, duration )
  34.     };
  35.    
  36.     // Load / Create settings
  37.     var _settings = apiOpenFile(_settingsFilename);
  38.     if (!_settings) { // If the file doesn't exist create a new save file with the following default values
  39.         _settings = {
  40.         _modRequired: true,
  41.         _timeOutDuration: 10 * 1000,
  42.         _message: "It's a standard issue raid! twitchRaid"
  43.         };
  44.         _saveSettings();
  45.     } else {
  46.         _settings = $.parseJSON(_settings);
  47.     }
  48.    
  49.     // Add Command
  50.     if (_settings._modRequired) {
  51.         _addCommand("letsraid", "modLetsRaid.letsRaidCmd", "mod");
  52.     } else {
  53.         _addCommand("letsraid", "modLetsRaid.letsRaidCmd", "all");
  54.     }
  55.    
  56.     // -------------------- PANEL SETUP --------------------
  57.    
  58.     // Configure panel
  59.     _setupPanel();
  60.    
  61.     // -------------------- MAIN COMMAND SETUP --------------------
  62.    
  63.     // !letsraid command
  64.     var _letsRaidCmd = function(params, from)
  65.     {
  66.         // If mod status is required and the user isn't a mod (or the caster) return.
  67.         // Also return if the function's on time-out.
  68.         //if ((!mod && _settings._modRequired) || _timedOut) return;
  69.         if (_timedOut) return;
  70.        
  71.         if (params[0])
  72.         {
  73.             var _streamer = params[0];
  74.             apiSay("Today we're gonna raid " + _streamer + "!");
  75.             apiSay("Go visit their channel and wait for me to say the message.");
  76.             apiSay("Link: http://twitch.tv/" + _streamer.toLowerCase());
  77.             apiSay("Message: " + _settings._message);
  78.             apiSay("Have fun!");
  79.            
  80.             _timeOut(_settings._timeOutDuration);
  81.         } else {
  82.             apiSay("Usage: !letsraid [twitch username]");
  83.         }
  84.     };
  85.    
  86.     return {
  87.         letsRaidCmd: _letsRaidCmd
  88.     };
  89.    
  90.     // -------------------- Panel configuration function --------------------
  91.     // Declared in this way so it's created at parse-time.
  92.    
  93.     function _setupPanel() {
  94.         var _myTab = apiAddTab(_moduleName);
  95.         $(_myTab).html(`
  96.             <div class="row-fluid">
  97.                 <div class="col-sm-12">
  98.                     <div class="panel panel-default">
  99.                         <div class="panel-heading">
  100.                             <h2 class="panel-title">${_moduleName}</h2>
  101.                         </div>
  102.                         <ul class="list-group">
  103.                             <li class="list-group-item">
  104.                                 <strong>Requires moderator status:</strong>
  105.                                 <button id="mod${_moduleSName}EnableMod" class="btn btn-xs">Yes</button>
  106.                                 <button id="mod${_moduleSName}DisableMod" class="btn btn-xs">No</button>
  107.                             </li>
  108.                             <li class="list-group-item">
  109.                                 <strong>Time-out Duration:</strong>
  110.                                 <input id="mod${_moduleSName}TimeoutInput" type="text" size="4"> seconds.
  111.                             </li>
  112.                             <li class="list-group-item">
  113.                                 <p><strong>Raid Message:</strong>
  114.                                 <input id="mod${_moduleSName}MessageInput" type="text" size="80"></p>
  115.                             </li>
  116.                             <li class="list-group-item">
  117.                                 <p><strong>Directions</strong></p>
  118.                                 <p>Usage: !letsraid [twitch username]</p>
  119.                             </li>
  120.                         </ul>
  121.                     </div>
  122.                 </div>
  123.             </div> 
  124.         `);
  125.        
  126.         // Mod status - Setting the initial values
  127.         if (_settings._modRequired) {
  128.             $( "#mod" + _moduleSName + "EnableMod" ).addClass("btn-info");
  129.             $( "#mod" + _moduleSName + "DisableMod" ).addClass("btn-danger");
  130.         } else {
  131.             $( "#mod" + _moduleSName + "EnableMod" ).addClass("btn-danger");
  132.             $( "#mod" + _moduleSName + "DisableMod" ).addClass("btn-info");
  133.         }
  134.        
  135.         // Change and save the mod status requirement when clicking on the buttons
  136.         $( "#mod" + _moduleSName + "EnableMod" ).click(function(){
  137.             $( "#mod" + _moduleSName + "EnableMod" ).addClass("btn-info").removeClass("btn-danger");
  138.             $( "#mod" + _moduleSName + "DisableMod" ).addClass("btn-danger").removeClass("btn-info");
  139.             _settings._modRequired = true;
  140.             _addCommand("letsraid", "modLetsRaid.letsRaidCmd", "mod");
  141.             _saveSettings();
  142.         });
  143.        
  144.         $( "#mod" + _moduleSName + "DisableMod" ).click(function() {
  145.             $( "#mod" + _moduleSName + "EnableMod" ).addClass("btn-danger").removeClass("btn-info");
  146.             $( "#mod" + _moduleSName + "DisableMod" ).addClass("btn-info").removeClass("btn-danger");
  147.             _settings._modRequired = false;
  148.             _addCommand("letsraid", "modLetsRaid.letsRaidCmd", "all");
  149.             _saveSettings();
  150.         });
  151.        
  152.         // Time-out - Load the initial value
  153.         $( "#mod" + _moduleSName + "TimeoutInput" ).val(_settings._timeOutDuration / 1000);
  154.        
  155.         // Change and save the time-out duration
  156.         $( "#mod" + _moduleSName + "TimeoutInput" ).change(function() {
  157.                 var temp = $( "#mod" + _moduleSName + "TimeoutInput" ).val();
  158.                 if (Math.floor(temp) == temp && $.isNumeric(temp) && temp >= 0) {
  159.                     _settings._timeOutDuration = temp * 1000;
  160.                     _saveSettings();
  161.                 } else {
  162.                     $( "#mod" + _moduleSName + "TimeoutInput" ).val(_settings._timeOutDuration);
  163.                     alert("Please enter a positive integer (e.g.: 1, 2, 3).");
  164.                 }
  165.         });
  166.        
  167.         // Message - Load the initial value
  168.         $( "#mod" + _moduleSName + "MessageInput" ).val(_settings._message);
  169.        
  170.         $( "#mod" + _moduleSName + "MessageInput" ).change(function() {
  171.             _settings._message = $( "#mod" + _moduleSName + "MessageInput" ).val();
  172.             _saveSettings();
  173.         });
  174.     }
  175.    
  176.     // -------------------- Updating the command --------------------
  177.     // Declared in this way so it's created at parse-time.
  178.    
  179.     function _addCommand(cmd, functionName, accesslevel) {
  180.         var description = "Raids other streamers.";
  181.        
  182.         // Remove the command if it exists
  183.         for (var i = 0; i < cmdList.length; i++) {
  184.             if (cmdList[i].cmd == cmd) {
  185.                 cmdList.splice(i, 1);
  186.             }
  187.         }
  188.        
  189.         // Add the command with the correct accesslevel
  190.         apiAddCmd(cmd, functionName, accesslevel, description);
  191.     }
  192.    
  193.  })();
Advertisement
Add Comment
Please, Sign In to add comment