rmsoft1

CommandList.cs

Apr 29th, 2018
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 9.49 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using Discord;
  7. using Discord.Commands;
  8. using Discord.WebSocket;
  9. using System.Net;
  10. namespace RMSoftware.ModularBot
  11. {
  12.     public class CommandItem
  13.     {
  14.         public string Cmdname { get; private set; }
  15.         public string cmdPerms { get; private set; }
  16.         public string cmdSummary { get; private set; }
  17.         public string cmdUsage { get; private set; }
  18.         public string coreNote { get; private set; }
  19.         public int index { get; private set; }
  20.         bool is_core = false;
  21.         string CoreID()
  22.         {
  23.             if(is_core)
  24.             {
  25.                 return "CORE";
  26.             }
  27.             else
  28.             {
  29.                 return "CSTM";
  30.             }
  31.         }
  32.         public string generateTab()
  33.         {
  34.             return
  35.                 $@"<!-- START-TAB --><div class='panel panel-default'>
  36.                                                 <div class='panel-heading ' role='tab' id='hd{CoreID()}{index}'>
  37.                                                     <table>
  38.                                                       <tr><td><img src = 'http://rmsoftware.org/images/Icons/appIcons/cbot.png' style='padding-right:5px;'/></td><td>
  39.                                                       <h3 class='panel-title' data-toggle='collapse' data-parent='#accordion{CoreID()}'><a class='collapsed' data-toggle='collapse' data-parent='#accordion{CoreID()}' href='#dlid{CoreID()}{index}' aria-expanded='false' aria-controls='dlid{CoreID()}{index}'>{Cmdname}</a></h3>{coreNote}
  40.                                                       </td>
  41.                                                        </tr>
  42.                                                        <tr><td></td><td></td></tr></table>
  43.                                                 </div>
  44.                                                 <div id = 'dlid{CoreID()}{index}' class='panel-collapse collapse' role='tabpanel' aria-labelledby='hd{CoreID()}{index}'>
  45.                                                     <div class='panel-body'>
  46.                                                         <p><b>Summary: </b>{cmdSummary}</p>
  47.                                                         <br/>
  48.                                                         <p><b>Usage: </b></p>
  49.                                                         <ul>
  50.                                                             <li>{cmdUsage}</li>
  51.                                                         </ul>
  52.                                                         <p><b>Permissions: </b></p>
  53.                                                         <ul>
  54.                                                         <li>{cmdPerms}</li>
  55.                                                         </ul>
  56.                                                         <br/>
  57.                                                     </div>
  58.                                                 </div>
  59.                                         </div>
  60.                                         <!-- END TAB -->";
  61.         }
  62.  
  63.         public CommandItem(string CmdName, string CmdPerms, string CmdSummary, string CmdUsage, bool IsCore,int Index)
  64.         {
  65.             Cmdname =  WebUtility.HtmlEncode(CmdName);
  66.             cmdPerms = WebUtility.HtmlEncode(CmdPerms);
  67.             cmdSummary = WebUtility.HtmlEncode(CmdSummary);
  68.             cmdUsage = WebUtility.HtmlEncode(CmdUsage);
  69.             is_core = IsCore;
  70.             if(IsCore)
  71.             {
  72.                 coreNote = "<small class='SourceNote'>CORE</small>";
  73.             }
  74.             index = Index;
  75.  
  76.         }
  77.     }
  78.  
  79.     public class CommandList
  80.     {
  81.         List<CommandItem> commands { get; set; }
  82.  
  83.         int index = 0;
  84.        
  85.         public string botname { get; private set; }
  86.  
  87.         public string GenerateCoreCommandList()
  88.         {
  89.             string outresult = "";
  90.             foreach (var item in commands)
  91.             {
  92.                 if (string.IsNullOrWhiteSpace(item.coreNote))
  93.                 {
  94.                     continue;
  95.                 }
  96.                 outresult += item.generateTab();
  97.             }
  98.             return outresult;
  99.         }
  100.         public string GenerateOtherCommandList()
  101.         {
  102.             string outresult = "";
  103.             foreach (var item in commands)
  104.             {
  105.                 if (!string.IsNullOrWhiteSpace(item.coreNote))
  106.                 {
  107.                     continue;
  108.                 }
  109.                 outresult += item.generateTab();
  110.             }
  111.             return outresult;
  112.         }
  113.  
  114.         public CommandList(string clientUsername)
  115.         {
  116.             botname = clientUsername;
  117.             commands = new List<CommandItem>();
  118.         }
  119.  
  120.         public void AddCommand(string cmdName,bool restricted, bool isCore,string summary=null,string usage=null)
  121.         {
  122.             string permission = restricted ? "Requires special permissions" : "Unrestricted";
  123.             if(string.IsNullOrWhiteSpace(summary))
  124.             {
  125.                 summary = "No summary was provided for this command.";
  126.             }
  127.             if (string.IsNullOrWhiteSpace(usage))
  128.             {
  129.                 usage = "No usage information was provided for this command.";
  130.             }
  131.             commands.Add(new CommandItem(cmdName, permission, summary, usage, isCore, index));
  132.             index++;
  133.         }
  134.  
  135.         public string GetFullHTML()
  136.         {
  137.             return $@"
  138. <!DOCTYPE html>
  139.  
  140. <html class='no-js'>
  141.    <head>
  142.        <meta charset='utf-8'>
  143.        <title>{botname}'s Command List</title>
  144.        <meta name='description' content=''>
  145.        <meta name='viewport' content='width=device-width, initial-scale=1, maximum-scale=1'>
  146.  
  147.        <!-- Fonts -->
  148.        <link href='http://fonts.googleapis.com/css?family=Open+Sans:400,300,700' rel='stylesheet' type='text/css'>
  149.        <link href='http://fonts.googleapis.com/css?family=Dosis:400,700' rel='stylesheet' type='text/css'>
  150.  
  151.        <!-- Bootsrap -->
  152.        <link rel='stylesheet' href='http://rmsoftware.org/assets/css/bootstrap.min.css'>
  153.  
  154.  
  155.        <!-- Font awesome -->
  156.        <link rel='stylesheet' href='http://rmsoftware.org/assets/css/font-awesome.min.css'>
  157.  
  158.        <!-- PrettyPhoto -->
  159.        <link rel='stylesheet' href='http://rmsoftware.org/assets/css/prettyPhoto.css'>
  160.  
  161.        <!-- Template main Css -->
  162.        <link rel='stylesheet' href='http://rmsoftware.org/assets/css/style.css'>
  163.        
  164.        <!-- Modernizr -->
  165.        <script src='http://rmsoftware.org/assets/js/modernizr-2.6.2.min.js'></script>
  166.  
  167.  
  168.    </head>
  169.    <body>
  170.    <!-- NAVBAR
  171.    ================================================== -->
  172.  
  173.    <header class='main-header'>
  174.        
  175.    
  176.        <nav class='navbar navbar-static-top'>
  177.  
  178.          
  179.            <div class='navbar-main'>
  180.              
  181.              <div class='container'>
  182.  
  183.                <div class='navbar-header'>
  184.                  <button type='button' class='navbar-toggle collapsed' data-toggle='collapse' data-target='#navbar' aria-expanded='false' aria-controls='navbar'>
  185.  
  186.                    <span class='sr-only'>Toggle navigation</span>
  187.                    <span class='icon-bar'></span>
  188.                    <span class='icon-bar'></span>
  189.                    <span class='icon-bar'></span>
  190.  
  191.                  </button>
  192.                  
  193.                  <a class='navbar-brand' href='index.php'><img src='http://rmsoftware.org/assets/images/sadaka-logo.png' alt=''></a>
  194.                  
  195.                </div>
  196.  
  197.                <div id='navbar' class='navbar-collapse collapse pull-right'>
  198.  
  199.                  <ul class='nav navbar-nav'>
  200.                     <li><a href='http://rmsoftware.org'>RMsoftware.org</a></li>
  201.                    
  202.                  </ul>
  203.  
  204.                </div> <!-- /#navbar -->
  205.  
  206.              </div> <!-- /.container -->
  207.              
  208.            </div> <!-- /.navbar-main -->
  209.  
  210.  
  211.        </nav>
  212.  
  213.    </header> <!-- /. main-header -->
  214.  
  215.  
  216.     <div class='page-heading text-center'>
  217.  
  218.         <div class='container zoomIn animated'>
  219.            
  220.             <h1 class='page-title'>Command list<span class='title-under'></span></h1>
  221.             <p class='page-description'>
  222.                 Powered by RMSoftware.ModularBot
  223.             </p>
  224.            
  225.         </div>
  226.  
  227.     </div>
  228.  
  229.     <div class='main-container'>
  230.  
  231.         <div class='container'>
  232.  
  233.            
  234.            
  235.             <div class='row '>
  236.  
  237.                 <div class='col-md-12 fadeIn'>
  238.  
  239.                         <div role='tabpanel'>
  240.  
  241.                               <!-- Nav tabs -->
  242.                               <ul class='nav nav-tabs' role='tablist'>
  243.                                 <li role='presentation'  class='active'><a href='#cmdlist_Core' aria-controls='cmdlist_Core' role='tab' data-toggle='tab'>Core Commands</a></li>
  244.                                <li role='presentation'  ><a href='#cmdlist_Other' aria-controls='cmdlist_Other' role='tab' data-toggle='tab'>Module & Custom Commands</a></li>
  245.                               </ul>
  246.  
  247.                               <!-- Tab panes -->
  248.                               <div class='tab-content'>
  249.                                 <div role='tabpanel' class='tab-pane active' id='cmdlist_Core'>
  250.                                     <div class='panel-group' id='accordionCORE' role='tablist' aria-multiselectable='true'>{GenerateCoreCommandList()}</div>
  251.  
  252.                                     <p></p>
  253.  
  254.                                 </div>
  255.                             <div role='tabpanel' class='tab-pane' id='cmdlist_Other'>
  256.                                     <div class='panel-group' id='accordionCSTM' role='tablist' aria-multiselectable='true'>{GenerateOtherCommandList()}</div>
  257.  
  258.                                     <p></p>
  259.  
  260.                                 </div>
  261.  
  262.                         </div>
  263.  
  264.                         <p></p>
  265.                     </div>
  266.  
  267.                 </div>
  268.  
  269.                
  270.             </div>
  271.  
  272.         </div>
  273.  
  274.        
  275.  
  276.        
  277.  
  278.  
  279.     </div> <!-- /.main-container  -->
  280.  
  281.  
  282.    <footer class='main-footer'>
  283.    
  284.        <div class='footer-bottom'>
  285.  
  286.            <div class='container text-right'>
  287.                Copyright © 2011-2017 RMSoftware Development. Responsive framework by <a href='http://ouarmedia.com'>SADAKA @ Ouarmedia</a>
  288.            </div>
  289.        </div>
  290.    </footer>
  291.        <!-- jQuery -->
  292.        <script src='https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js'></script>
  293.  
  294.        <!-- Bootsrap javascript file -->
  295.        <script src='http://rmsoftware.org/assets/js/bootstrap.min.js'></script>
  296.  
  297.        <!-- PrettyPhoto javascript file -->
  298.        <script src='http://rmsoftware.org/assets/js/jquery.prettyPhoto.js'></script>
  299.  
  300.        <!-- Template main javascript -->
  301.        <script src='http://rmsoftware.org/assets/js/main.js'></script>
  302.  
  303.    </body>
  304. </html>
  305. ";
  306.         }
  307.     }
  308. }
Advertisement
Add Comment
Please, Sign In to add comment