Subcommands documentation

This commit is contained in:
mmacierzanka committed 2021-11-22 18:50:16 +01:00
1 parent d096cab2b2
commit 71b0f2824d
47 files changed
+434 -391

No files matched your search

+15 -7
View File
@@ -52,6 +52,7 @@
<li><a href="#reading-input-value">Reading input value</a></li>
</ul>
</li>
<li><a href="#subcommands">Subcommands</a></li>
</ul>
</li>
<li><a href="#events">Events</a></li>
@@ -97,24 +98,24 @@
<li>Run <code>npm init -y</code> or <code>yarn init -y</code></li>
<li>Add the CommandBot package</li>
</ol>
<pre><code class="language-javascript"><span class="hl-0">// npm</span><br/><span class="hl-1">npm</span><span class="hl-2"> </span><span class="hl-1">install</span><span class="hl-2"> </span><span class="hl-1">commandbot</span><span class="hl-2">@</span><span class="hl-1">latest</span><br/><br/><span class="hl-0">// yarn</span><br/><span class="hl-1">yarn</span><span class="hl-2"> </span><span class="hl-1">add</span><span class="hl-2"> </span><span class="hl-1">commandbot</span><span class="hl-2">@</span><span class="hl-1">latest</span>
<pre><code class="language-typescript"><span class="hl-0">// npm</span><br/><span class="hl-1">npm</span><span class="hl-2"> </span><span class="hl-1">install</span><span class="hl-2"> </span><span class="hl-1">commandbot</span><span class="hl-2">@</span><span class="hl-1">latest</span><br/><br/><span class="hl-0">// yarn</span><br/><span class="hl-1">yarn</span><span class="hl-2"> </span><span class="hl-1">add</span><span class="hl-2"> </span><span class="hl-1">commandbot</span><span class="hl-2">@</span><span class="hl-1">latest</span>
</code></pre>
<ol start="4">
<li>Create <em>index.js/index.ts</em> file (TypeScript is a recommended language)</li>
<li>Import the CommandBot package</li>
</ol>
<pre><code class="language-javascript"><span class="hl-0">// CommonJS</span><br/><span class="hl-3">const</span><span class="hl-2"> { </span><span class="hl-4">Bot</span><span class="hl-2"> } = </span><span class="hl-5">require</span><span class="hl-2">(</span><span class="hl-6">&quot;commandbot&quot;</span><span class="hl-2">);</span><br/><br/><span class="hl-0">// ES Modules (to use ESM add &quot;type&quot;: &quot;module&quot; to package.json file)</span><br/><span class="hl-7">import</span><span class="hl-2"> { </span><span class="hl-1">Bot</span><span class="hl-2"> } </span><span class="hl-7">from</span><span class="hl-2"> </span><span class="hl-6">&quot;commandbot&quot;</span><span class="hl-2">;</span>
<pre><code class="language-typescript"><span class="hl-0">// CommonJS</span><br/><span class="hl-3">const</span><span class="hl-2"> { </span><span class="hl-4">Bot</span><span class="hl-2"> } = </span><span class="hl-5">require</span><span class="hl-2">(</span><span class="hl-6">&quot;commandbot&quot;</span><span class="hl-2">);</span><br/><br/><span class="hl-0">// ES Modules (to use ESM add &quot;type&quot;: &quot;module&quot; to package.json file)</span><br/><span class="hl-7">import</span><span class="hl-2"> { </span><span class="hl-1">Bot</span><span class="hl-2"> } </span><span class="hl-7">from</span><span class="hl-2"> </span><span class="hl-6">&quot;commandbot&quot;</span><span class="hl-2">;</span>
</code></pre>
<ol start="6">
<li>Initialize the bot instance (<a href="https://grz4na.github.io/CommandBot/interfaces/InitOptions.html">InitOptions</a>) (list of available intents <a href="https://discord.js.org/#/docs/main/stable/class/Intents?scrollTo=s-FLAGS">here</a>)</li>
</ol>
<pre><code class="language-javascript"><span class="hl-3">const</span><span class="hl-2"> </span><span class="hl-4">bot</span><span class="hl-2"> = </span><span class="hl-3">new</span><span class="hl-2"> </span><span class="hl-5">Bot</span><span class="hl-2">({</span><br/><span class="hl-2"> </span><span class="hl-1">name:</span><span class="hl-2"> </span><span class="hl-6">&quot;YOUR_BOT_NAME&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">globalPrefix:</span><span class="hl-2"> </span><span class="hl-6">&quot;!&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">argumentSeparator:</span><span class="hl-2"> </span><span class="hl-6">&quot;,&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">commandSeparator:</span><span class="hl-2"> </span><span class="hl-6">&quot;/&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">clientOptions:</span><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-1">intents:</span><span class="hl-2"> [...</span><span class="hl-6">&quot;DISCORD_API_INTENTS&quot;</span><span class="hl-2">],</span><br/><span class="hl-2"> },</span><br/><span class="hl-2"> </span><span class="hl-1">token:</span><span class="hl-2"> </span><span class="hl-6">&quot;DISCORD_BOT_TOKEN&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">applicationId:</span><span class="hl-2"> </span><span class="hl-6">&quot;APPLICATION_ID&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">help:</span><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-1">enabled:</span><span class="hl-2"> </span><span class="hl-3">true</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">title:</span><span class="hl-2"> </span><span class="hl-6">&quot;List of commands&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">usage:</span><span class="hl-2"> </span><span class="hl-6">&quot;[command name]&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">description:</span><span class="hl-2"> </span><span class="hl-6">&quot;Show all commands available to use in my fantastic Discord bot.&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">bottomText:</span><span class="hl-2"> </span><span class="hl-6">&quot;Hello World&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">color:</span><span class="hl-2"> </span><span class="hl-6">&quot;#0055ff&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">visible:</span><span class="hl-2"> </span><span class="hl-3">false</span><span class="hl-2">,</span><br/><span class="hl-2"> },</span><br/><span class="hl-2">});</span>
<pre><code class="language-typescript"><span class="hl-3">const</span><span class="hl-2"> </span><span class="hl-4">bot</span><span class="hl-2"> = </span><span class="hl-3">new</span><span class="hl-2"> </span><span class="hl-5">Bot</span><span class="hl-2">({</span><br/><span class="hl-2"> </span><span class="hl-1">name:</span><span class="hl-2"> </span><span class="hl-6">&quot;YOUR_BOT_NAME&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">globalPrefix:</span><span class="hl-2"> </span><span class="hl-6">&quot;!&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">argumentSeparator:</span><span class="hl-2"> </span><span class="hl-6">&quot;,&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">commandSeparator:</span><span class="hl-2"> </span><span class="hl-6">&quot;/&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">clientOptions:</span><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-1">intents:</span><span class="hl-2"> [...</span><span class="hl-6">&quot;DISCORD_API_INTENTS&quot;</span><span class="hl-2">],</span><br/><span class="hl-2"> },</span><br/><span class="hl-2"> </span><span class="hl-1">token:</span><span class="hl-2"> </span><span class="hl-6">&quot;DISCORD_BOT_TOKEN&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">applicationId:</span><span class="hl-2"> </span><span class="hl-6">&quot;APPLICATION_ID&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">help:</span><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-1">enabled:</span><span class="hl-2"> </span><span class="hl-3">true</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">title:</span><span class="hl-2"> </span><span class="hl-6">&quot;List of commands&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">usage:</span><span class="hl-2"> </span><span class="hl-6">&quot;[command name]&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">description:</span><span class="hl-2"> </span><span class="hl-6">&quot;Show all commands available to use in my fantastic Discord bot.&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">bottomText:</span><span class="hl-2"> </span><span class="hl-6">&quot;Hello World&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">color:</span><span class="hl-2"> </span><span class="hl-6">&quot;#0055ff&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">visible:</span><span class="hl-2"> </span><span class="hl-3">false</span><span class="hl-2">,</span><br/><span class="hl-2"> },</span><br/><span class="hl-2">});</span>
</code></pre>
<ol start="7">
<li>Create and add commands to the <em>Bot</em> instance (see <a href="#commands">Commands</a>)</li>
<li>Start your bot</li>
</ol>
<pre><code class="language-javascript"><span class="hl-1">bot</span><span class="hl-2">.</span><span class="hl-5">start</span><span class="hl-2">(</span><br/><span class="hl-2"> </span><span class="hl-1">port</span><span class="hl-2">, </span><span class="hl-0">// If passed, the application will create a HTTP server [type: number (integer)]</span><br/><span class="hl-2"> </span><span class="hl-3">true</span><span class="hl-2"> </span><span class="hl-0">// If true or undefined, the app will register all slash commands in the Discord API [type: boolean]</span><br/><span class="hl-2">);</span>
<pre><code class="language-typescript"><span class="hl-1">bot</span><span class="hl-2">.</span><span class="hl-5">start</span><span class="hl-2">(</span><br/><span class="hl-2"> </span><span class="hl-1">port</span><span class="hl-2">, </span><span class="hl-0">// If passed, the application will create a HTTP server [type: number (integer)]</span><br/><span class="hl-2"> </span><span class="hl-3">true</span><span class="hl-2"> </span><span class="hl-0">// If true or undefined, the app will register all slash commands in the Discord API [type: boolean]</span><br/><span class="hl-2">);</span>
</code></pre>
<blockquote>
<p><strong>WARNING!</strong> All commands have to be added to the instance <strong>before starting the bot</strong>. Adding commands while the bot is running is not possible and can cause issues.</p>
@@ -135,7 +136,7 @@
<li><a href="https://grz4na.github.io/CommandBot/interfaces/ContextMenuCommandInit.html">MESSAGE</a> - right-click context menu interactions on messages</li>
</ul>
<p>Chat command example:</p>
<pre><code class="language-javascript"><span class="hl-1">bot</span><span class="hl-2">.</span><span class="hl-1">commands</span><span class="hl-2">.</span><span class="hl-5">add</span><span class="hl-2">(</span><span class="hl-6">&quot;CHAT&quot;</span><span class="hl-2">, {</span><br/><span class="hl-2"> </span><span class="hl-1">name:</span><span class="hl-2"> </span><span class="hl-6">&quot;greet&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">parameters:</span><span class="hl-2"> [</span><br/><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-1">name:</span><span class="hl-2"> </span><span class="hl-6">&quot;user&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">description:</span><span class="hl-2"> </span><span class="hl-6">&quot;User to greet&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">optional:</span><span class="hl-2"> </span><span class="hl-3">false</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">type:</span><span class="hl-2"> </span><span class="hl-6">&quot;user&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> },</span><br/><span class="hl-2"> ],</span><br/><span class="hl-2"> </span><span class="hl-1">aliases:</span><span class="hl-2"> [</span><span class="hl-6">&quot;hello&quot;</span><span class="hl-2">],</span><br/><span class="hl-2"> </span><span class="hl-1">description:</span><span class="hl-2"> </span><span class="hl-6">&quot;Welcome someone to your server&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">usage:</span><span class="hl-2"> </span><span class="hl-6">&quot;[user]&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">dm:</span><span class="hl-2"> </span><span class="hl-3">false</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">guilds:</span><span class="hl-2"> [</span><span class="hl-6">&quot;123456789874561230&quot;</span><span class="hl-2">],</span><br/><span class="hl-2"> </span><span class="hl-1">slash:</span><span class="hl-2"> </span><span class="hl-3">true</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">visible:</span><span class="hl-2"> </span><span class="hl-3">true</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">permissions:</span><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-1">resolvable:</span><span class="hl-2"> [</span><span class="hl-6">&quot;ADMINISTRATOR&quot;</span><span class="hl-2">],</span><br/><span class="hl-2"> </span><span class="hl-1">checkType:</span><span class="hl-2"> </span><span class="hl-6">&quot;ANY&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> },</span><br/><span class="hl-2"> </span><span class="hl-5">function</span><span class="hl-1">:</span><span class="hl-2"> </span><span class="hl-3">async</span><span class="hl-2"> (</span><span class="hl-1">i</span><span class="hl-2">) </span><span class="hl-3">=&gt;</span><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-3">const</span><span class="hl-2"> </span><span class="hl-4">user</span><span class="hl-2"> = </span><span class="hl-7">await</span><span class="hl-2"> </span><span class="hl-1">i</span><span class="hl-2">.</span><span class="hl-5">get</span><span class="hl-2">(</span><span class="hl-6">&quot;user&quot;</span><span class="hl-2">).</span><span class="hl-5">toObject</span><span class="hl-2">();</span><br/><span class="hl-2"> </span><span class="hl-7">return</span><span class="hl-2"> </span><span class="hl-6">`Hello </span><span class="hl-3">${</span><span class="hl-1">user</span><span class="hl-8">.</span><span class="hl-5">toString</span><span class="hl-8">()</span><span class="hl-3">}</span><span class="hl-6">`</span><span class="hl-2">;</span><br/><span class="hl-2"> },</span><br/><span class="hl-2">});</span>
<pre><code class="language-typescript"><span class="hl-1">bot</span><span class="hl-2">.</span><span class="hl-1">commands</span><span class="hl-2">.</span><span class="hl-5">add</span><span class="hl-2">(</span><span class="hl-6">&quot;CHAT&quot;</span><span class="hl-2">, {</span><br/><span class="hl-2"> </span><span class="hl-1">name:</span><span class="hl-2"> </span><span class="hl-6">&quot;greet&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">parameters:</span><span class="hl-2"> [</span><br/><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-1">name:</span><span class="hl-2"> </span><span class="hl-6">&quot;user&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">description:</span><span class="hl-2"> </span><span class="hl-6">&quot;User to greet&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">optional:</span><span class="hl-2"> </span><span class="hl-3">false</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">type:</span><span class="hl-2"> </span><span class="hl-6">&quot;user&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> },</span><br/><span class="hl-2"> ],</span><br/><span class="hl-2"> </span><span class="hl-1">aliases:</span><span class="hl-2"> [</span><span class="hl-6">&quot;hello&quot;</span><span class="hl-2">],</span><br/><span class="hl-2"> </span><span class="hl-1">description:</span><span class="hl-2"> </span><span class="hl-6">&quot;Welcome someone to your server&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">usage:</span><span class="hl-2"> </span><span class="hl-6">&quot;[user]&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">dm:</span><span class="hl-2"> </span><span class="hl-3">false</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">guilds:</span><span class="hl-2"> [</span><span class="hl-6">&quot;123456789874561230&quot;</span><span class="hl-2">],</span><br/><span class="hl-2"> </span><span class="hl-1">slash:</span><span class="hl-2"> </span><span class="hl-3">true</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">visible:</span><span class="hl-2"> </span><span class="hl-3">true</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">permissions:</span><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-1">resolvable:</span><span class="hl-2"> [</span><span class="hl-6">&quot;ADMINISTRATOR&quot;</span><span class="hl-2">],</span><br/><span class="hl-2"> </span><span class="hl-1">checkType:</span><span class="hl-2"> </span><span class="hl-6">&quot;ANY&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> },</span><br/><span class="hl-2"> </span><span class="hl-5">function</span><span class="hl-1">:</span><span class="hl-2"> </span><span class="hl-3">async</span><span class="hl-2"> (</span><span class="hl-1">i</span><span class="hl-2">) </span><span class="hl-3">=&gt;</span><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-3">const</span><span class="hl-2"> </span><span class="hl-4">user</span><span class="hl-2"> = </span><span class="hl-7">await</span><span class="hl-2"> </span><span class="hl-1">i</span><span class="hl-2">.</span><span class="hl-5">get</span><span class="hl-2">(</span><span class="hl-6">&quot;user&quot;</span><span class="hl-2">).</span><span class="hl-5">toObject</span><span class="hl-2">();</span><br/><span class="hl-2"> </span><span class="hl-7">return</span><span class="hl-2"> </span><span class="hl-6">`Hello </span><span class="hl-3">${</span><span class="hl-1">user</span><span class="hl-8">.</span><span class="hl-5">toString</span><span class="hl-8">()</span><span class="hl-3">}</span><span class="hl-6">`</span><span class="hl-2">;</span><br/><span class="hl-2"> },</span><br/><span class="hl-2">});</span>
</code></pre>
<p>Command function schema is defined <strong><a href="https://grz4na.github.io/CommandBot/modules.html#CommandFunction">here</a></strong></p>
@@ -157,7 +158,7 @@
</a>
<p>Pass a list of <em><a href="https://grz4na.github.io/CommandBot/interfaces/ParameterSchema.html">ParameterSchema</a></em> objects to <em><a href="https://grz4na.github.io/CommandBot/interfaces/ChatCommandInit.html#parameters">parameters</a></em> property</p>
<p>Example parameter object:</p>
<pre><code class="language-javascript"><span class="hl-2">{</span><br/><span class="hl-2"> </span><span class="hl-9">name</span><span class="hl-2">: </span><span class="hl-6">&quot;user&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-9">description</span><span class="hl-2">: </span><span class="hl-6">&quot;User to mention&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-9">optional</span><span class="hl-2">: </span><span class="hl-3">false</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-9">type</span><span class="hl-2">: </span><span class="hl-6">&quot;user&quot;</span><br/><span class="hl-2">}</span>
<pre><code class="language-typescript"><span class="hl-2">{</span><br/><span class="hl-2"> </span><span class="hl-9">name</span><span class="hl-2">: </span><span class="hl-6">&quot;user&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-9">description</span><span class="hl-2">: </span><span class="hl-6">&quot;User to mention&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-9">optional</span><span class="hl-2">: </span><span class="hl-3">false</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-9">type</span><span class="hl-2">: </span><span class="hl-6">&quot;user&quot;</span><br/><span class="hl-2">}</span>
</code></pre>
<a href="#reading-input-value" id="reading-input-value" style="color: inherit; text-decoration: none;">
@@ -165,7 +166,14 @@
</a>
<p>To read parameter values use <em><a href="https://grz4na.github.io/CommandBot/classes/InputManager.html#get">InputManager.prototype.get()</a></em> (passed in the first argument of a command function)</p>
<p>Example:</p>
<pre><code class="language-javascript"><span class="hl-3">function</span><span class="hl-2">: (</span><span class="hl-1">i</span><span class="hl-2">) </span><span class="hl-3">=&gt;</span><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-10">const</span><span class="hl-2"> </span><span class="hl-1">userObj</span><span class="hl-2"> = </span><span class="hl-1">i</span><span class="hl-2">.</span><span class="hl-5">get</span><span class="hl-2">(</span><span class="hl-6">&#39;member&#39;</span><span class="hl-2">, </span><span class="hl-6">&#39;user&#39;</span><span class="hl-2">)</span><br/><span class="hl-2"> </span><span class="hl-5">if</span><span class="hl-2">(</span><span class="hl-1">userObj</span><span class="hl-2">) {</span><br/><span class="hl-2"> </span><span class="hl-3">const</span><span class="hl-2"> </span><span class="hl-4">user</span><span class="hl-2"> = </span><span class="hl-1">userObj</span><span class="hl-2">.</span><span class="hl-5">toObject</span><span class="hl-2">();</span><br/><span class="hl-2"> </span><span class="hl-7">if</span><span class="hl-2">(</span><span class="hl-1">user</span><span class="hl-2">) {</span><br/><span class="hl-2"> </span><span class="hl-7">return</span><span class="hl-2"> </span><span class="hl-6">`Hello, </span><span class="hl-3">${</span><span class="hl-1">user</span><span class="hl-8">.</span><span class="hl-5">toString</span><span class="hl-8">()</span><span class="hl-3">}</span><span class="hl-6">`</span><br/><span class="hl-2"> }</span><br/><span class="hl-2"> </span><span class="hl-7">else</span><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-7">throw</span><span class="hl-2"> </span><span class="hl-3">new</span><span class="hl-2"> </span><span class="hl-10">Error</span><span class="hl-2">(</span><span class="hl-6">&#39;User not found&#39;</span><span class="hl-2">)</span><br/><span class="hl-2"> }</span><br/><span class="hl-2"> }</span><br/><span class="hl-2">}</span>
<pre><code class="language-typescript"><span class="hl-3">function</span><span class="hl-2">: (</span><span class="hl-1">i</span><span class="hl-2">) </span><span class="hl-3">=&gt;</span><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-10">const</span><span class="hl-2"> </span><span class="hl-1">userObj</span><span class="hl-2"> = </span><span class="hl-1">i</span><span class="hl-2">.</span><span class="hl-5">get</span><span class="hl-2">(</span><span class="hl-6">&#39;member&#39;</span><span class="hl-2">, </span><span class="hl-6">&#39;user&#39;</span><span class="hl-2">)</span><br/><span class="hl-2"> </span><span class="hl-5">if</span><span class="hl-2">(</span><span class="hl-1">userObj</span><span class="hl-2">) {</span><br/><span class="hl-2"> </span><span class="hl-3">const</span><span class="hl-2"> </span><span class="hl-4">user</span><span class="hl-2"> = </span><span class="hl-1">userObj</span><span class="hl-2">.</span><span class="hl-5">toObject</span><span class="hl-2">();</span><br/><span class="hl-2"> </span><span class="hl-7">if</span><span class="hl-2">(</span><span class="hl-1">user</span><span class="hl-2">) {</span><br/><span class="hl-2"> </span><span class="hl-7">return</span><span class="hl-2"> </span><span class="hl-6">`Hello, </span><span class="hl-3">${</span><span class="hl-1">user</span><span class="hl-8">.</span><span class="hl-5">toString</span><span class="hl-8">()</span><span class="hl-3">}</span><span class="hl-6">`</span><br/><span class="hl-2"> }</span><br/><span class="hl-2"> </span><span class="hl-7">else</span><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-7">throw</span><span class="hl-2"> </span><span class="hl-3">new</span><span class="hl-2"> </span><span class="hl-10">Error</span><span class="hl-2">(</span><span class="hl-6">&#39;User not found&#39;</span><span class="hl-2">)</span><br/><span class="hl-2"> }</span><br/><span class="hl-2"> }</span><br/><span class="hl-2">}</span>
</code></pre>
<a href="#subcommands" id="subcommands" style="color: inherit; text-decoration: none;">
<h2>Subcommands</h2>
</a>
<p>To create a subcommand create a standard chat command and use <em><a href="https://grz4na.github.io/CommandBot/classes/ChatCommand.html#append">ChatCommand.prototype.append</a></em> method to create and attach subcommands or subcommand groups. To add subcommands to groups use <em><a href="https://grz4na.github.io/CommandBot/classes/SubCommandGroup.html#append">SubCommandGroup.prototype.append</a></em>.</p>
<pre><code class="language-typescript"><span class="hl-0">// Create a chat command</span><br/><span class="hl-3">const</span><span class="hl-2"> </span><span class="hl-4">cmd</span><span class="hl-2"> = </span><span class="hl-1">bot</span><span class="hl-2">.</span><span class="hl-1">commands</span><span class="hl-2">.</span><span class="hl-5">add</span><span class="hl-2">(</span><span class="hl-6">&quot;CHAT&quot;</span><span class="hl-2">, {</span><br/><span class="hl-2"> </span><span class="hl-1">name:</span><span class="hl-2"> </span><span class="hl-6">&quot;parent&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">slash:</span><span class="hl-2"> </span><span class="hl-3">true</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">description:</span><span class="hl-2"> </span><span class="hl-6">&quot;This is a parent&quot;</span><span class="hl-2">,</span><br/><span class="hl-2">});</span><br/><br/><span class="hl-0">// Create and append a subcommand</span><br/><span class="hl-1">cmd</span><span class="hl-2">.</span><span class="hl-5">append</span><span class="hl-2">(</span><span class="hl-6">&quot;COMMAND&quot;</span><span class="hl-2">, {</span><br/><span class="hl-2"> </span><span class="hl-1">name:</span><span class="hl-2"> </span><span class="hl-6">&quot;child&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">description:</span><span class="hl-2"> </span><span class="hl-6">&quot;This is a subcommand&quot;</span><span class="hl-2">,</span><br/><span class="hl-2">});</span><br/><br/><span class="hl-0">// Create and append a subcommand group</span><br/><span class="hl-3">const</span><span class="hl-2"> </span><span class="hl-4">group</span><span class="hl-2"> = </span><span class="hl-1">cmd</span><span class="hl-2">.</span><span class="hl-5">append</span><span class="hl-2">(</span><span class="hl-6">&quot;GROUP&quot;</span><span class="hl-2">, {</span><br/><span class="hl-2"> </span><span class="hl-1">name:</span><span class="hl-2"> </span><span class="hl-6">&quot;command_group&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">description:</span><span class="hl-2"> </span><span class="hl-6">&quot;This is a subcommand group&quot;</span><span class="hl-2">,</span><br/><span class="hl-2">});</span><br/><br/><span class="hl-0">// Add a subcommand to the group</span><br/><span class="hl-1">group</span><span class="hl-2">.</span><span class="hl-5">append</span><span class="hl-2">({</span><br/><span class="hl-2"> </span><span class="hl-1">name:</span><span class="hl-2"> </span><span class="hl-6">&quot;group_command&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">description:</span><span class="hl-2"> </span><span class="hl-6">&quot;This is a subcommand that is a child of the command_group&quot;</span><span class="hl-2">,</span><br/><span class="hl-2">});</span>
</code></pre>
<a href="#events" id="events" style="color: inherit; text-decoration: none;">