UNPKG

djs-menu-v13

Version:

A module for create simple and complex menu for your Discord Bot

78 lines (73 loc) 16.7 kB
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>djs-menu-v13</title><meta name="description" content="Documentation for djs-menu-v13"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="assets/style.css"/><link rel="stylesheet" href="assets/highlight.css"/><script async src="assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base="."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="index.html" class="title">djs-menu-v13</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label><input type="checkbox" id="tsd-filter-externals" checked/><label class="tsd-widget" for="tsd-filter-externals">Externals</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><h1>djs-menu-v13</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><div class="tsd-panel tsd-typography"> <a href="#djs-menu-v13" id="djs-menu-v13" style="color: inherit; text-decoration: none;"> <h1>djs-menu-v13</h1> </a> <a href="#create-menu-for-your-discord-bot-very-easly" id="create-menu-for-your-discord-bot-very-easly" style="color: inherit; text-decoration: none;"> <h2>Create menu for your Discord Bot very easly</h2> </a> <ul> <li><p>Make for Discord.js V13</p> <ul> <li>Work with Interaction</li> </ul> </li> <li><p>Create simple and complex Menu</p> <ul> <li>with button and select menu</li> </ul> </li> <li><p>Support event and callbacks</p> <ul> <li>For do whatever you want</li> </ul> </li> </ul> <a href="#usefull-link" id="usefull-link" style="color: inherit; text-decoration: none;"> <h2>Usefull link</h2> </a> <ul> <li><a href="https://shizey.github.io/djs-menu-v13/">Documentation</a></li> <li><a href="https://github.com/Shizey/djs-menu-v13">GitHub Page</a></li> <li><a href="https://www.npmjs.com/package/djs-menu-v13">NPM Page</a></li> </ul> <a href="#how-to-use-it-" id="how-to-use-it-" style="color: inherit; text-decoration: none;"> <h2>How to use it ?</h2> </a> <a href="#first-step" id="first-step" style="color: inherit; text-decoration: none;"> <h3>First step</h3> </a> <p>First you need to install the module with</p> <pre><code class="language-js"><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-0">i</span><span class="hl-1"> </span><span class="hl-0">djs</span><span class="hl-1">-</span><span class="hl-0">menu</span><span class="hl-1">-</span><span class="hl-0">v13</span> </code></pre> <p>Then, import the module in your code</p> <pre><code class="language-js"><span class="hl-2">import</span><span class="hl-1"> {</span><span class="hl-0">Menu</span><span class="hl-1">, </span><span class="hl-0">MenuPage</span><span class="hl-1">} </span><span class="hl-2">from</span><span class="hl-1"> </span><span class="hl-3">&#39;djs-menu-v13&#39;</span><span class="hl-1">;</span><br/><span class="hl-4">// Or with require</span><br/><span class="hl-5">const</span><span class="hl-1"> {</span><span class="hl-6">Menu</span><span class="hl-1">, </span><span class="hl-6">MenuPage</span><span class="hl-1">} = </span><span class="hl-7">require</span><span class="hl-1">(</span><span class="hl-3">&#39;djs-menu-v13&#39;</span><span class="hl-1">);</span> </code></pre> <p><strong>For this example, we gonna make two pages :</strong></p> <ul> <li>The first one with a basic embed and a button to go to the second page</li> <li>The second one with a button to return to the first page and a button to exit the menu</li> </ul> <p>First we need to create all the buttons we need :</p> <pre><code class="language-js"><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">nextPageBtn</span><span class="hl-1"> = {</span><br/><span class="hl-1"> </span><span class="hl-0">label:</span><span class="hl-1"> </span><span class="hl-3">&#39;Go to second page&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-0">target:</span><span class="hl-1"> </span><span class="hl-3">&#39;secondPage&#39;</span><span class="hl-1">, </span><span class="hl-4">// The target is the ID of the page that we need to display when this button is clicked</span><br/><span class="hl-1"> </span><span class="hl-0">style:</span><span class="hl-1"> </span><span class="hl-3">&#39;PRIMARY&#39;</span><span class="hl-1">,</span><br/><span class="hl-1">};</span><br/><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">previousPageBtn</span><span class="hl-1"> = {</span><br/><span class="hl-1"> </span><span class="hl-0">label:</span><span class="hl-1"> </span><span class="hl-3">&#39;Go to first page&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-0">target:</span><span class="hl-1"> </span><span class="hl-3">&#39;firstPage&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-0">style:</span><span class="hl-1"> </span><span class="hl-3">&#39;PRIMARY&#39;</span><span class="hl-1">,</span><br/><span class="hl-1">};</span><br/><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">exitBtn</span><span class="hl-1"> = {</span><br/><span class="hl-1"> </span><span class="hl-0">label:</span><span class="hl-1"> </span><span class="hl-3">&#39;Exit&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">// You can also put a function to execute when the button is clicked</span><br/><span class="hl-1"> </span><span class="hl-7">target</span><span class="hl-0">:</span><span class="hl-1"> (</span><span class="hl-0">page</span><span class="hl-1">, </span><span class="hl-0">interaction</span><span class="hl-1">, </span><span class="hl-0">menu</span><span class="hl-1">) </span><span class="hl-5">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">menu</span><span class="hl-1">.</span><span class="hl-7">stop</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-0">interaction</span><span class="hl-1">.</span><span class="hl-7">editReply</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-0">content:</span><span class="hl-1"> </span><span class="hl-3">&#39;The menu has just been closed&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-0">embeds:</span><span class="hl-1"> [],</span><br/><span class="hl-1"> </span><span class="hl-0">components:</span><span class="hl-1"> [],</span><br/><span class="hl-1"> });</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-0">style:</span><span class="hl-1"> </span><span class="hl-3">&#39;DANGER&#39;</span><span class="hl-1">,</span><br/><span class="hl-1">};</span> </code></pre> <p>Then we need to create two embeds for our pages. <strong>You don&#39;t have to use an embed to make a page, just a content is enough.</strong></p> <pre><code class="language-js"><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">firstEmbed</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-7">MessageEmbed</span><span class="hl-1">()</span><br/><span class="hl-1"> .</span><span class="hl-7">setColor</span><span class="hl-1">(</span><span class="hl-3">&#39;GREEN&#39;</span><span class="hl-1">)</span><br/><span class="hl-1"> .</span><span class="hl-7">setDescription</span><span class="hl-1">(</span><span class="hl-3">&#39;FIRST PAGE&#39;</span><span class="hl-1">);</span><br/><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">secondEmbed</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-7">MessageEmbed</span><span class="hl-1">()</span><br/><span class="hl-1"> .</span><span class="hl-7">setColor</span><span class="hl-1">(</span><span class="hl-3">&#39;YELLOW&#39;</span><span class="hl-1">)</span><br/><span class="hl-1"> .</span><span class="hl-7">setDescription</span><span class="hl-1">(</span><span class="hl-3">&#39;SECOND PAGE&#39;</span><span class="hl-1">); </span> </code></pre> <p>Now we can create our pages.</p> <pre><code class="language-js"><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">firstPage</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-7">MenuPage</span><span class="hl-1">()</span><br/><span class="hl-1"> .</span><span class="hl-7">addEmbed</span><span class="hl-1">(</span><span class="hl-0">firstEmbed</span><span class="hl-1">)</span><br/><span class="hl-1"> .</span><span class="hl-7">addButton</span><span class="hl-1">(</span><span class="hl-0">nextPageBtn</span><span class="hl-1">)</span><br/><span class="hl-1"> .</span><span class="hl-7">setId</span><span class="hl-1">(</span><span class="hl-3">&#39;secondPage&#39;</span><span class="hl-1">); </span><span class="hl-4">// The id that the target in the button will use</span><br/><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">secondPage</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-7">MenuPage</span><span class="hl-1">()</span><br/><span class="hl-1"> .</span><span class="hl-7">addEmbed</span><span class="hl-1">(</span><span class="hl-0">secondEmbed</span><span class="hl-1">)</span><br/><span class="hl-1"> .</span><span class="hl-7">addButton</span><span class="hl-1">(</span><span class="hl-0">previousPageBtn</span><span class="hl-1">)</span><br/><span class="hl-1"> .</span><span class="hl-7">addButton</span><span class="hl-1">(</span><span class="hl-0">exitBtn</span><span class="hl-1">)</span><br/><span class="hl-1"> .</span><span class="hl-7">setId</span><span class="hl-1">(</span><span class="hl-3">&#39;secondPage&#39;</span><span class="hl-1">);</span> </code></pre> <p>And finaly create the menu and start it</p> <pre><code class="language-js"><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">menu</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-7">Menu</span><span class="hl-1">(</span><span class="hl-0">interaction</span><span class="hl-1">)</span><br/><span class="hl-1"> .</span><span class="hl-7">addPage</span><span class="hl-1">(</span><span class="hl-0">firstPage</span><span class="hl-1">)</span><br/><span class="hl-1"> .</span><span class="hl-7">addPage</span><span class="hl-1">(</span><span class="hl-0">secondPage</span><span class="hl-1">)</span><br/><span class="hl-1"> .</span><span class="hl-7">start</span><span class="hl-1">(</span><span class="hl-3">&#39;firstPage&#39;</span><span class="hl-1">);</span> </code></pre> <p><strong>GG</strong> you just start your first menu ! Now, you can listen to events emit by your menu</p> <pre><code class="language-js"><span class="hl-0">menu</span><span class="hl-1">.</span><span class="hl-7">on</span><span class="hl-1">(</span><span class="hl-3">&#39;stop&#39;</span><span class="hl-1">, (</span><span class="hl-0">interaction</span><span class="hl-1">, </span><span class="hl-0">reason</span><span class="hl-1">) </span><span class="hl-5">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-2">if</span><span class="hl-1"> (</span><span class="hl-0">reason</span><span class="hl-1"> === </span><span class="hl-3">&#39;noReply&#39;</span><span class="hl-1"> ) {</span><br/><span class="hl-1"> </span><span class="hl-4">// Don&#39;t forget to clear embeds and components generated by the menu</span><br/><span class="hl-1"> </span><span class="hl-0">interaction</span><span class="hl-1">.</span><span class="hl-7">editReply</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-0">embeds:</span><span class="hl-1"> [], </span><br/><span class="hl-1"> </span><span class="hl-0">components:</span><span class="hl-1"> [],</span><br/><span class="hl-1"> </span><span class="hl-0">content:</span><span class="hl-1"> </span><span class="hl-3">&#39;You did not respond quickly enough&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> });</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">});</span><br/><br/><span class="hl-0">menu</span><span class="hl-1">.</span><span class="hl-7">on</span><span class="hl-1">(</span><span class="hl-3">&#39;pageChanged&#39;</span><span class="hl-1">, (</span><span class="hl-0">page</span><span class="hl-1">, </span><span class="hl-0">interaction</span><span class="hl-1">, </span><span class="hl-0">pages</span><span class="hl-1">) </span><span class="hl-5">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-7">log</span><span class="hl-1">(</span><span class="hl-3">&#39;the page just changed&#39;</span><span class="hl-1">);</span><br/><span class="hl-1">});</span> </code></pre> <p><a href="https://github.com/Shizey/djs-menu-v13/blob/main/examples/firstStep.js">Full code example here</a></p> <a href="#menu-with-select-menu" id="menu-with-select-menu" style="color: inherit; text-decoration: none;"> <h3>Menu with Select Menu</h3> </a> <p><strong>You can also use select menu with buttons.</strong> <a href="https://github.com/Shizey/djs-menu-v13/blob/main/examples/selectMenu.js">Check this example to know how</a></p> </div></div><div class="col-4 col-menu menu-sticky-wrap menu-highlight"><nav class="tsd-navigation primary"><ul><li class="current"><a href="modules.html">Exports</a></li></ul></nav><nav class="tsd-navigation secondary menu-sticky"><ul><li class="tsd-kind-class"><a href="classes/Menu.html" class="tsd-kind-icon">Menu</a></li><li class="tsd-kind-class"><a href="classes/MenuPage.html" class="tsd-kind-icon">Menu<wbr/>Page</a></li><li class="tsd-kind-class"><a href="classes/MenuSelectPage.html" class="tsd-kind-icon">Menu<wbr/>Select<wbr/>Page</a></li><li class="tsd-kind-type-alias"><a href="modules.html#MenuButton" class="tsd-kind-icon">Menu<wbr/>Button</a></li><li class="tsd-kind-type-alias"><a href="modules.html#MenuSelectChoice" class="tsd-kind-icon">Menu<wbr/>Select<wbr/>Choice</a></li><li class="tsd-kind-type-alias"><a href="modules.html#SelectChoice" class="tsd-kind-icon">Select<wbr/>Choice</a></li><li class="tsd-kind-type-alias"><a href="modules.html#SingleButton" class="tsd-kind-icon">Single<wbr/>Button</a></li><li class="tsd-kind-type-alias"><a href="modules.html#pagesType" class="tsd-kind-icon">pages<wbr/>Type</a></li></ul></nav></div></div></div><footer class="with-border-bottom"><div class="container"><h2>Legend</h2><div class="tsd-legend-group"><ul class="tsd-legend"><li class="tsd-kind-constructor tsd-parent-kind-class"><span class="tsd-kind-icon">Constructor</span></li><li class="tsd-kind-property tsd-parent-kind-class"><span class="tsd-kind-icon">Property</span></li><li class="tsd-kind-method tsd-parent-kind-class"><span class="tsd-kind-icon">Method</span></li></ul></div><h2>Settings</h2><p>Theme <select id="theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></p></div></footer><div class="container tsd-generator"><p>Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></div><div class="overlay"></div><script src="assets/main.js"></script></body></html>