|
2 | 2 | <a href="#discordjs---diy" id="discordjs---diy" style="color: inherit; text-decoration: none;"> |
3 | 3 | <h1>Discord.js - DIY</h1> |
4 | 4 | </a> |
| 5 | +<p><a href=""><img src="https://img.shields.io/npm/v/discordjs-diy" alt="npm"></a></p> |
5 | 6 | <p>Easy to use, do-it-yourself Discord.js mini-framework</p> |
6 | 7 | <p>You can find <a href="https://ianeli1.github.io/discordjs-diy/">the full reference wiki here.</a></p> |
7 | 8 |
|
@@ -60,6 +61,31 @@ <h3>Using embeds</h3> |
60 | 61 | <pre><code class="language-ts"><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">embed</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">Embed</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-2">author:</span><span class="hl-1"> </span><span class="hl-2">bot</span><span class="hl-1">.</span><span class="hl-2">user</span><span class="hl-1">,</span><br/><span class="hl-1">});</span><br/><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">bot</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">Bot</span><span class="hl-1">(</span><span class="hl-3">"<token>"</span><span class="hl-1">, { </span><span class="hl-2">prefix:</span><span class="hl-1"> </span><span class="hl-3">"!"</span><span class="hl-1">, </span><span class="hl-2">embed</span><span class="hl-1"> });</span><br/><span class="hl-2">bot</span><span class="hl-1">.</span><span class="hl-6">registerAction</span><span class="hl-1">(</span><span class="hl-3">"test"</span><span class="hl-1">, ({ </span><span class="hl-2">args</span><span class="hl-1">, </span><span class="hl-2">createEmbed</span><span class="hl-1"> }) </span><span class="hl-4">=></span><br/><span class="hl-1"> </span><span class="hl-6">createEmbed</span><span class="hl-1">({ </span><span class="hl-2">desc:</span><span class="hl-1"> </span><span class="hl-2">args</span><span class="hl-1"> })</span><br/><span class="hl-1">);</span> |
61 | 62 | </code></pre> |
62 | 63 |
|
| 64 | +<a href="#handling-typos" id="handling-typos" style="color: inherit; text-decoration: none;"> |
| 65 | + <h3>Handling typos</h3> |
| 66 | +</a> |
| 67 | +<p>Your users can be overwhelmed and confused by your bot's syntax. To aid them in the process, djs-diy offers a way to immediately point out which options they might have meant to type instead.</p> |
| 68 | +<pre><code class="language-ts"><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">bot</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">Bot</span><span class="hl-1">(</span><span class="hl-3">"<token>"</span><span class="hl-1">, { </span><span class="hl-2">prefix:</span><span class="hl-1"> </span><span class="hl-3">"!"</span><span class="hl-1">, </span><span class="hl-2">embed</span><span class="hl-1"> });</span><br/><span class="hl-2">bot</span><span class="hl-1">.</span><span class="hl-6">on</span><span class="hl-1">(</span><span class="hl-3">"test"</span><span class="hl-1">, </span><span class="hl-3">"hi there!"</span><span class="hl-1">);</span><br/><span class="hl-2">bot</span><span class="hl-1">.</span><span class="hl-6">onTypo</span><span class="hl-1">(</span><br/><span class="hl-1"> ({ </span><span class="hl-2">author</span><span class="hl-1"> }, [</span><span class="hl-2">first</span><span class="hl-1">, ...</span><span class="hl-2">rest</span><span class="hl-1">]) </span><span class="hl-4">=></span><br/><span class="hl-1"> </span><span class="hl-3">`Hey there, </span><span class="hl-4">${</span><br/><span class="hl-9"> </span><span class="hl-2">author</span><span class="hl-9">.</span><span class="hl-2">username</span><br/><span class="hl-9"> </span><span class="hl-4">}</span><span class="hl-3">! Did you mean to type !</span><span class="hl-4">${</span><span class="hl-2">first</span><span class="hl-4">}</span><span class="hl-3">? Other options: </span><span class="hl-4">${</span><span class="hl-2">rest</span><span class="hl-9">.</span><span class="hl-6">join</span><span class="hl-9">(</span><span class="hl-3">", "</span><span class="hl-9">)</span><span class="hl-4">}</span><span class="hl-3">`</span><br/><span class="hl-1">);</span> |
| 69 | +</code></pre> |
| 70 | +<p><code>Bot#onTypo</code> can set a callback for an scenario where an user types "tsst" or something similar as any other trigger. |
| 71 | +Should be noted that onTypo is available router-wise and will always attempt to fetch a callback from any parent router (incluiding the Bot object's)</p> |
| 72 | +<p><code>onTypo</code> can take a second argument in the form of an object</p> |
| 73 | +<pre><code class="language-ts"><span class="hl-1">{</span><br/><span class="hl-1"> </span><span class="hl-11">maxDistance</span><span class="hl-1">: </span><span class="hl-2">number</span><span class="hl-1"> </span><br/><span class="hl-1"> </span><span class="hl-11">maxSuggestions</span><span class="hl-1">: </span><span class="hl-2">number</span><br/><span class="hl-1">}</span> |
| 74 | +</code></pre> |
| 75 | +<p><code>maxDistance</code>: Maximum <a href="https://en.wikipedia.org/wiki/Levenshtein_distance">Levenshtein distance</a> allowed |
| 76 | +<code>maxSuggestions</code>: Max amount of suggestions to be provided to the callback</p> |
| 77 | + |
| 78 | +<a href="#routing" id="routing" style="color: inherit; text-decoration: none;"> |
| 79 | + <h3>Routing</h3> |
| 80 | +</a> |
| 81 | +<p>Sometimes you may want a command to contain a subcommand. This is where routers come in. To use them, create a new Router object then assign commands to it. Finally assign it as an action in your main <code>Bot</code> object. Don't worry about the constructor parameters, they'll be filled in for you.</p> |
| 82 | +<pre><code class="language-ts"><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">bot</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">Bot</span><span class="hl-1">(</span><span class="hl-3">"<token>"</span><span class="hl-1">, { </span><span class="hl-2">prefix:</span><span class="hl-1"> </span><span class="hl-3">"!"</span><span class="hl-1"> });</span><br/><br/><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">helpRouter</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">Router</span><span class="hl-1">();</span><br/><span class="hl-2">helpRouter</span><span class="hl-1">.</span><span class="hl-6">on</span><span class="hl-1">(</span><span class="hl-3">"info"</span><span class="hl-1">, </span><span class="hl-3">"lorem ipsum"</span><span class="hl-1">);</span><br/><br/><span class="hl-2">bot</span><span class="hl-1">.</span><span class="hl-6">on</span><span class="hl-1">(</span><span class="hl-3">"help"</span><span class="hl-1">, </span><span class="hl-2">helpRouter</span><span class="hl-1">);</span><br/><span class="hl-7">//Bot will now respond to `!help info` with "lorem ipsum"</span> |
| 83 | +</code></pre> |
| 84 | +<p>Routers have their own error handling too.</p> |
| 85 | +<pre><code class="language-ts"><span class="hl-2">helpRouter</span><span class="hl-1">.</span><span class="hl-6">onError</span><span class="hl-1">(</span><span class="hl-3">"Oh no!"</span><span class="hl-1">);</span><br/><span class="hl-7">//if any of the commands under help router fail, "Oh no!" will be sent instead</span> |
| 86 | +</code></pre> |
| 87 | +<p>Routers also have full support for slash commands.</p> |
| 88 | + |
63 | 89 | <a href="#expecting-replies" id="expecting-replies" style="color: inherit; text-decoration: none;"> |
64 | 90 | <h3>Expecting replies</h3> |
65 | 91 | </a> |
|
0 commit comments