# overview

{% hint style="info" %}
in the entirety of the docs, we will use brackets to signify content / arguments you need to replace accordingly:\
`[] = required argument || <> = optional argument`
{% endhint %}

![](/files/-MWVCkb2nqBzl2q9r1EW)

### **Mimu is a Discord bot made in hopes to bring extensive functionality and utility; enclosing what we consider the epitome of cuteness overload. Mimu is classy, aesthetic, and adorable, and is bound to touch your heart.**

**with its extensive configuration options and simple style, Mimu brings to you a one-of-a-kind economy system to your Discord server and brings your dreams to reality. Its utilities are packed, made to be user-friendly and for serves to be a cuter currency system.**

**mimu is made efficient and has millions of possibilities for you in accordance to your community's needs.**

[**invite mimu now!** ](https://discord.com/oauth2/authorize?client_id=493716749342998541\&scope=bot%20applications.commands\&permissions=1007021169)**please note that you need either `ADMINISTRATOR` or `MANAGE_SERVER` permissions to be able to add Mimu to a server.**

**mimu utilizes Discord's integration system (slash commands), so we recommend viewing** [**this guide**](https://discord.com/blog/slash-commands-permissions-discord-apps-bots) **on fixing your server permissions in order to properly use all of mimu's commands and features.**


# command list

{% hint style="warning" %}
this page is unfinished and in progress. sorry for the mess - information may be missing.
{% endhint %}

{% hint style="info" %}
in the entirety of the docs, we will use brackets to signify content / arguments you need to replace accordingly:\
`[] = required argument || <> = optional argument`
{% endhint %}

## ♡ server currency system

for a clearer guide on setting up the currency system, we recommend:

{% content-ref url="/pages/-LjUVwPqRp2-j-emMuDA" %}
[Currency System](/currency-system/getting-started)
{% endcontent-ref %}

<table><thead><tr><th width="164">command</th><th width="254">example usage</th><th>description</th></tr></thead><tbody><tr><td><strong><code>/balance &#x3C;@user></code></strong></td><td><strong>/balance</strong><br><strong>/balance</strong> <code>user:@iara</code></td><td>checks yours, or someone else's balance</td></tr><tr><td><strong><code>/pet &#x3C;@user> &#x3C;remind: true/false></code></strong></td><td><p><strong>/pet</strong><br><strong>/pet</strong> <code>user:@iara</code> </p><p><strong>/pet</strong> <code>remind: true</code></p></td><td>pet mimu for server currency<br><em>ping another user to automatically give the obtained currency to them. optional "remind" option to remind when cooldown is up.</em></td></tr><tr><td><strong><code>/snuggle &#x3C;@user> &#x3C;remind:true/false></code></strong></td><td><strong>/snuggle</strong><br><strong>/snuggle</strong> <code>user:@iara</code></td><td>snuggle mimu for server currency<br><em>ping another user to automatically give the obtained currency to them. optional "remind" option to remind when cooldown is up.</em></td></tr><tr><td><strong><code>/clickcake</code></strong></td><td><strong>/clickcake</strong></td><td>click a marshmallow within a timeframe for server currency</td></tr><tr><td><strong><code>/coinflip &#x3C;guess: heads/tails> &#x3C;bet:value #></code></strong></td><td><strong>/coinflip</strong><br><strong>/coinflip</strong> <code>guess: heads</code> <code>bet: 10</code></td><td>flip a coin. optionally, gambles a certain sum of money on heads / tails to make double or nothing</td></tr><tr><td><strong><code>/rolldice [bet:value #]</code></strong></td><td><strong>/rolldice</strong> <code>bet:10</code></td><td>gambles a given sum of money; getting more than 64 lets you earn the amount bet, more than 90 lets you earn 3x, and 100 lets you earn 9x; otherwise, you lose the amount you bet</td></tr><tr><td><strong><code>/slots [bet:value #]</code></strong></td><td><strong>/slots</strong> <code>bet:100</code></td><td>gambles a given sum of money; depending on the number of matches, you will lose/gain currency</td></tr><tr><td><strong><code>/leaderboard &#x3C;page: value #></code></strong></td><td><strong>/leaderboard</strong><br><strong>/leaderboard</strong> <code>page: 5</code></td><td>view server currency leaderboard</td></tr><tr><td><strong><code>/give currency [@user] [amount #]</code></strong></td><td><strong>/give currency</strong> <code>user: @iara</code> <code>amount: 10</code></td><td>gives server currency to another user</td></tr><tr><td><strong><code>/give item [@user] [item]</code></strong></td><td><strong>/give item</strong> <code>user: @iara</code> <code>item:apple</code></td><td>gives a server item to another user. only works if the item is <code>giftable</code></td></tr><tr><td><strong><code>/shop view &#x3C;page #></code></strong></td><td><strong>/shop view</strong><br><strong>/shop view</strong> <code>page: 2</code></td><td>view the server's shop, if applicable -server admins can add to the shop with <code>/shop add</code>. <em>optionally, view a specific shop page.</em></td></tr><tr><td><strong><code>/shop buy [item] &#x3C;amount #></code></strong></td><td><strong>/shop buy</strong> <code>item: flowers</code><br><strong>/shop buy</strong> <code>item: grape</code> <code>amount: 10</code></td><td>buy an item from the server's shop. optionally, choose the amount you'd like to buy.</td></tr><tr><td><strong><code>/drop [amount #]</code></strong></td><td><strong>/drop</strong> <code>amount: 100</code></td><td>drop a certain amount of server currency in the channel listed</td></tr><tr><td><strong><code>/pick &#x3C;code></code></strong></td><td>/pick <code>code: eT1a</code></td><td>pick up the currency dropped in the channel. optionally insert code if <code>pickhard</code> is turned on.</td></tr></tbody></table>

## ♡ server manager commands (requires 'manage server' permissions)

<table><thead><tr><th width="167">command</th><th width="251">example usage</th><th>description</th></tr></thead><tbody><tr><td><strong><code>/event start [#channel] [amount] &#x3C;label> &#x3C;description></code></strong></td><td><strong>/event start <code>channel:#giveaways amount:100 label:click here description:click the button to receive 100 monies!</code></strong></td><td>starts an event in a channel in which users who click the button receive the predetermined amount of currency. users can only claim from an event once.</td></tr><tr><td><strong><code>/event end [#channel]</code></strong></td><td><strong>/event end <code>channel:#giveaways</code></strong></td><td>ends a started event- users will no longer be able to collect currency from the event.</td></tr><tr><td><strong><code>/modifybal add [@user] [amount #]</code></strong></td><td><strong>/modifybal add <code>user:@iara amount:100</code></strong></td><td>adds a specified amount of currency to a specified user</td></tr><tr><td><strong><code>/modifybal remove [@user] [amount #]</code></strong></td><td><strong>/modifybal remove <code>user:@iara amount:100</code></strong></td><td>removes a specified amount of currency from a specified user</td></tr><tr><td><strong><code>/settings &#x3C;group></code></strong></td><td><strong>/settings</strong><br><strong>/settings <code>group:deny commands</code></strong></td><td>displays current settings and editable options</td></tr><tr><td><strong><code>/set currency [symbol]</code></strong></td><td><strong>/set currency <code>symbol::donut:</code></strong></td><td>sets the server currency to a different symbol</td></tr><tr><td><strong><code>/set currency start [amount #]</code></strong></td><td><strong>/set currency start <code>amount:500</code></strong></td><td>sets a specified amount of currency to be added to a user when they join the server</td></tr><tr><td><strong><code>/set currency onleave [save/delete]</code></strong></td><td><strong>/set currency onleave <code>enable_save:save currency</code></strong><br><br><strong>/set currency onleave <code>enable_save:delete currency</code></strong></td><td>sets whether a member's server currency is saved if/when they leave the server</td></tr><tr><td><strong><code>/set currency pet &#x3C;# minutes> &#x3C;# amount min> &#x3C;# amount max></code></strong></td><td><strong>/set currency pet <code>cooldown:30 min:10 max:100</code></strong><br><br><strong>/set currency pet <code>min:20</code></strong></td><td>sets the cooldown, minimum amount, and/or maximum amount for the /pet command</td></tr><tr><td><strong><code>/set currency snuggle &#x3C;# minutes> &#x3C;# amount min> &#x3C;# amount max></code></strong></td><td><strong>/set currency snuggle <code>cooldown:60 min:100 max:500</code></strong><br><br><strong>/set currency snuggle <code>max:1000</code></strong></td><td>sets the cooldown, minimum amount, and/or maximum amount for the /snuggle command</td></tr><tr><td><strong><code>/set currency clickcake &#x3C;# minutes> &#x3C;# amount></code></strong></td><td><strong>/set currency clickcake <code>cooldown:15 amount:2</code></strong></td><td>sets the cooldown and/or amount earned per click for the /clickcake command</td></tr><tr><td><strong><code>/set currency bet &#x3C;# amount min> &#x3C;# amount max></code></strong></td><td><strong>/set currency bet <code>min:5 max:25</code></strong></td><td>sets the min and/or max amount of currency that can be bet in gambling commands</td></tr><tr><td><strong><code>/set currency transfer &#x3C;# amount min> &#x3C;# amount max> &#x3C;# amount tax></code></strong></td><td><strong>/set currency transfer <code>min:10 max:100 tax:10</code></strong><br><br><strong>/set currency transfer <code>tax:5</code></strong></td><td>sets the min, max, and/or tax amount for the /give currency command</td></tr><tr><td><strong><code>/set pick channels</code></strong></td><td><strong>/set pick channels</strong></td><td>sends an interactive dropdown menu that allows you to add/remove channels where /pick is spawned</td></tr><tr><td><strong><code>/set pick settings min:&#x3C;min # amount> max:&#x3C;max # amount> speed:&#x3C;very fast/fast/medium/slow/very slow> type:&#x3C;multiple/only first person> hard:&#x3C;code/no code></code></strong></td><td><strong>/set pick settings <code>min:1 max:10 speed:medium type:multiple people can /pick per drop hard:requires a code</code></strong><br><br><strong>/set pick settings <code>speed:very fast</code></strong></td><td>sets the min, max, speed, type, and/or code for /pick command.</td></tr><tr><td><strong><code>/reset user balance [user]</code></strong></td><td><strong>/reset user balance <code>user:@iara</code></strong></td><td>resets the server balance for a specified user</td></tr><tr><td><strong><code>/reset user inventory [user]</code></strong></td><td><strong>/reset user inventory <code>user:@iara</code></strong></td><td>resets the server inventory for a specified user</td></tr><tr><td><strong><code>/reset server inventories</code></strong></td><td><strong>/reset server inventories</strong></td><td>resets all server inventories for all users</td></tr><tr><td><strong><code>/reset server balances</code></strong></td><td><strong>/reset server balances</strong></td><td>resets all server balances for all users</td></tr><tr><td><strong><code>/reset server shop</code></strong></td><td><strong>/reset server shop</strong></td><td>resets the server's /shop and items within in</td></tr><tr><td><strong><code>/reset server events</code></strong></td><td><strong>/reset server events</strong></td><td>resets all currently running events within the server</td></tr></tbody></table>

## ♡ custom commands, autoresponder & embed system (requires 'manage server' permissions)

for an intuitive guide on these, we recommend checking out:

{% content-ref url="/pages/-MWRVBw3I9FMK90Ua4Fh" %}
[autoresponder](/autoresponder/your-first-autoresponder)
{% endcontent-ref %}

{% content-ref url="/pages/ElnTSfPz2oY8QjQMqP53" %}
[embeds](/embeds/your-first-embed)
{% endcontent-ref %}

<table><thead><tr><th width="181">command</th><th width="262">example usage</th><th>description</th></tr></thead><tbody><tr><td><strong><code>/embed list</code></strong></td><td><strong>/embed list</strong></td><td>lists the server's created embeds</td></tr><tr><td><strong><code>/embed create [embed name]</code></strong></td><td><strong>/embed create <code>name:greet</code></strong></td><td>creates a new embed &#x26; corresponding text modal to edit the embed's fields.<br><strong>note:</strong> non-premium servers have an embed limit of 5, while premium servers are allowed up to 150 embeds.</td></tr><tr><td><strong><code>/embed edit author [embed name] &#x3C;text>&#x3C;icon></code></strong></td><td><strong>/embed edit author <code>embed:greet text:{user_name} icon:{user_avatar}</code></strong></td><td>edits the embed's author text and/or icon fields</td></tr><tr><td><strong><code>/embed edit footer [embed name] &#x3C;text>&#x3C;icon></code></strong></td><td><strong>/embed edit footer<code>embed:greet text:member number {server_membercount} icon:{server_icon}</code></strong></td><td>edits the embed's footer text and/or icon fields</td></tr><tr><td><strong><code>/embed edit title [embed name] &#x3C;text></code></strong></td><td><strong>/embed edit title <code>name:greet title:welcome to {server_name}</code></strong></td><td>edits the embed's title field</td></tr><tr><td><strong><code>/embed edit description [embed name] &#x3C;text></code></strong></td><td><strong>/embed edit description <code>name:greet description:hiii {newline} read #rules {newline} make an #intro</code></strong> </td><td>edits the embed's description field<br><strong>note:</strong> desktop users are unable to create new lines within slash commands. as a workaround, use {newline} where a new line is desired.</td></tr><tr><td><strong><code>/embed edit thumbnail [embed name] &#x3C;text></code></strong></td><td><strong>/embed edit thumbnail <code>name:greet image:</code></strong><a href="https://cdn.mimu.bot/Mimu6.png"><strong><code>https://cdn.mimu.bot/Mimu6.png</code></strong></a></td><td>edits the embed's thumbnail image</td></tr><tr><td><strong><code>/embed edit image [embed name] &#x3C;text></code></strong></td><td><strong>/embed edit image <code>name:greet image:</code></strong><a href="https://media.discordapp.net/attachments/832971700495843368/1173688108131307631/IMG_7693.jpg?ex=6564dd3b&#x26;is=6552683b&#x26;hm=a385874c38a80ae8c2830a2a88ad11432f8d958650264d5aba95a2043ed2b087&#x26;"><strong><code>https://media.discordapp.net/attachments/832971700495843368/1173688108131307631/IMG_7693.jpg?ex=6564dd3b&#x26;is=6552683b&#x26;hm=a385874c38a80ae8c2830a2a88ad11432f8d958650264d5aba95a2043ed2b087&#x26;</code></strong></a></td><td>edits the embed's main image</td></tr><tr><td><strong><code>/embed edit color [embed name] &#x3C;color></code></strong></td><td><strong>/embed edit color <code>name:greet color:#c0eeff</code></strong></td><td>edit's the embed's color field to a valid hexcode</td></tr><tr><td><strong><code>/embed edit all [embed name]</code></strong></td><td><strong>/embed edit all <code>name:greet</code></strong></td><td>brings up the editing options as buttons, similar to embed create</td></tr><tr><td><strong><code>/embed show [embed name]</code></strong></td><td><strong>/embed show <code>name:greet</code></strong></td><td>previews the embed</td></tr><tr><td><strong><code>/autoresponder add [trigger] [reply]</code></strong></td><td><strong>/autoresponder add <code>trigger:hi reply:hello there!</code></strong></td><td>adds an autoresponder to the server</td></tr><tr><td><strong><code>/autoresponder editreply [trigger] [reply]</code></strong> </td><td><strong>/autoresponder editreply <code>trigger:hi reply:no, actually- goodbye >:(</code></strong></td><td>edits the autoresponder's reply</td></tr><tr><td><strong><code>/autoresponder editmatchmode [trigger] [matchmode]</code></strong></td><td><strong>/autoresponder editmatchmode <code>trigger:hi matchmode:startswith</code></strong></td><td>edits the matchmode for an autoresponder</td></tr><tr><td><strong><code>/autoresponder show [trigger]</code></strong></td><td><strong>/autoresponder show <code>trigger:hi</code></strong></td><td>previews the current information of the autoresponder</td></tr><tr><td><strong><code>/autoresponder showraw [trigger]</code></strong></td><td><strong>/autoresponder showraw <code>trigger:hi</code></strong></td><td>previews the current reply of the autoresponder</td></tr><tr><td><strong><code>/autoresponder list</code></strong></td><td><strong>/autoresponder list</strong></td><td>shows the list of the server's current autoresponders</td></tr></tbody></table>

## ♡ creating a server shop (requires 'manage server' permission)

for an intuitive guide on these, we recommend checking out:

{% content-ref url="/pages/9RgVyIlryNlaUvQlGeK7" %}
[setting up a server shop](/currency-system/setting-up-a-server-shop)
{% endcontent-ref %}

{% hint style="warning" %}
items already purchased and in a user's inventory **do not change**, even if the shop item is edited. shop item edits apply to the item **when a new purchase is made after the item edit.**
{% endhint %}

| command                                                                                                                  | example usage                                                                                                                                                                        | description                                                                                                                                                                                                                                                                                                        |
| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **`/shop add name:[item name] price:[item price #] stock:[item amount #] role:<@role> description: <item description>`** | <p><strong>/shop add <code>name:bonk price:10 stock:0</code></strong><br><br><strong>/shop add <code>name:cookie price:5 stock:100 description:have a cookie!!</code></strong></p>   | adds an item to the server's **`/shop view,` for infinite stock, use 0.**                                                                                                                                                                                                                                          |
| **`/shop edit name item:[current item name] name:[new item name]`**                                                      | **/shop edit name `item:cookie name:cool cookie`**                                                                                                                                   | edits an existing item's name in **`/shop view`**                                                                                                                                                                                                                                                                  |
| **`/shop edit stock item:[item name] amount:[new stock amount #]`**                                                      | **/shop edit stock `item:cool cookie amount:500`**                                                                                                                                   | edits the existing item's stock in **`/shop view`**                                                                                                                                                                                                                                                                |
| **`/shop edit role item:[item name] role:<@role>`**                                                                      | <p><strong>/shop edit role <code>item:cool cookie role:@cookie</code></strong><br><br><strong>/shop edit role <code>item:chocolate</code></strong> </p>                              | edits the existing item's role given when used. for no role added, don't fill out the **`role:`** field                                                                                                                                                                                                            |
| **`/shop edit requirerole item:[item name] role:<@role>`**                                                               | <p><strong>/shop edit requirerole <code>item:cool cookie role:@cool persom</code></strong><br><br><strong>/shop edit requirerole <code>item:chocolate</code></strong> </p>           | edits the existing item's required role to purchase the item. for no role required, don't fill out the **`role:`** field                                                                                                                                                                                           |
| **`/shop edit removerole item:[item name] role:<@role>`**                                                                | <p><strong>/shop edit removerole <code>item:cool cookie role:@not cool</code></strong><br><br><strong>/shop edit removerole <code>item:chocolate</code></strong> </p>                | edits the existing item's removed role when using the item. for no role removed, don't fill out the **`role:`** field                                                                                                                                                                                              |
| **`/shop edit reply item:[item name] reply:<new item reply>`**                                                           | <p><strong>/shop edit reply <code>item:cool cookie reply:you are now cool!</code></strong><br><br><strong>/shop edit reply <code>item:chocolate</code></strong> </p>                 | edits the existing item's reply when using the item. for no custom reply, don't fill out the **`reply:`** field                                                                                                                                                                                                    |
| **`/shop edit price item:[item name] amount:[new price #]`**                                                             | **/shop edit price `item:cool cookie amount:50`**                                                                                                                                    | edits the existing item's price in **`/shop view`**                                                                                                                                                                                                                                                                |
| **`/shop edit disablegive item:[item name] disabled:[true/false]`**                                                      | <p><strong>/shop edit disablegive <code>item:cool cookie disabled:true</code></strong><br><br><strong>/shop edit disablegive <code>item:chocolate disabled:false</code></strong></p> | <p>edits the existing item's ability to be given (<strong><code>/give item</code></strong>) to someone else.<br>to allow the item to be given, disabled should be set to <strong><code>false</code></strong><br>to disallow the item to be given, disabled should be set to <strong><code>true</code></strong></p> |

## ♡ hotlines, helplines, and crisis resources

<table><thead><tr><th width="179">command</th><th width="271">example usage</th><th>description</th></tr></thead><tbody><tr><td><strong><code>/hotlines online</code></strong></td><td><strong>/hotlines online</strong></td><td>shows you (mostly international) online chat-based resources</td></tr><tr><td><strong><code>/hotlines search [country]</code></strong></td><td><strong>/hotlines search</strong> <code>country: Canada</code></td><td>searches for country-based hotlines and resources</td></tr></tbody></table>

## ♡ server manager settings (requires 'manage server' permissions)

| command                                                     | example usage                                                      | description                                                                                                                                            |
| ----------------------------------------------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **`/reset server all`**                                     | **/reset server all**                                              | <p>resets the server's data for mimu. this includes settings, autoresponders, embeds, etc.<br><strong>note:</strong> this command is irreversible!</p> |
| **`/reset server autoresponders`**                          | **/reset server autoresponders**                                   | resets the server's autoresponders                                                                                                                     |
| **`/reset server embeds`**                                  | **/reset server embeds**                                           | resets the server's embeds                                                                                                                             |
| **`/set custom embedcolor [color]`**                        | **/set custom embedcolor `color:#ffeeff`**                         | sets every embed color that mimu sends, excluding embeds made with /embed create                                                                       |
| **`/set currency confirmbuy [enable_confirm: true/false]`** | **/set misc confirmbuy `enable_confirm:have buying confirmation`** | sets whether a confirmation message is sent after a user buys an item from /shop view                                                                  |
| **`/set currency itemids [enable_devmode: true/false]`**    | **/set misc devmode `enable_devmode:show item ids`**               | sets whether item IDs are shown in /shop view                                                                                                          |
| **`/set greet message <text>`**                             | **/set greet message `message:well hello {user}!`**                | sets the server's greet message for when a user joins the server                                                                                       |
| **`/set greet channel <#channel>`**                         | **/set greet channel `channel:#welcome`**                          | sets the channel for the server's greet messages to send to                                                                                            |
| **`/set leave message <text>`**                             | **/set leave message `message:oh. goodbye then, {user_name}`**     | sets the server's leave message for when a user leaves the server                                                                                      |
| **`/set leave channel <#channel>`**                         | **/set leave channel `channel:#goodbye`**                          | sets the channel for the server's leave messages to send to                                                                                            |
| **`/set boost message <text>`**                             | **/set boost message `message:wow! {user} just boosted us :o`**    | sets the server's boost message for when a user boosts the server                                                                                      |
| **`/set boost channel <#channel>`**                         | **/set boost channel `channel:#boosties`**                         | sets the channel for the server's boost messages to send to                                                                                            |

## ♡ pet caretaking commands (requires a pet)

for more information on pets, we recommend checking out

{% content-ref url="/pages/v40qua7AeuY34wG1FETe" %}
[pets](/global-currency/tickets/pets)
{% endcontent-ref %}

{% content-ref url="/pages/j9wF5gFX4IMLjZdbYPxZ" %}
[taking care of your pet](/global-currency/tickets/pets/taking-care-of-your-pet)
{% endcontent-ref %}

| command                   | example usage                                    | description                                                                                                                                                                                         |
| ------------------------- | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **`/play`**               | **/play**                                        | plays with your pet - requires no happiness, extends both happiness and lifetime                                                                                                                    |
| **`/feed`**               | **/feed**                                        | feeds your pet- requires both food and a relatively high happiness. extends lifetime.                                                                                                               |
| **`/playdate`**           | **/playdate `user:@iara`**                       | playdate with another owner's pet- requires both food and a recommended happiness above 70. extends happiness and lifetime of both pets                                                             |
| **`/cozy`**               | **/cozy `users: @iara @jamie @irene @sil @avi`** | cozy with up to 5 other owners and their pets- requires both food from the user who ran the command and a recommended happiness above 80 from all pets. extends happiness and lifetime for all pets |
| **`/activity breaktime`** | **/activity breaktime**                          | take a break with your pet- requires food and extends lifetime.                                                                                                                                     |
| **`/activity fetch`**     | **/activity fetch**                              | play fetch with your pet- no requirements, raises both happiness and lifetime                                                                                                                       |
| **`/activity hike`**      | **/activity hike**                               | go on a hike with your pet- no requirements, raises both happiness and lifetime                                                                                                                     |
| **`/activity swim`**      | **/activity swim**                               | swim with your pet- no requirements, raises lifetime                                                                                                                                                |
| **`/activity visit`**     | **/activity visit `user:@iara`**                 | visit another pet- requires over 80 happiness from the user who ran the command, raises the mentioned owner's pet's happiness                                                                       |
| **`/activity heal`**      | **/activity heal `user:@iara`**                  | heal another pet- requires over 80 happiness and over a week of lifetime from the user who ran the command, decreases lifetime to add lifetime to the mentioned owner's pet                         |
| **`/activity stroll`**    | **/activity stroll `user:@iara`**                | go on a stroll with another pet- requires at least 8 food from the user who ran the command, raises both pets' lifetime and has a chance of earning stars                                           |
| **`/activity sing`**      | **/activity sing**                               | try karaoke with your pet- no requirements, gives a small amount of stars                                                                                                                           |
| **`/activity draw`**      | **/activity draw**                               | draw with your pet- no requirements, raises both lifetime and happiness                                                                                                                             |
| **`/activity snooze`**    | **/activity snooze**                             | take a nap with your pet- requires over 30 happiness, raises lifetime but lowers happiness in exchange                                                                                              |
| **`/activity dream`**     | **/activity dream**                              | dream with another pet- requires at least 10 food from the user who ran the command, gives both users a small amount of stars                                                                       |
| **`/activity explore`**   | **/activity explore**                            | go foraging with your pet- reduces happiness, but gives some pet food                                                                                                                               |
| **`/activity manifest`**  | **/activity manifest `user:@iara`**              | manifest with another pet- costs stars from the user who ran the command, raises both lifetime and happiness for both pets                                                                          |


# getting started

mimu allows you to customize and edit its settings to apply to your specific use case. to access and change settings, users will need the `MANAGE_SERVER` permission.

<figure><img src="/files/KiJsxiLMOAFsPhNzL63z" alt=""><figcaption><p>the settings command</p></figcaption></figure>

## ♡ settings groups

* when you first run `/settings` , you'll notice you'll be asked to narrow down your previewed settings by a group based on what the setting does.
* the `group:` option in `/settings` is optional; however, mimu will ask you to choose a group of settings to preview on its dropdown menu regardless.

<figure><img src="/files/yQxtygEKrq3aMASzrGBE" alt=""><figcaption><p>the /settings panel</p></figcaption></figure>

<figure><img src="/files/M0WfR3l2PxC8BwaaKwam" alt=""><figcaption><p>the group: options within the /settings command</p></figcaption></figure>

### ♡ premium settings

* settings that require the server to be premium will be marked with the premium badge, shown below

<figure><img src="/files/8TGNgZ8JP7VyDsLEelvA" alt=""><figcaption><p>the premium badge</p></figcaption></figure>

<figure><img src="/files/Be7m7PP1JbXWJ55OXWgl" alt=""><figcaption><p>example of settings that require premium</p></figcaption></figure>

* purchasing premium one time and/or monthly can be found [here](https://mimu.bot/donate)
* settings that involve premium after premium expires will remain saved, but will show the default setting values.

### ♡ quick links

<table data-view="cards" data-full-width="false"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td></td><td>currency / economy</td><td></td><td><a href="/pages/G1AQTlXinbq9Rgh1jneS">/pages/G1AQTlXinbq9Rgh1jneS</a></td></tr><tr><td></td><td>activity + pick spawn</td><td></td><td><a href="/pages/kyu6bOLcCkFwRRif1eH0">/pages/kyu6bOLcCkFwRRif1eH0</a></td></tr><tr><td></td><td>greet / leave / boost messages</td><td></td><td><a href="/pages/WPsIfAAacz7jUfkrqKbW">/pages/WPsIfAAacz7jUfkrqKbW</a></td></tr><tr><td></td><td>deny commands</td><td></td><td><a href="/pages/wsb8nsUD23rmnYOuRc0V">/pages/wsb8nsUD23rmnYOuRc0V</a></td></tr><tr><td></td><td>custom formatting</td><td></td><td><a href="/pages/hrHUgt7lT1JFCNL7J3YN">/pages/hrHUgt7lT1JFCNL7J3YN</a></td></tr><tr><td></td><td>command list</td><td></td><td><a href="/pages/3fCYS00upyt0J4ntmsVD">/pages/3fCYS00upyt0J4ntmsVD</a></td></tr></tbody></table>


# currency / economy

## settings: currency / economy ♡

this encompasses all settings that affect the server's currency or economy.\
below, the settings on this panel will be addressed from left to right.

<figure><img src="/files/Jg67BKGyUZLkbkn06Uk3" alt=""><figcaption><p>the currency / economy settings panel</p></figcaption></figure>

### ✎ currency symbol

* this changes the symbol of the currency/money earned within the server.
* this includes `/balance`, `/leaderboard`, and `/shop`. in [variables](/autoresponder/resources/variables-placeholders-and-functions), this can be referred with `{server_currency}`
* to change this value, you can use `/set currency symbol symbol:[symbol here]`

<figure><img src="/files/cSoD77fgwMu7R1WcIEN1" alt=""><figcaption><p>the set currency symbol command</p></figcaption></figure>

### ✎ starting balance

* this setting changes what amount of currency a user will receive when they join the server.
* this setting does **not** apply retroactively-- meaning if the user joined the server before the starting balance setting was changed, they won't receive the currency.
* to change this value, you can use `/set currency start amount:#`

<figure><img src="/files/YYbWpHzVQavldbAr6jil" alt=""><figcaption><p>the set currency start command</p></figcaption></figure>

### ✎ when member leave

* this changes if a member's server balance is saved if/when they leave the server.
* this setting does **not** apply retroactively-- meaning if the user left the server before the setting was changed, the change won't apply to their balance.
* to change this value, you can use `/set currency onleave enable_save:[save currency/delete currency]`

{% hint style="info" %}
if you would like to add currency to a role or to individual users, you can use `/modifyrolebal` or `/modifybal`
{% endhint %}

<figure><img src="/files/oxtUwiMpbw9hFZrJB14o" alt=""><figcaption><p>the set currency onleave command</p></figcaption></figure>

<figure><img src="/files/FcGZtEiAlpqYskbuDS8c" alt=""><figcaption><p>the set currency onleave command</p></figcaption></figure>

### ✎ `/pet` command

* this changes the values and/or cooldown for the server's `/pet` command
* to change one or more of these values, use `/set currency pet cooldown:<# in minutes> min:<# of currency earned minimally> max:<# of currency earned maximally>`&#x20;

<figure><img src="/files/ATS7K70YIisQrISFk1n9" alt=""><figcaption><p>the set currency pet command</p></figcaption></figure>

### ✎ `/snuggle` command

* this changes the values and/or cooldown for the server's `/snuggle` command
* to change one or more of these values, use `/set currency snuggle cooldown:<# in minutes> min:<# of currency earned minimally> max:<# of currency earned maximally>`&#x20;

<figure><img src="/files/hj81wuvoqm81ib0KOKjg" alt=""><figcaption><p>the set currency snuggle command</p></figcaption></figure>

### ✎ `/clickcake` command

* this changes the value and/or cooldown for the server's `/clickcake` command
* to change one or both of these values, use `/set currency clickcake cooldown:<# in minutes> value:<# of currency per click>`

<figure><img src="/files/q11hTMfYZqW1Vl0KiKsO" alt=""><figcaption><p>the set currency clickcake command</p></figcaption></figure>

### ✎ gambling bet limitations

* this changes the limitations of how little/how much a user can bet with `/slots`, `/coinflip`, and `/rolldice`
* to change one or both of these values, use `/set currency bet min:<# of currency minimum required to bet> max:<# of currency maximum allowed to be bet>`

<figure><img src="/files/5nvdeP5B0lJOZ5HZmg2a" alt=""><figcaption><p>the set currency bet command</p></figcaption></figure>

### ✎ transfer limitations

* this changes the limitations of how little/how much, as well as the percent of tax taken, users can give using `/give currency`&#x20;
* to change one or more of these values, use \`/set currency transfer min:<# of currency that can be minimally transferred> max:\<max # of currency allowed to be given> tax:<# percent of tax taken from the currency given>

<figure><img src="/files/kyd8wsqLe7tchY249yTw" alt=""><figcaption><p>the set currency transfer command</p></figcaption></figure>

### ✎ `/shop` buying confirmation

* this enables/disables a confirmation message that appears when a user tries to purchase something from the server's `/shop view`
* to change this value, you can use `/set currency confirmbuy enable_confirm:[have buying confirmation/no buying confirmation`]

<figure><img src="/files/tHcvXETHA06D4q8XOx4W" alt=""><figcaption><p>the set currency confirmbuy command</p></figcaption></figure>

<figure><img src="/files/OVKVC94Egj4ZtkhYwhOh" alt=""><figcaption><p>the confirmation message when enabled</p></figcaption></figure>

### ✎ `/shop` show item ids

* this enables/disables whether the item's ID will appear in `/shop view`
* to change this value, use `/set currency itemids enable_devmode:[show item ids/hide item ids]`

<figure><img src="/files/oEribkvbcEnCjADzlajl" alt=""><figcaption><p>the set currency itemids command</p></figcaption></figure>

<figure><img src="/files/IxYTQsrV7ggMgXfBQOjW" alt=""><figcaption><p>the item ID and its location in /shop view</p></figcaption></figure>

### ✎ `/shop` discounts

* this creates a shop-wide discount sale-- every item in the server's `/shop view` becomes discounted at a set percent for a set amount of time
* to activate this, use `/set currency discount percent:[% off] for:[amount of time]`

<figure><img src="/files/ajZ37EwkQZOrEn8uz640" alt=""><figcaption><p>the set currency discount command</p></figcaption></figure>


# activity + pick spawn

## settings: activity + pick spawn ♡

<figure><img src="/files/qB1r5ogWQFmmV6NNXQmO" alt=""><figcaption><p>the activity + pick spawn settings</p></figcaption></figure>

### ✎ activity channels + settings

* activity channels are channels where users passively earn the server's currency while chatting.
* they don't earn currency for every message, though. there is a cooldown for how often they can get currency while actively chatting.
* to add a channel that you want chatting rewarded with currency, use `/set activity channels`. a dropdown menu with your server's channels will appear, allowing you to click how ever many/little channels you'd like.

<figure><img src="/files/3VEw4XRQkYwX6rWUiU0t" alt=""><figcaption><p>the set activity channels command</p></figcaption></figure>

* to change the server's cooldown, as well as the min/max values, use `/set activity settings min:<minimum # of currency given> max:<maximum # of currency given> cooldown:<# in seconds>`

{% hint style="warning" %}
adjusting the cooldown is a **premium server** feature.
{% endhint %}

<figure><img src="/files/NNrPqZiTixTk6THLEQFN" alt=""><figcaption><p>the set activity settings command</p></figcaption></figure>

### ✎ pick channels + settings

* pick spawns are temporary drops of currency that users can "pick up" using `/pick`
* pick channels, by extension, are the channels where pick messages will spawn. to add a channel that you want pick messages to spawn, use `/set pick channels`. a dropdown menu with your server's channels will appear, allowing you to click how ever many/little channels you'd like.

<figure><img src="/files/3VEw4XRQkYwX6rWUiU0t" alt=""><figcaption><p>the set pick channels command</p></figcaption></figure>

* additionally, you can adjust the settings of pick spawns.
* to change the pick settings, use `/set pick settings min:<min # of currency dropped> max:<max # of currency dropped> speed:<very fast/fast/medium/slow/very slow> type:<multiple people can /pick per drop/only first person can /pick per drop> hard:<requires a code/does not require a code>`

<figure><img src="/files/OJ0VFjHStE32qDoni0M2" alt=""><figcaption><p>the set pick settings command</p></figcaption></figure>


# greet / leave / boost messages

## settings: greet / leave / boost messages ♡

<figure><img src="/files/Tvkh46ldlktmyLeJ1g8B" alt=""><figcaption><p>greet / leave / boost messages settings panel</p></figcaption></figure>

{% hint style="info" %}
for attaching embeds to your greet / leave / boost messages, view our [embed documentation](/embeds/embed-guide) for more details c:
{% endhint %}

### ✎ welcoming / greeting message

* this enables/disables an automatic message that sends when a user joins the server.
* to set a channel where the greet message should be sent to, use `/set greet channel channel:#channel`
* to set the greet message itself, use `/set greet message message:text here`
* to test if your greet is made to your liking, use `/test greet`
* to disable your greet message, you can set the message to `none` or `disable`

{% hint style="info" %}
if your greet does not send, it's likely mimu doesn't have the proper permissions to send it. ensure that mimu's role `Mimu` has the `SEND MESSAGES` and `EMBED LINKS` permissions in the greet channel.
{% endhint %}

### ✎ leaving message

* this enables/disables an automatic message that sends when a user leaves the server.
* to set a channel where the leave message should be sent to, use `/set leave channel channel:#channel`
* to set the leave message itself, use `/set leave message:text here`
* to test if your leave is made to your liking, use `/test leave`
* to disable your leave message, you can set the message to `none` or `disable`

{% hint style="info" %}
if your leave does not send, it's likely mimu doesn't have the proper permissions to send it. ensure that mimu's role `Mimu` has the `SEND MESSAGES` and `EMBED LINKS` permissions in the leave channel.
{% endhint %}

### ✎ boosting message

* this enables/disables an automatic message that sends when a user boosts the server.
* to set a channel where the boost message should be sent to, use `/set boost channel channel:#channel`
* to set the boost message itself, use `/set boost message message:text here`
* to test if your boost is made to your liking, use `/test boost`
* to disable your boost message, you can set the message to `none` or `disable`

{% hint style="info" %}
if your boost does not send, it's likely mimu doesn't have the proper permissions to send it. ensure that mimu's role `Mimu` has the `SEND MESSAGES` and `EMBED LINKS` permissions in the boost channel.
{% endhint %}

{% hint style="warning" %}
if your server has hit a milestone boost, the boost message may not send.
{% endhint %}


# deny commands

## settings: deny commands ♡

<figure><img src="/files/Q6KGVJ7ZXzAIbhwGfc87" alt=""><figcaption><p>the deny commands settings panel</p></figcaption></figure>

* when enabled, the deny commands settings disables commands from being used in the specified channel.
* when someone uses a mimu command in a channel where commands are denied, mimu will respond with a message stating such.

{% hint style="info" %}
autoresponders and enabled pick spawn channels both still function in channels where commands are denied.\
to disable autoresponders in a denied channel as well, we recommend using `{denychannel:}` or `{requirechannel:}`variables, with more info [here](/autoresponder/resources/variables-placeholders-and-functions)
{% endhint %}

* to add a channel, use `/set deny channels` -- a dropdown menu with the server's channels will appear. you can then add the channels you'd like to deny mimu commands in.
* to change the message that gets sent when someone uses a command in a channel that doesn't allow such, use `/set deny message message:text here`

{% hint style="warning" %}
changing the deny commands message is a **premium server** feature.
{% endhint %}


# custom formatting

certain customization features are premium only and are marked with a ☆

### ✎ embed color&#x20;

`/set custom embedcolor color:[#hexcode]`

* editing the embed color will change the color of every embed, excluding embeds made with `/embed create` or a declared hex code in the `{embed}` variable
* you can find hex codes to use [here](https://htmlcolorcodes.com)

<figure><img src="/files/PtJYNYW45pXypGQETG2t" alt=""><figcaption><p>the set custom embedcolor settings command</p></figcaption></figure>

### ☆ `/leaderboard` formatting

`/set custom leaderboard header:<header> footer:<footer> entries:<# of entries>`

<details>

<summary>☆ header</summary>

**command:** `/set custom leaderboard header:`&#x20;

this changes the leaderboard's header; the text header at the very top

![](/files/UaY0zPs9LmuGQwCCSN2i)

</details>

<details>

<summary>☆ footer</summary>

**command:** `/set custom leaderboard footer:`&#x20;

this changes the leaderboard's footer, the text footer at the bottom, above the rank indicator

![](/files/QvdVcgXUjD9AT9JYtVhM)

</details>

<details>

<summary>☆ entries</summary>

**command:** `/set custom leaderboard entries:`&#x20;

this changes the number of entries / users shown per page of the leaderboard

![](/files/4z4MSv6QEgqfjbtLeJnb)

</details>

### ☆ `/shop` formatting

`/set custom shop name:<shop name> header:<header text> image:<img file> thumbnail:<img file> entries:<# of entries per shop page>`

* the format of the server's `/shop view` can be customized, including its image and thumbnail properties.
* to remove any of these properties, set it to `none` or `disable`

<details>

<summary>☆ name</summary>

**command:** `/set custom shop name:`&#x20;

this changes the name / title of the shop, the large text at the very top of the embed

</details>

<details>

<summary>☆ header</summary>

**command:** `/set custom shop header:`&#x20;

this changes the header of the shop, the text that appears below the shop's name and instructions on buying an item

</details>

<details>

<summary>☆ image</summary>

**command:** `/set custom shop image:`&#x20;

this changes the image of the shop, the larger image on the bottom of the embed

</details>

<details>

<summary>☆ thumbnail</summary>

**command:** `/set custom shop thumbnail:`&#x20;

this changes the thumbnail of the shop,  the smaller image in the upper righthand corner of the embed

</details>

<details>

<summary>☆ entries</summary>

**command:** `/set custom shop entries:`&#x20;

this changes the number of entries / items shown per page of the shop

</details>

<figure><img src="/files/w7QRvYfyPwYYx8eQxJUa" alt=""><figcaption><p>the properties you can customize within /shop</p></figcaption></figure>

### ☆ colored arrows in `/leaderboard` and `/shop view`

`/set custom arrows color:` \
\
available colors:

<details>

<summary>☆ available colors</summary>

* red
* orange
* yellow (default)
* green
* blue
* purple&#x20;
* pink

![](/files/56ZsapgULF0MxeNqYS4S)

</details>

### ☆ `/slots` emojis

`/set custom slots emojis: <:emote1: | :emote2: | :emote3: | :emote4:>`

* the emojis used in `/slots` can be changed to 4 different emojis
* to disable `/slots`,  set it to `none` or `disable`

<figure><img src="/files/MhjIlO8ma1ySYD1z7zuA" alt=""><figcaption><p>the set custom slots settings command</p></figcaption></figure>


# getting started

mimu comes equipped with a customizable, per-server currency system that can be managed by any user with the MANAGE\_SERVER permissions.

### ✎ earning server currency

* every server comes with 3 default currency commands to earn :cookie: or whatever the currency is in that server.
* `/snuggle`, /`pet`, and /`clickcake` are all able to be used by every single member, with clickcake being accessible to users who vote for the bot on [our top.gg page.](https://top.gg/bot/493716749342998541)
* in certain servers, you may see mimu randomly say something along the lines of, `Quick! Pick up some` :cookie: `with /pick!.` When this message spawns, you're able to collect a set amount of currency using /`pick`
* there are also a few additional gambling commands, known as /`slots`, /`coinflip`, and /`rolldice.` some servers may have disabled gambling, though, so don't rely on them!
* servers may also have custom currency commands made with [autoresponders](/autoresponder/your-first-autoresponder). these also provide currency, but not every server has them.
* some users may also /`drop` currency for others to /`pick`.&#x20;

### ✎ managing mimu as a server manager/mod/etc.

* everything is configured through the /`settings` command! all settings can be found there.
* for a comprehensive guide on the currency settings, visit our [settings](/settings/getting-started) page

{% content-ref url="/pages/G1AQTlXinbq9Rgh1jneS" %}
[currency / economy](/settings/getting-started/currency-economy)
{% endcontent-ref %}


# setting up a server shop

commonly, users set up a server shop with mimu! this actively rewards users who earn currency in their server.

* below, we will explain how to set a shop item using the options in the slash command.

### ✎ adding an item

* you should type `/shop add`. the first option to type is `name`, which is the name you would like to give your shop item.
* the next option is `price`. this is the amount of currency you want your item to cost.&#x20;
* after typing in your price, the next option is `stock`, which is how much of the item you want in the shop. if you want the item to be infinite, put `0` .
* these are all the required values for your shop item to be added to your `/shop view`. below are optional values that are located in the shop add command.
* next, in the `optional` section, the value is `role`. you can mention a role here that you would like to be added to users when they buy and use the item.
* finally, the last option is `description`. this is an optional description you can add to your item when it's listed in the shop.

![adding a shop item](/files/aCVMggRN2RKeuWqLVJPh)

* when you send you command, mimu should reply that it's added to your shop!

{% hint style="info" %}
for other item properties not provided in the fields, ie `disablegive`, see editing the shop item below
{% endhint %}

### ✎ viewing the server shop

![an added shop item!](/files/LdACr4YyBWVb5N4nUxWj)

* you can view your new item in `/shop view`

### ✎ editing a shop item

* if you made a mistake, need to update information, or want to add additional settings to your item, don't fret! you can edit it with mimu.
* the base of the command to edit is `/shop edit`

![shop edit command, which shows many different options to edit](/files/NI93XgwX5vo7JO7qrqeO)

* in total, you can use the following editable properties in your `/shop edit` : `description` , `disablegive` , `name`, `price` , `removerole` , `reply` , `requirerole`, `role`
* description edits the item's current description into whatever new description you specify - `/shop edit description item: itemname description: new description`
* disablegive edits the item's current status as to whether you want users to be able to gift the item to others by using `/give item` - `/shop edit disablegive item: itemname disabled:[True/False]`
* name edits the item's name to be something else - `/shop edit name item: itemname name: new name`
* price edits the price of the item - `/shop edit price item: itemname amount:#`
* removerole edits the role removed when the user purchases the item. as the role is an optional field, putting nothing will remove the removerole  - `/shop edit removerole item: itemname role:@role`
* reply edits Mimu's reply given when a user uses the item (`/shop use`) - `/shop edit reply item: itemname reply: new reply`
* requirerole edits the role required to purchase the item. as the role is an optional field, putting nothing will remove the requirerole - `/shop edit requirerole item: itemname role: @requirerole`
* role edits the role added when the user uses the item. as the role is an optional field, putting nothing will remove the added role - `/shop edit role item: itemname role: @role`

### ✎ removing a shop item

* don't want the item anymore? no worries! we can remove it with mimu.
* start this time with `/shop remove`
* the next option that appears is `item:`, you can select or type your item name here to remove the correct item.

![the menu that appears after typing /shop remove - you can select your item from the menu or simply type it out](/files/rAeMVU47tF8SFDI3Iydn)


# tickets

pet tickets, also abbreviated as tickets or tix, are a global currency used primarily for pets and related items, such as pet food. all items that can be bought with tickets can be found in `/votes shop`

tickets are located underneath your server currency :cookie: and is fixed (the same) throughout every server.

![the blue circle indicates where your tickets are located](/files/J1A0Jt6vCwkg68zF2LiB)

## ✿ earning tickets

tickets can be earned in many different ways:

### ✦ voting

* this is the primary way of receiving tickets!
* you can run `/vote` to find our top.gg voting page, [found here](https://top.gg/bot/493716749342998541/vote).
* for voting for Mimu, you can receive 1 pet ticket every 12 hours (donators receive double for every vote over the weekend!). if you can't remember to vote that often, you can run `/userset voteremind remind:True` to receive vote reminders after every vote.&#x20;

![setting vote reminders to true](/files/w6oSxPWVNcYcWZk1Ecc9)

* voting is a way to not only gain tickets, but also supports mimu in a big way! every vote is appreciated.&#x20;

### ✦ mimu keys

* mimu keys, bought for $4-$5 USD each, are another way to receive tickets
* if you have a valid key to use, you can use `/claim tickets key:[key-here]` to claim a total of 10 pet tickets
* this is another way to support mimu! for more information regarding donating, you can browse our web page [here](https://mimu.bot/donate)

### ✦ community weekly poll giveaways

* in our [community server](https://discord.gg/mimu), we have weekly chances for users to obtain a pet ticket packs
* pet ticket packs contain a random amount of pet tickets, anywhere between 5-8 tickets total.
* these weekly polls are very hard to win, though, and getting tickets through it is not guaranteed. we recommend voting daily!


# pets

mimu pets, also known as booster pets or pets, are cute companions you can purchase and keep in your global balance.

when bought, pet images are located in the top right corner, whereas the name and other information is located on the left of your balance.

![pet info in balance](/files/pNj40sEm3eYZHe0v7nZx)

## ✦ purchasing a pet

* every pet is bought using pet tickets (excluding certain exclusive, limited edition pets), with each pet costing a different amount depending on what they do.
* each pet has a different "boost," or perk, giving you perks on things like how much you earn using `/pet` to extra percentages on `/wish`
* currently available pets can be bought in the `/votes shop` using `/votes buy item:[pet]`, as long as you have enough pet tickets!

![available options in the votes shop. the first five are our default pets](/files/nOC2CRlpSOjPFDkPnTmx)

### ✦ bunko

* **personality:** bunko is a scared and clumsy pet, jumping at the slightest movement or sound. bunko is usually hiding; but when seen, they are running away and tripping on their giant ears. warning: may whine for good night kisses.
* **cost:** 12 pet tickets
* **perk:** bunko gives you an extra 20% of currency when using `/pet` - this applies to *every* server you use `/pet` in

![bunko](https://cdn.mimu.bot/Bunny2.png)

### ✦ bao

* **personality:** bao is always sleeping, no matter what. when you attempt conversation, it will go off course very often. sometimes it will say something that sounds intelligent or profound... it isn't. use it as a pillow or hug whilst sleeping; bao is known to bring good dreams.
* **cost:** 12 pet tickets
* **perk:** bao gives you an extra 20% of currency when using `/snuggle` - this applies to *every* server you use `/snuggle` in

![bao](https://cdn.mimu.bot/sheep2.png)

### ✦ mochi

* **personality:** mochi is incredibly sweet and caring and has only one dream: to be a mother. as it's constantly sought for consumption, it has to be cautious; but if you are sick, medicine and orange juice may appear at your bedside suddenly. after it knows you won't eat it, it will kiss your cheeks and sing to you.
* **cost:** 10 pet tickets
* **perk:** mochi gives you an extra 10% when using `/pet` AND an extra 10% when using `/snuggle` - this applies to *every* server you use /`pet` or `/snuggle` in

![mochi](https://cdn.mimu.bot/Mochi1.png)

### ✦ kaeru

* **personality:** kaeru is a simple flob; only having legs for jumping. kaeru gets excited easily and only thinks about having a good time; its always in a good mood and wonderful with kids. it's croak is an adorably high-pitched squeak; pick it up by the legs, it'll scream cutely.
* **cost:** 6 pet tickets
* **perk:** kaeru gives you an extra 20% when using `/pick` - this applies to *every* server you use `/pick` in

![kaeru](https://cdn.mimu.bot/Flob2.png)

### ✦ koumori

* **personality:** looking for a little spice in your life? this is the pet for you. koumori will cause a ruckus; mischievous and a trouble maker. finding great joy in scaring or shocking others, its favorite game is Peekaboo. don't leave it alone in the house too long or it might start throwing your things on the ground.
* **cost:** 5 pet tickets
* **perk:** koumori gives you an extra 20% when using `/clickcake` - this applies to *every* server you use `/clickcake` in

![koumori](https://cdn.mimu.bot/Bat3.png)

### ✦ random

* using `/votes buy random` will randomly give you one of the five pets above - bunko, bao, mochi, kaeru, or koumori
* **cost:** 8 pet tickets
* this does *not* give you any exclusive pets, even if they're in the shop at the time.

![the five pets, available all year round](/files/iscF05cdhLhIO6aFU8fR)

## ✦ specialty / limited-edition pets

### ✦ risu

* **personality:** risu is one of our four seasonal pets, representing autumn. a fluffy ball of fur, risu loves to chew on bark and play fetch - but its favorite thing to do is snuggle up with its plushie.
* **cost:** previously cost 60 pet tickets
* **perk:** risu gives you an extra 40% when using `/wish`
* **availability:** seasonal pet - available annually for a limited time in fall/autumn

![risu](https://cdn.mimu.bot/FoxSquirrel4.png)

### ✦ nekuma

* **personality:** adorable, shy and chubby, nekuma loves quiet activities. despite not understanding the words, nekuma's favourite thing to do is read. the closer you get to them, the more outgoing nekuma will become.
* **cost:** 2 mimu keys
* **perk:** nekuma gives you an extra 10% when using `/pet`, `/snuggle`, and `/clickcake`
* **availability:** event pet - was available for Earth Day in 2021 and 2023; not guaranteed to return

![nekuma](https://cdn.mimu.bot/Nekuma3.png)

### ✦ sakushika

* **personality:** sakushika is one of four seasonal pets, representing spring. a beautiful an elegant baby fawn; sakushika is a rare breed representing japanese sakura flowers. sakushika loves doing random things around the house, but its favourite thing is to graze the outdoors.
* **cost:** previously cost 75 pet tickets
* **perk:** sakushika gives you an extra 40% on `/wish`
* **availability:** seasonal pet - available annually for a limited time in spring

![sakushika](https://cdn.mimu.bot/Sakushika2.png)

### ✦ yuni

* **personality:** yuni is a time exclusive pet to represent LGBTQ+ pride. a graceful mythical creature who rumors to bring luck to those around them. despite being one of the prettiest legends, yuni is a big foodie; the more comfortable it is with you, the more cake and ramen it will eat with you.
* **cost:** previously 85 pet tickets (2021) and two mimu keys (2022)
* **perks:** yuni gives an extra 10% of lifetime when using `/cozy` - only applies if you host it. previously, yuni gave an extra 50% in event exclusive commands, but was swapped out for the `/cozy` perks
* **availability:** event pet - was available annually during Pride Month 2021 and 2022; not guaranteed to return

![yuni](https://cdn.mimu.bot/Yuni2.png)

### ✦ amako

* **personality:** amako is one of four seasonal pets, representing summer.  a sugar filled furball. legend has it that if you take off a chunk of food off its back, it will instantly regrow. extremely hyper and loves anything sweet and chewy. warning: may whine for treats when not given to them, and begins to break things when upset.
* **cost:** previously cost 75 pet tickets
* **perk:** amako gives you an extra 40% when using `/wish`
* **availability:** seasonal pet - available annually for a limited time in summer

![amako](https://cdn.mimu.bot/Amako3.png)

### ✦ maichi

* **personality:** maichi is a mischievous kitten like all kittens; but this one may be a little spicier! a whiny, needy little brat that will scream until it gets its way, and might shoot some lightning bolts a you whilst it does so, no biggie! the louder it screams, the more powerful its magic is; so you'd better take care of this kitten best you can. its back hair is constantly standing up; this is because it is always ready to strike! motherly mochi constantly tries to discipline the cat, but fails miserably - such a handful!
* **cost:** previously cost 66 pet tickets
* **perk:** maichi gives an extra 40% when using `/wish`
* **availability:** event pet - was available for Halloween 2021 + 2023; not guaranteed to return

![maichi](/files/uVfHQFfM7MHuFMvz4xIw)

### ✦ fuyune

* **personality:** fuyune is one of four seasonal pets, representing winter. fuyune is a baby representing the chilly weather. sometimes it may look sad, but it's the most mature out of all of the pets. despite that, fuyune is playful and loves to mess around with different things that it finds around the house or the ground; exploration being its favorite thing to do. your fuyune may hibernate: this is just the norm for its breed; but do not worry!
* **cost:** previously cost 75 pet tickets
* **perk:** fuyune gives you an extra 40% when using `/wish`
* **availability:** seasonal pet - available annually for a limited time in winter

![fuyune](/files/u95oxfCmsKU8yZhl1xG9)

### ✦ lurimi

* **personality:** lurimi is a cuddle blanket for the winter! extremely festive, it loves to play with toys, cook, and be comfy! this little christmassy friend is a joy to have, and whilst it may sit and play a lot, it promises to always give you the warmest snuggles.
* **cost:** previously cost 85 pet tickets&#x20;
* **perk:** lurimi gives you an extra 15% when using `/pick` and `/clickcake` - this applies to *every* server you run `/pick` and/or `/clickcake` in
* **availability:** event pet - was available for Christmas 2021 and December 2023; not guaranteed to return

![lurimi](/files/JuGjUrQncYFzsgCrtAZN)

### ✦ aishiba

* **personality:** aishiba is the symbol of love between two - once taken home as your pet, you will find it snuggling against you and easily warming up to you. trusting, romantic and sweet, aishiba's caring and nurturing side often shines through amongst all the pets. with its compassionate, loving and dreamy style, aishiba has the ability to make anyone become friends, even in the worst scenario. as it grows warmer to you, it will write you letters and pick roses for you, like a true friend.
* **cost:** previously cost 106 pet tickets
* **perk:** aishiba gives you an extra 20% when using `/wish` and an extra 10% when using `/pet` and `/snuggle` - this applies to *every* server you run `/pet` and/or `/snuggle` in
* **availability:** event pet - was available for Valentine's Day 2022 + 2024; not guaranteed to return

![aishiba](/files/P2rj1GWqRpes3eMJrsYi)

### ✦ yami

* **personality:** yami’s ideal is to bring joy to everyone's faces, and to create wonderful memories. even when yami isn't having the best day, they will never show it. they believe in the gift of kindness and generosity. whilst yami is kind to everyone, to a nice owner, yami will speak of you fondly, and call you their star.
* **cost:** previously cost 82 pet tickets
* **perk:** yami gives an extra 20% in happiness when its owner uses using `/playdate` or `/cozy`
* **availability:** event pet - was available for a limited time from december 2022 to january 2023; not guaranteed to return

<figure><img src="https://cdn.mimu.bot/Yami2.png" alt=""><figcaption><p>yami</p></figcaption></figure>


# taking care of your pet

bought a new companion? awesome! let's take care of it to ensure it stays alive c:

pets have happiness and an expiry date. these values decrease if you don't take care of your pet. you can find this information on the left side of your balance

![information regarding your pet in your balance](/files/es6qNHazL20jnleriNO1)

for information about additional but purchasable commands to help your pet, click [here](/global-currency/stars/activity-classes)

### ✦ votes shop items

* `/votes buy item:namechange` - costs 6 pet tickets, allows you to rename your pet! please note: your pet's name can only be 24 characters and the first letter autocapitalizes.
* `/votes buy item:nanny` - costs 5 pet tickets, gives your pet an additional 2 days of lifetime instantly
* `/votes buy item:toys` - costs 3 pet tickets, gives your pet a boost in happiness
* `/votes buy item:food` - costs 1 pet ticket, gives you 30 pet food to use; does not expire!

### ✦ commands that every pet owner can use

* `/play` - costs nothing, gives your pet a small boost in happiness and lifetime. has a global cooldown of 20 minutes.

![playing with your pet c:](/files/i5eB5tYV4KyI3eZhPtuM)

* `/feed` - costs a random, small range of pet food and you must have at least 1 pet food in your inventory to use it. increases your pet's lifetime more than `/play` does. has a global cooldown of 5 minutes. if your pet is unhappy, the feeding will fail and you will lose the pet food spent.&#x20;

![feeding your pet](/files/xCzkmUG2gKYSHjEYBz9j)

* `/playdate user:@user` - costs a random, larger range of pet food, increases both your pet's + the tagged user's pet's happiness and lifetime by a significant amount. **both** users must have pets and **both** pets must be happy. we recommend both pets have 75 or more happiness. only the user running the command has to pay for the pet food and must have at least 5 pet food in their inventory. the cooldown is 90 minutes and applies for both users globally.

![playdating another user!](/files/7DvBnXWkS0zszDyqaEMa)

* `/cozy users:@user @user ...` - up to 5 users, excluding you, can be tagged in this command. costs a random, large amount of pet food, and increases all involved pets' happiness and lifetime by a significant amount. **all** users must have happy pets, with a recommendation of 80 happiness or more. only the person who runs the command has to pay for the pet food used, having at least 20 pet food in their inventory. the cooldown is 2 hours and applies for all users globally.

![cozy up with your friends c:](/files/8kAMXA692T8fA99u8dV3)


# stars

stars are a global currency that pertain primarily to pets and is an extension of the pet system. they are the only currency that can be listed as decimals (only to the hundredth place).&#x20;

stars were created to encourage the spirit of giving and sharing with other users.

![stars in your balance](https://cdn.discordapp.com/attachments/1163136347205292042/1163137673024786463/IMG_0379.png?ex=65a3fedf\&is=659189df\&hm=01ebdc8075cbcdf72037b135deec8026d611a86196656b983cbb6040316a5aa6&)

## ✿ gifting and obtaining stars

* while used primarily for pets, even as a non-pet owner, you can always earn stars.
* `/bless user:@user` is a common way to give stars. it is entirely free and you can bless any users you'd like. however, you can't bless the same user twice in a day! this resets every day at 00:00 UTC, and you can see all users you've blessed in a day by using `/blesslist`.
* /`wish` : available every day between 7:00pm - 4:59am UTC, use this command to wish upon a star and receive stars. wish has a cooldown of 15 minutes globally.
* `/votes buy item:stargift` : you can give your friend a stargift (2.5 stars if their star meter is full) using one pet ticket.

### ✦ star meter

* the star meter is a meter found in `/stars info` - this affects only stargifts and not other star related commands
* the more stargifts someone receives, the more their star meter will go down. the lower their star meter is, the less they'll get out of a stargift.&#x20;
* however, this meter resets every day at 00:00 UTC, meaning once this time hits, a person's star meter will be back to 100%.

![stars and your stars meter](/files/Bu8bClmn3EXfA7nT42PL)

## ✿ using your stars

* stars can be redeemed in the `/stars shop`
* the stars shop has a number of items, all related to pets.
* to buy an item in the stars shop, use `/stars buy item:`

![the stars shop](/files/3WwA0ozq5tXeILIuLmQe)

* `/stars buy item:resurrection scroll` - the resurrection scroll costs 60 stars and revives the last pet you had with its name, breed, age, food, and activity classes fully restored. your newly revived pet comes with 100 happiness and 7 days of lifetime.
* `/stars buy item:morph spell` - this morphs your currently alive pet into any pet that's available in the `/votes shop`- saving your pet's age, activity classes, food, etc., but changing its breed and name into the breed of pet you want. it costs 30 stars and additionally the amount of tickets the desired breed costs.
* `/stars buy item:permanent sleepover` - costing 20 stars, this gives you the opportunity  to swap your pet with another pet owner's pet. it swaps pet, lifetimes, and activity classes, but not food. this is paid for solely by the person who invokes the command and is *irreversible* without paying another 20 stars. the other pet owner must confirm as well that they want this swap before it actually happens.
* `/stars buy item:activity classes` - for 25 stars, you can attempt to teach your pet one of the 13 available activity classes ([also described here](/global-currency/stars/activity-classes)), which gives access to a new command to run for your pet. your first class is guaranteed to be learned, but the more classes your pet knows, the higher the rate of failure is.&#x20;
* `/stars buy item:star magic` - if your pet is expiring in the next 12 hours and you'd like to keep it alive, you can sprinkle some star magic to give it a little boost. it costs 15 stars and can add up to 60 happiness points and 5 additional days of lifetime. the less hours your pet has, the more life it adds.
* `/stars buy item:pet divider` - costing 50 stars, you can get your pet's matching divider for your `/balance`. once you've bought it, the divider stays in your inventory forever, even if your pet dies. you must have the corresponding pet to buy the divider (eg, if you have bunko, you can buy the `bunko` divider but *not* the `kaeru` divider). premium users have access to **all** dividers during their membership, including a few additional ones.&#x20;

![all dividers available](https://cdn.discordapp.com/attachments/1163136347205292042/1163137983650738246/IMG_0370.png?ex=65a3ff29\&is=65918a29\&hm=aa0da3f5e767f978033031f2a2f7f3895f7efab21fbc0669990c41c86863444c&)


# activity classes

activity classes are purchasable commands (using stars) for all pet owners! the commands are all different, giving possible happiness or lifetime or even stars depending on what command it is!

every activity class costs 25 stars, with a total of 13 classes. however, your pet also has a chance to *fail* learning its activity class, with the failure rate increasing depending on how many classes your pet already knows. if your pet fails, you do not receive the activity class command and still spend the 25 stars. your first activity class is guaranteed success.&#x20;

![learned activity classes, which are circled in the dark blue](/files/pdCxWOxZkInNr73CFobc)

## ✿ list of activity classes

### ✦ breaktime

* `/activity breaktime`&#x20;
* when unlocked, requires at least 4 pet food to use and uses a max of 11
* raises pet lifetime greater than `/feed`

### ✦ fetch

* `/activity fetch`
* when unlocked, requires no pet food nor a set happiness value to use
* raises some happiness and lifetime

### ✦ hike

* `/activity hike`
* when unlocked, requires no pet food nor a set happiness value to use
* raises some happiness and little lifetime

### ✦ swim

* `/activity swim`
* when unlocked, requires no pet food nor a set happiness value to use
* raises lifetime significantly

### ✦ visit

* `/activity visit user:@user`
* when unlocked, requires no pet food but a happiness value of 80 or above. requires you to ping another user who has a pet
* raises the other user's pet's happiness slightly

### ✦ heal

* `/activity heal @user`
* when unlocked, requires no pet food but a happiness value of 80 or above and a lifetime value of one week or over. requires you to ping another user who has a pet with 2 days or less of lifetime left
* raises the other user's pet's lifetime significantly but lowers yours&#x20;

### ✦ stroll

* `/activity stroll user:@user`
* when unlocked, requires no set happiness value but at least 8 pet food to run and to ping another user who has a pet
* raises both pet's lifetime slightly and has a small chance for both to receive stars

### ✦ sing

* `/activity sing`
* when unlocked, requires no pet food nor a set happiness value to use
* raises no happiness/lifetime, but gives a small amount of stars

### ✦ draw

* `/activity draw`
* when unlocked, requires no pet food nor a set happiness value to use
* raises lifetime and a small amount of happiness

### ✦ snooze

* `/activity snooze`
* when unlocked, requires no pet food but a happiness value of 30 or above
* raises lifetime significantly but lowers happiness

### ✦ manifest

* `/activity manifest user:@user`
* when unlocked, requires some stars to use but no set food/happiness value
* raises both lifetime and happiness for both pets

### ✦ explore

* `/activity explore`
* when unlocked, requires no pet food/lifetime but costs happiness to use
* finds pet food to add to your balance

### ✦ dream

* `/activity dream user:@user`
* when unlocked, requires no lifetime/happiness but costs pet food
* obtains some stars


# your first autoresponder

## ♡ table of contents

* [your first autoresponder](/autoresponder/your-first-autoresponder) (you're here!)
* guide
  * [beginner i: using simple placeholders](/autoresponder/guide/using-simple-placeholders)
  * [beginner ii: using simple functions](/autoresponder/guide/beginner-ii-using-simple-functions)
  * [intermediate i: ranges and making choices](/autoresponder/guide/intermediate-i-ranges-and-making-choices)
  * [indermediate ii: locked choices](/autoresponder/guide/intermediate-ii-locked-choices)
  * [advanced i: different matchmodes](/autoresponder/guide/advanced-i-different-matchmodes)
  * [advanced ii: using user arguments](/autoresponder/guide/advanced-ii-using-user-arguments)
* resources
  * [variables - placeholders & functions](/autoresponder/resources/variables-placeholders-and-functions)
  * [examples](/autoresponder/resources/autoresponder-examples)

## ✎ introduction

mimu's autoresponder feature, also known as custom commands, allows you to create functional commands in your server with customised responses and advanced variables.&#x20;

#### the command base is `/autoresponder`.

{% hint style="info" %}
interested in checking out some examples and ideas?[ click here!](/autoresponder/resources/autoresponder-examples)
{% endhint %}

### ✎ adding an autoresponder

* to add an autoresponder, you have to use the `/autoresponder add trigger: reply:` command.
* the trigger is what "triggers mimu" to respond with the response. this can be a word or phrase.
* for example, if you want mimu to respond with `hey cutie!` when you type `hi mimu!` you would have to type `/autoresponder add trigger:hi mimu! reply:hey cutie!`

{% hint style="info" %}
it is important that you make sure to split your autoresponder's trigger and response with the `trigger:` and `reply:` options
{% endhint %}

![the slash command options when creating your AR
](/files/Ri9uhSvFuqVLQvNNQqhA)

![when sent, you successfully created your autoresponder!](/files/C5OB1VwXUMctGrdfUq0t)

### ✎ viewing your existing autoresponders

* you can view your existing autoresponders by typing `/autoresponder list`.

![viewing your autoresponder list](/files/x0qvFwTAwqe1GA2RQlnv)

### ✎ editing an existing autoresponder

* you can edit an existing autoresponder using `/autoresponder editreply trigger:trigger reply:new response`.
* for example, `/autoresponder editreply trigger:hi mimu! reply:heya there, cutie!`

### ✎ deleting an autoresponder

* you can delete an autoresponder using `/autoresponder remove trigger:trigger`
* for example, to delete an existing responder `hi mimu!`, you can do `/autoresponder remove hi mimu!`.

<figure><img src="/files/C45wnkz9p2H6DWCV3PXU" alt=""><figcaption></figcaption></figure>


# guides

to quickly find a guide you need, use the tabs below\~

{% tabs %}
{% tab title="beginner" %}
{% content-ref url="/pages/-MWRaB\_DCZO1DT\_GT0-a" %}
[beginner i: using simple placeholders](/autoresponder/guide/using-simple-placeholders)
{% endcontent-ref %}

{% content-ref url="/pages/-MWRq3x4roVrcHpATFdd" %}
[beginner ii: using simple functions](/autoresponder/guide/beginner-ii-using-simple-functions)
{% endcontent-ref %}
{% endtab %}

{% tab title="intermediate" %}
{% content-ref url="/pages/-MWRq6IhrGTiSkail4Bc" %}
[intermediate i: ranges and making choices](/autoresponder/guide/intermediate-i-ranges-and-making-choices)
{% endcontent-ref %}

{% content-ref url="/pages/-MWRqA1\_ySzywT3dZyAG" %}
[intermediate iii: locked choices](/autoresponder/guide/intermediate-ii-locked-choices)
{% endcontent-ref %}
{% endtab %}

{% tab title="advanced" %}
{% content-ref url="/pages/-MWRqF7wv5qx9k3RyfQy" %}
[advanced i: different matchmodes](/autoresponder/guide/advanced-i-different-matchmodes)
{% endcontent-ref %}

{% content-ref url="/pages/-MWRqdvhviTaJtfiq8nk" %}
[advanced ii: using user arguments](/autoresponder/guide/advanced-ii-using-user-arguments)
{% endcontent-ref %}

{% content-ref url="/pages/2733RFaz4LDz4rl4MMtP" %}
[advanced iii: modifying inventory and using args](/autoresponder/guide/advanced-iii-modifying-inventory-and-using-args)
{% endcontent-ref %}
{% endtab %}

{% tab title="expert" %}
{% content-ref url="/pages/exLXsOwbdtLwashQbH6e" %}
[expert i: static button responders](/autoresponder/guide/expert-i-static-button-responders)
{% endcontent-ref %}

{% content-ref url="/pages/nUeB2egizxjTtC8Bp1sn" %}
[expert ii: instanced button responders](/autoresponder/guide/expert-ii-instanced-button-responders)
{% endcontent-ref %}
{% endtab %}
{% endtabs %}


# beginner i: using simple placeholders

let's talk a bit about how to use simple placeholders to manipulate the response of mimu.

## ✎ what are placeholders?

* placeholders are variables that you can put in your response in order for mimu to replace with context.&#x20;
* an example would be mentioning the user who sent the message using `{user}`. this allows you to personalize the response.

![creating our autoresponder to mention the user who ran the command](/files/d0AlJlWZbUWJnh56Z5hL)

![what mimu replies with!](/files/tXGNM3yzLafUIqumDygX)

## ✎ using multiple placeholders

* using multiple placeholders work exactly the same way as how you'd expect.
* let's make an autoresponder called .userinfo that responds with users' information!
* this is the command i typed:

`/autoresponder add trigger:.userinfo reply:hi {user}! this is your info!` \
`user tag: {user_tag}` \
`username: {user_name}` \
`discrim: {user_discrim}` \
`id: {user_id}` \
`nick: {user_nick}` \
`joined server on: {user_joindate}` \
`joined discord on: {user_createdate}` \
`your color in this server is {user_displaycolor}` \
`you've boosted since: {user_boostsince}` \
`you have {user_balance} {server_currency}!`

![and voila! we've got it!](/files/-MWSSSVSWJARTO_lwyY_)

{% hint style="info" %}
there are a lot of variables! check out the [variable placeholder list](/autoresponder/resources/variables-placeholders-and-functions#placeholder-list) for a full list of placeholders and functions!
{% endhint %}


# beginner ii: using simple functions

let's learn how functions work in mimu's autoresponders so we can make commands that do actions!

## ✎ what are functions?

* a function is something that manipulates, or does an action.
* these variables allow your autoresponders to have more than just a static response/reply.
* let's try out a simple autoresponder that gives the user 10 currency with a cooldown of 1 minute.

`/autoresponder add trigger:give me 10 reply:{modifybal:+10} {cooldown:60} okay, i've given you 10 {server_currency}, you have {user_balance} now!`

* in this above autoresponder, `{modifybal:}` takes an amount, and modifies the user's balance by `+10`.
* the `{cooldown:}` function accepts a number in seconds as the cooldown.&#x20;
* finally, we have a simple response and placeholder as the response.

{% hint style="info" %}
it is good practice / habit for you to run functions before the response. this is because in order for some placeholders to be updated, you have to use the function early on. here's an example:\
`/autoresponder add trigger: mimu give me money! reply: your old balance: {user_balance} {server_currency} {modifybal:1000}` \
`your new balance: {user_balance} {server_currency}`\
in this scenario, it will provide the old balance, then show the new balance after the balance has been modified.\
\
in addition, in the future, when using chooses, ranges, you will find you have to use the functions before the placeholder, to define the choice / range, etc.&#x20;
{% endhint %}

* if you did it right, you should now have something like below!

![autoresponders giving you currency rewards](/files/-MWS_VQ4BRPFtjYZepjj)

* let's try out another example! this time, we want to make mimu give us a role and respond in a colored embed when the user types `+admirer`.

`/autoresponder add trigger:+admirer reply:{embed:#ec948a}{addrole: @mimu admirer} hi cutie! i've given you the @mimu admirer role !`

* in the above response, `{embed:}` accepts either no input, a color (we put in `#ec948a`), or a premade embed. since we put in an embed with a specified color, the text `hi cutie! i've given you the @mimu admirer role` will be embedded
* `{addrole:}` accepts an input of a role for you to add to the user. in this case, we're adding the "mimu admirer" role! this input also accepts role IDs as well c:
* the remaining text is the textual response.
* finally, let's try another example! let's make a mod only command that pings the @chat revive role with a cooldown of 5 minutes.

{% hint style="info" %}
using cooldowns in your ARs? please note they **will show up in the user's`/cooldowns`**`!`
{% endhint %}

`/autoresponder add trigger:.chatrevive reply:{requirerole: @𐐚 ┇ moddies}{cooldown:300} @chat revive`

* the `{requirerole:}` function allows you to limit it to people with the inputted role. if they don't have the role, the autoresponder will respond with the below error.

<figure><img src="/files/OEPUtfMWpGx5L6KZ2byH" alt=""><figcaption></figcaption></figure>

* you can then create a cooldown with the `{cooldown:}` function. we put 300 because 300 seconds = 5 minutes.

{% hint style="info" %}
there are A LOT of functions for different purposes, from embedding, to redirecting to channels. check out our [variable functions list](/autoresponder/resources/variables-placeholders-and-functions#function-list) for a full list!
{% endhint %}


# intermediate i: ranges and making choices

## ✎ why use a range or make mimu choose?

* sometimes, you want varying amounts or varying responses to switch things up!
* this allows you to expand and teach mimu to make random responses or amounts.

{% hint style="info" %}
&#x20;variables used in here are also mentioned in the [variables list](/autoresponder/resources/variables-placeholders-and-functions).
{% endhint %}

## ✎ the range variable

### ♪ choosing from a range of numbers

let's take an example currency command we've made from [beginner ii: using simple functions](/autoresponder/guide/beginner-ii-using-simple-functions).

`/autoresponder add trigger:give me 10 reply:{modifybal:+10} {cooldown:60} okay, i've given you 10 {server_currency}, you have {user_balance} now!`

* as you can see, this example only gives you 10 currency. but what if we wanted mimu to give an amount between 10-100 instead?
* we can use the `{range:}` variable to do this! let's look at this:

`/autoresponder add trigger:give me more reply:{range:10-100} {modifybal:[range]} {cooldown:60} okay, i've given you [range] {server_currency}, you have {user_balance} now!`

![](/files/-MWUyQixznKyNT8bI0Ml)

* the `{range:}` variable takes an input of a minimum to maximum amount which returns a range of numbers.
* once mimu decides, it stores the number chosen from the range into `[range]`.
* that way, you can use `[range]` as a placeholder in the rest of your AR.

{% hint style="info" %}
it is **vital that you put the `{range:}` variable before using `[range]`**. this is because you need to have mimu choose between the range before you can refer to the chosen number from the range.
{% endhint %}

### ♪ using multiple ranges

* you can use multiple ranges, up to a total of **4 of them**.&#x20;
* you can do so by  `{range:} {range1:} {range2:} {range3:}`.&#x20;
* and just as you'd expect, the corresponding placeholders are `[range] [range1] [range2] [range3]`.

here's an example!

`/autoresponder add trigger:choose numbers reply:{range:1-10} {range1:10-20} {range2:20-30} {range3:30-40}`\
`a number from 1 to 10: [range]`\
`a number from 10 to 20: [range1]`\
`a number from 20 to 30: [range2]`\
`a number from 30 to 40: [range3]`

![](/files/-MWUyeZDj73iIKJ56Njc)

## ✎ the choose variable

### ♪ choosing from a list of choices

* using the `{choose:}` function, you can make mimu choose from a list of predefined variables.
* let's take an example. maybe you'd like mimu to choose between "pancakes", "cookies" or "yogurt".

`/autoresponder add trigger:.chooseforme reply:{choose:pancakes|cookies|yogurt} i choose [choice]!`

![](/files/-MWUypTPg3JeoQnchmZU)

* as you can see, the `{choose:}` variable takes an input of choices separated with the pipe | symbol
* once mimu decides, it stores the result in the variable `[choice]`.
* that way, you can use `[choice]` as a placeholder for the rest of the AR.&#x20;
* by manipulating the number of times the choice is mentioned in the variable, you can also vary the "rarity" of a response.

{% hint style="info" %}
similarly, remember to use `{choose:}` before `[choice]`! this is to make sure it chooses before it shows the choice. otherwise, you will get the `CHOICE_NOT_CHOSEN_YET` error.
{% endhint %}

### ♪ making several choices

* similar to ranges, you can have mimu make more choices, up to **4** of them.
* you can do so by  `{choose:} {choose1:} {choose2:} {choose3:}`.&#x20;
* and just as you'd expect, the corresponding placeholders are `[choice] [choice1] [choice2] [choice3]`.

## ✎ extended - doing weird stuff

{% hint style="info" %}
this part is just for people who want to go above and beyond in complicating things. feel free to skip if this isn't for you.
{% endhint %}

### ♪ put a range in a choice or a choice in a range

* you can put a range in a choice, or a choice in a range, like this:

`/autoresponder add trigger:why would you even do this reply:{range:1-5} {range1: 10-20} {range2:30-50} {range3:1000-10000} {choose:[range]|[range]|[range]|[range1]|[range1]|[range1]|[range2]|[range2]|[range3]} {modifybal: [choice]} you earned [choice] {server_currency}`

* although extremely complex, this allows you to make some ranges rarer than others. in this example, \[range] is more likely than \[range1] which is more likely than \[range2] and so on.
* similarly, remember to put your {range:} variables BEFORE using the corresponding \[range] in the {choose:} variable.


# intermediate ii: weighted choices

## ✎  what are weighted choices for?

* by default, all choices listed in `{choose:}` have equal odds of being chosen.&#x20;

<p align="center"><code>{choose: jelly | ice cream | smoothie | cake | cookie}</code> </p>

<figure><img src="/files/jmk5S7DoQFHccjBsds0Z" alt="" width="563"><figcaption></figcaption></figure>

* to make certain choices more common, users can hypothetically repeat certain choices...

<p align="center"><code>{choose: jelly | jelly | cake | cake | cake | cookie | cookie | cookie | cookie | cookie | smoothie | smoothie | ice cream}</code> </p>

<p align="center">because of the # of times each of the choice is repeated, it'll cause a change in rarity.</p>

<figure><img src="/files/EnmmttQA3T3fiHvNt9Jp" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/Y27aKr8pQso1I1M42Kqz" alt="" width="563"><figcaption></figcaption></figure>

* however, the above can get excessively verbose *extremely* fast for rarer options... so instead, it is better to use the weighted choose variable.
* the `{weightedchoose:}` variable allows you to assign a *weight* to a choice, allowing you to skew the odds for common, uncommon and rarer choices, **without repeating each choice over and over again**.

## ✎  how do i use a weighted choose?

* to assign a weighted choose, you would first need to decide how rare each option should be.&#x20;
* `{weightedchoose:}` allows you to select the weight of how much each item in the `{choose:}` will be. it will be assigned in order.

<figure><img src="/files/G7eX2KGNfP8Y4uhIwfSN" alt=""><figcaption></figcaption></figure>

* so "the" = 1%, "choices" = 9%, "always correspond" = 10%, "in chronological" = 50%, and "order" = 30% chance.
* let's take an example, where you want the following items to have the below rarity:

<table><thead><tr><th width="260">prize</th><th>percentage chance</th></tr></thead><tbody><tr><td>common</td><td>60%</td></tr><tr><td>rare</td><td>30%</td></tr><tr><td>super rare</td><td>8%</td></tr><tr><td>ultra rare</td><td>2%</td></tr></tbody></table>

`/autoresponder add trigger: response:{choose: common | rare | super rare | ultra rare}{weightedchoose: 60% | 30% | 8% | 2%} you got a [choice] prize, congratulations!`

## ✎ more traditional weights + decimals also OK!

* if you don't want to use percentages, you can also use weights, such as the follows. let's go back to the jelly / cake / cookie / smoothie / ice cream example we had at the beginning (:

<p align="center"> <code>{choose:jelly|cake|cookie|smoothie|ice cream} {weightedchoose:2|3|5|2|1} [choice]</code> </p>

* or even use decimals!

<p align="center"><code>{choose:frog|cat|dog|fish|bear|bird|elephant}{weightedchoose:0.12|0.04|0.18|0.09|0.023|0.19|0.15} [choice]</code></p>


# intermediate iii: locked choices

## ✎ why should i use locked choices?

* locked choices are a way to force, or "lock", a given value to a choice that's been randomly chosen.
* unlike choose, locked choices are **not** chosen randomly and are only chosen if the choice value it's locked to is chosen.
* this allows you some control with your choices, and can be used for things like harvest commands where certain foods are worth more, or commands with failure rates (like [.crime](/autoresponder/resources/autoresponder-examples#crime-command) or [.stealcookie](/autoresponder/resources/autoresponder-examples#stealcookie-command)).

## ✎ if *this*, then *that.*

* in essence, locked choices are a way to correspond an answer to whatever choice is chosen in the `{choose:}` variable.
* for example, using the variables`{choose: a | b | c}` followed by `{lockedchoose: 1 | 2 | 3},` would make it so whenever "a” is chosen, "1" would also be chosen as it's in the corresponding spot.&#x20;

![how the order of choices will then correspond.](/files/-MWWmr_NP7WLjcT_JrL0)

* this is because the order of the choice chosen in `{choose:}` will lock the choice in the `{lockedchoose:}`.
* let's take a quick example:

`/autoresponder add trigger:.stealfood reply:{choose: apple | nothing | pie} {lockedchoose: 100 | 0 | 500}{modifybal:[lockedchoice]} you stole [choice] and earned [lockedchoice]`

![creating a simple AR using locked choice](/files/tD73Xrc9lqPnDHcRaLQe)

{% hint style="info" %}
you should **always** list your choices in `{choose:}` before using the `{lockedchoose:}`variable. mimu needs to pick a value in your choose before forcing the locked choice.
{% endhint %}

* keep in mind that in order to reference your designated locked choice, you can use the `[lockedchoice]` placeholder.

![the autoresponder & its reply](/files/-MWW_g1yN_w-ozLkJqqQ)

* in this example, you can see that whenever `pie` is chosen, `500` is also chosen due to it being locked to the choices.&#x20;
* you can also think of this like a slot. the slots in choose and locked choose match up.
* in slot one of choose is apple, while in slot one of locked choose is 100. slot two of choose is nothing, so therefore in slot two of locked choose is 0. and so on and so forth.

{% hint style="info" %}
for as many choices, there should be the same amount of locked choices. if you're listing 5 choices, you **must** have 5 locked choices. otherwise, mimu will throw an error at you.
{% endhint %}

## ✎ using multiple locked choices

* similar to choice, you can have up to **4** locked choices with **4** choices.
* you can do this similarly to choose`{choose:} {lockedchoose:} {choose1:} {lockedchoose1:} {choose2:} {lockedchoose2:}{choose3:} {lockedchoose3:}`
* the corresponding placeholders are exactly what you think they will be.`[lockedchoice][lockedchoice1][lockedchoice2][lockedchoice3]`


# advanced i: different matchmodes

## ✎ what's a matchmode?

* by default, mimu only responds if your message is *exactly* your autoresponder's message.
* commonly known as "wildcard" in other bots, in order to make mimu respond to other variants of the trigger, you can use other matchmodes.

## ✎ setting a matchmode

* once you've created your autoresponder using `/autoresponder add`, you will be able to modify the matchmode. **you have to create the autoresponder before modifying the matchmode**.
* you can do so via:

`/autoresponder editmatchmode trigger:trigger matchmode:matchmode`

## ✎ what matchmodes are there?

### ♪ **exact**

* this means it only matches if the message's content is **EXACTLY** the same as the trigger; but **isn't case sensitive**. this is commonly used for [server verifications](/autoresponder/resources/autoresponder-examples#verification-system) or custom currency commands, like [.bake](/autoresponder/resources/autoresponder-examples#bake-command) or [.stealcookie](/autoresponder/resources/autoresponder-examples#stealcookie-command) commands.
* by default, all autoresponders are made with exact match mode.
* ex. if your trigger is `hey mimu`, mimu will **only respond when** your message is **exactly**`hey mimu`. it will not respond to `oh hey mimu`, `oh hey mimu how are you doing`, nor `hey mimu how are you?`

### ♪ **startswith**

* this means it only matches if your message's content begins with the trigger. this is commonly used for commands with arguments, like a [steal command](/autoresponder/resources/autoresponder-examples#steal-user-amount-command) or a [say command](/autoresponder/resources/autoresponder-examples#say-text-command).
* ex. if your trigger is `!cuddle`, mimu will respond if your message begins with `!cuddle`. it will respond to `!cuddle @user`, `!cuddle some random person`, as well as exact match, i.e. `!cuddle`. it will not respond if it ends with it, or if it's in the middle - like `oh !cuddle` nor `oh !cuddle pog`

### ♪ **endswith**

* in essence, this is the exact opposite of what **startswith** does - it means it only matches if your message's content ends with the trigger.
* ex. if your trigger is `welcome`, mimu will only respond if your message ends with `welcome`. it will respond to `@user, welcome`, as well as just the exact match, i.e. `welcome`. however, it will not respond if it's in the middle or if it has something after the trigger, i.e. it won't respond to `welcome @user!` nor `oh, a new member! welcome @user!`

### ♪ **includes**

* this means it responds to all messages as long as the content consists of the trigger. this is mostly used for specific terms or [anti-swearing](/autoresponder/resources/autoresponder-examples#antiswear-blacklisted-words).
* for example, if your trigger is `dumb`, then mimu will respond to ALL of the following. `dumb`, `you're dumb`, `i think that is dumb but i'm not sure`, `dumbo`, etc.


# advanced ii: using user arguments

## ✎ utilising user input

* the more you use autoresponders, the more complicated your ideas will get. by using the user's arguments, you'll be able to allow users to provide context.
* follow up to learning match modes from [advanced i](/autoresponder/guide/advanced-i-different-matchmodes), if your match mode is not `exact`, (i.e. it is `startswith`, `endswith`, or `includes`), you will be able to use your arguments as a part of your response via the `[$N]` variable.&#x20;
* this allows you to create commands where there are "user target" or for mimu to respond with the user's input.

{% hint style="info" %}
the `$` sign has **nothing to do with money or currency**. it is simply the symbol developers decided to use for reference of arguments!\
\
the `N` letter refers to **any number**. you do not *literally* put `[$N]` in your response, you should put `[$1]`, `[$2]`, `[$3]`...
{% endhint %}

#### i'm still confused on why i would need this

* let's take a simple `!kiss` command. you've changed it so the match mode is `startswith` so that mimu responds, like below:

`/autoresponder add trigger:!kiss reply:awwh, how cute, you kissed them!`

`/autoresponder editmatchmode trigger:!kiss matchmode:startswith`

![without arguments](/files/-MWVATXLmOmPFcVOE402)

![the "startswith" matchmode also responds with text after the trigger](/files/-MWVF1ZzZE8F4gv3zMAq)

* as you can see, regardless of what the text / user input is after the trigger, the response is always static.
* now, the problem is, wouldn't it be cool if it responded with "awwh, how cute, @iara kissed @pillowow" instead?
* this is why you might want to use user arguments:&#x20;

`/autoresponder editreply trigger:!kiss reply: awwh, how cute, {user} kissed [$1]!`

![using user arguments as a part of your response](/files/-MWVYr0rr6LJYR4yWbvf)

## ✎ how do i use user arguments?

* in order to refer to the extra words *before or after* the autoresponder trigger (depending on the type of matchmode you have), you have to replace N with the number of the word you'd like to use as a placeholder in the response.
* for instance, `[$1]` would be the first word, `[$2]` would be the second word, `[$3]` would be the third word, and so on, so forth.
* you can also chain multiple words together using the `+` sign.
* for example, `[$1+]` would be the placeholder to show the first word and everything afterwards; and `[$2+]`would be the placeholder to show the second word and everything afterwards.
* you can also do a range of arguments, for example, `[$3-5]` would be equivalent to `[$3] [$4] [$5]` , which returns the 3rd, 4th and 5th words.

![a more visual example of what arguments are](/files/-MWVGtTsoxDRj_T2JLyz)

## ✎ exercise questions

let's do a quick exercise! you can jump to the [exercise answers](/autoresponder/guide/advanced-ii-using-user-arguments#exercise-answers) when you're done.

1. what's `[$1]` in the following ar?
   * creating the ar: `/autoresponder add trigger:welcome reply:let's welcome [$1]!`
   * editing matchmode: `/autoresponder editmatchmode trigger:welcome matchmode:startswith`
   * trigger: `welcome iara to the server!`
2. what's `[$2+]` in the following ar?
   * creating the ar: `/autoresponder add trigger:.bonk reply:you bonked [$1] with [$2+]!`
   * editing matchmode: `/autoresponder editmatchmode trigger:.bonk matchmode:startswith`
   * trigger: `.bonk iara a fish i found from the sea`
3. what's mimu's response to the following ar?
   * creating the ar: `/autoresponder add trigger:are cool reply:i see that you find [$1+] cool.`
   * editing matchmode: `/autoresponder editmatchmode trigger:are cool matchmode:endswith`
   * trigger: `hoodies without the hood are cool`
4. let's try something more abstract. what's mimu response to the following ar?
   * creating the ar: `/autoresponder add trigger:.guess reply:[$1] [$3-$5]`
   * editing the matchmode: `/autoresponder editmatchmode trigger:.guess matchmode:startswith`
   * trigger: `.guess abc def ghi jkl mno pqr`

## ✎ some practical examples

below we've given you some simple yet easy to understand examples for you to start with.

| commands                                                                                                                                                                                                           | example input + output                                                                                                                                         |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <p><code>/autoresponder add trigger:.cuddle reply:you cuddled \[$1+]!</code></p><p><code>/autoresponder editmatchmode trigger:.cuddle matchmode:startswith</code></p>                                              | <p>input: <code>.cuddle iara and mimu</code></p><p>response: <code>you cuddled iara and mimu!</code></p>                                                       |
| <p><code>/autoresponder add trigger:are cute reply:i see, you find \[$1+] cute!</code></p><p><code>/autoresponder editmatchmode trigger:are cute matchmode:endswith</code></p>                                     | <p>input: <code>japanese things are cute</code></p><p>output: <code>i see, you find japanese things cute!</code></p>                                           |
| <p><code>/autoresponder add trigger:.sleep reply:you made \[$1] sleep by \[$2+]</code></p><p><code>/autoresponder editmatchmode trigger:.sleep matchmode:startswith</code></p>                                     | <p>input: <code>.sleep iara throwing pillows</code></p><p>output: <code>you made iara sleep by throwing pillows</code></p>                                     |
| <p><code>/autoresponder add trigger:iara reply:{sendto:#logs} hey @iara, {user\_name} mentioned your name in {channel}!</code></p><p><code>/autoresponder editmatchmode trigger:iara matchmode:includes</code></p> | <p>input: </p><p><code>lol iara is stupid >-></code></p><p>output (in #logs):</p><p><code>hey @iara#0001, username mentioned your name in #channel!</code></p> |

{% hint style="info" %}
if you use `includes` with the `[$N]` placeholder for arguments, all arguments will be chained together. for example, if your trigger is `uwu` and you type `a b c uwu d e`, then `[$1] = a, [$2] = b, [$3] = c, [$4] = d, [$5] = e`, and `[$1+] = a b c d e`.
{% endhint %}

## ✎ using user arguments in user placeholders

* in order to convert user placeholders to a "targeted" user (a user outside of that invoked), you can convert [user placeholders found in the variable list](/autoresponder/resources/variables-placeholders-and-functions#user-author-information) to a function.
* here's a quick example:
  * typically, `{user_createdate}` returns the user's invoked create date.
  * however, if you did `{user_createdate:[$1]}` , it returns the first argument user's create date.
* this allows you to create information commands of **other users**. let's view a quick example here:

`/autoresponder add trigger:.membinfo reply:{requirearg:1|user} showing information of {user_tag:[$1]} . . .` \
`loading . . . !`\
`> - server nick : {user_nick:[$1]}`\
`> - joined serv : {user_joindate:[$1]}`\
`> - joined disc : {user_createdate:[$1]}`\
`> - server bal  : {user_balance:[$1]}`

`/autoresponder editmatchmode trigger:.membinfo matchmode:startswith`

<figure><img src="/files/XKz0BsnJZuaj3sh4NAtJ" alt=""><figcaption></figcaption></figure>

* this is fantastic because this allows you to create commands and gain more information on other users other than the user invoked.

## ✎ using user arguments in functions

* as you may expect, you can also utilise these user argument placeholders in your functions, too!
* some functions allow you to take the action on another specified user via an optional argument.

let's view a quick example of a command that allows you to manually verify people to enter your server:

/`autoresponder add trigger:.verify reply:{requirerole: Mods} {addrole: @verified | [$1+]} {user} has verified [$1+] !`\
`/autoresponder editmatchmode trigger:.verify matchmode:startswith`

![](/files/-MWVRxBjBP8p94fDUNWT)

* in this example, we're using the `{addrole:}` function. as seen in the [documentation of the variable list](/autoresponder/resources/variables-placeholders-and-functions#miscellaneous), this accepts an optional "user" input after the pipe |, i.e. `{addrole:[role]|<user>}`.
* hence, if someone with the role "Mods" runs `.verify @user`, `[$1+]` would be defined as the @user which would be filled in the function as `{addrole:@verified | @user}`.
* note that `[$1+]` allows verification of users with spaces in their username, *not* verification of multiple users at once, as it accepts user#tag inputs too.

{% hint style="info" %}
there are several functions that accept an optional "user" input! check out the [function list](/autoresponder/resources/variables-placeholders-and-functions#function-list) for more information.
{% endhint %}

## ✎ requiring specific arguments to be specific type of input

* as you get more complex with using arguments, you may want the user to input specific types of data.
* by using the `{requirearg:}` function, you can make mimu tell the user they might have done something wrong if they provide invalid arguments.

### ♪ when will i need to use this?

* let's go back to the [kiss command we made earlier](/autoresponder/guide/advanced-ii-using-user-arguments#im-still-confused-on-why-i-would-need-this), but now we'll quickly add user inputs in, so we have this:

`/autoresponder editreply trigger:!kiss reply:awwh, how cute! {user} kissed [$1] !`

* however, users who didn't write this autoresponder might not know that they have to @mention the user they want to kiss (and hence they might just type `!kiss`  without other arguments.
* this means arguments will be missing as `[$1]` isn't defined by the user input.&#x20;
* by requiring arguments, you will prevent the user from sending incorrect data.

### ♪ how do i use this?

* the `{requirearg:}` variable accepts a number, with an optional type after the pipe | symbol.
* ex. you want to make the user define `[$1]` (i.e. the first argument), then you can put `{requirearg:1}` in your autoresponder response area.
* ex 2. if you'd like to make the user define `[$1]` (i.e. the first argument) but it **has to be a user**, then you can put `{requirearg:1|user}` in your autoresponder response area.
* this also extends for other types. the current supported types are `user`, `channel`, `color`, `role` and `number`.

let's view an example.

`/autoresponder add trigger:!cuddle reply:{requirearg:1|user} {user} cuddled [$1] c:`\
`/autoresponder editmatchmode trigger:!cuddle matchmode:startswith`

![output when the user doesn't put in the right arguments!](/files/-MWVPFrzQ0lMlXGbjl12)

![when the user puts in the right arguments](/files/-MWVPQYc3XyWl1WQ5RAA)

{% hint style="info" %}
this allows you to create even more complex commands that modify other people's balances, for example; or create commands where you can specify colors for the embed, or otherwise. check out the [steal command example](/autoresponder/resources/autoresponder-examples#steal-user-amount-command) and [embedsay command example](/autoresponder/resources/autoresponder-examples#embedsay-color-text-command).
{% endhint %}

## ✎ exercise answers

1. iara
2. a fish i found from the sea
3. i see you find hoodies without the hood cool.
4. abc ghi jkl mno

## [⚠️](https://emojipedia.org/emoji/%E2%9A%A0%EF%B8%8F/) important reminder - READ!

* it is advised that if you're going to use arguments, you should try to require arguments and their types as much as possible, as mentioned in the [require specific arguments to be a specific type of input](/autoresponder/guide/advanced-ii-using-user-arguments#requiring-specific-arguments-to-be-specific-type-of-input) section.&#x20;
* this has better error messaging, which in turns allows the user to figure out what they did wrong.

![it's always better to tell the user what they did wrong.](/files/-MWYc0iBNV9Gh0OSD620)

* it's also **strongly advised to embed your responses if you do not specify a specific type of input**. i.e. `{requirearg:1}` only, or no `{requirearg:}` function variable anywhere.
* this is because if a user inputs a role mention as their arguments, mimu **will respond with such arguments in the response** which may cause unwarranted role mentions **if you have given mimu the permission to ping any role regardless of the mention toggle or the ADMINISTRATOR permission, like this**:

![if you've decided to give Mimu this permission.](/files/-MWYd9mkQdCWyBMg0zvA)

![OR this permission.](/files/-MWYdH04dIpqNUjscnhm)

* this **prevents bad users in your server from cold-mentioning roles through these custom autoresponders** and hence safeguards your server !

![if the user decides to put roles in arguments, but you don't have any filtering](/files/-MWYcETUae6gB4fqjPLW)

* since embeds have role mentions suppressed, this will prevent people from using your AR in a malicious way.

![use embeds to avoid people abusing your AR.](/files/-MWYcbNvUcMlIiNx684d)


# advanced iii: modifying inventory and using args

* this page utilizes concepts and functions found on our [advanced ii: using user arguments](/autoresponder/guide/advanced-ii-using-user-arguments) guide.
* if you haven't visited or don't fully understand that page yet, return to this after you do!

{% hint style="info" %}
for inventory commands, make sure you have items added to your shop before continuing!
{% endhint %}

## ✎ the {modifyinv:} variable

* the variable itself isn't very complex for basic usage! but, when combined with user arguments, it can get messy really quickly.
* this variable modifies the inventory of a user by either adding or removing an item from a user's `/balance` , under the "inventory" field.
* the command accepts 3 options:\
  `{modifyinv: [item name/ID] | [+/- quantity] | <user>}`

{% hint style="warning" %}
if using an item name in the variable, the name must be **exact.** for example, if I have an item named "chocolate chip cookie", the variable must be `{modifyinv: chocolate chip cookie | 1}`, not `{modifyinv: cookie | 1}` or any other variants. for this reason, we always recommend using the item's ID option.
{% endhint %}

* notice: the user option is *optional.* you must have an item name/ID and quantity in the variable when using it.

## ✎ what does this have to do with user arguments?

* you're probably thinking, "oookay, so why is this more advanced?"&#x20;
* the concept in practice can get very tricky for beginners, especially as we introduce user arguments.
* let's say I want to make a command called `.shake tree` that requires another user. this command will give an item for both users\
  `/autoresponder add trigger:.shake trees reply:{requirearg: 1 | user}{range:2-10}{embed}{modifyinv: coconut | 1}{modifyinv: coconut | 1 | [$1]} you shook a tree . . . [range] coconuts fell out! you each took one and stashed it in your inventory.`\
  \
  `/autoresponder editmatchmode trigger:.shake trees matchmode:startswith`

<figure><img src="/files/KMhvXcMallXudg1TgTkZ" alt=""><figcaption><p>the command after use</p></figcaption></figure>

* now, check your inventory to see the item added by using `/inventory` ; or, alternatively, using `/balance`, then clicking the blue button with a box.
*

```
<figure><img src="/files/4G643xA7BKPHlvuDnX7g" alt=""><figcaption><p>the button at the bottom of <code>/balance</code></p></figcaption></figure>
```

* the item "coconut" was added to both users - the user who ran the command, and the user that was mentioned in the command.
* you can even take it a step further, requiring items using `{requireitem:}` or displaying both users' current amount of the item by adding `{user_item_count: coconut}` and `{user_item_count: coconut | [$1]}` to the autoresponder's reply.

{% hint style="danger" %}
we **highly** recommend requiring items when modifying someone's inventory, specifically if removing items. users cannot have negative amounts of an item in their inventory, so if removing an item, it will remove only what they have.&#x20;
{% endhint %}


# expert i: static button responders

we're going to learn more about button responders, which is a subtype of autoresponders.

## what are button responders?

* button responders are a "type" of autoresponder. so far, in this guide, we've only touched on **message** autoresponders, where the bot will **always respond to a message**.
* instead: button responders **respond to a click of a button.**
* it has a near-mirror functionality to autoresponders, accessing to almost all variables, but can be **used in tandem with autoresponders**, allowing different branches of user input.

{% hint style="info" %}
**static** button responders are buttons that stay in a channel over a long period of time and will be clicked by more than one person, such as **verification buttons on rules**, **button roles**, etc.
{% endhint %}

## your first button responder

let's start by making your first button responder! you can do so with **/buttonresponder add**. as you run the command, you'll find a couple settings:

* `name` : this is similar to an embed name - it's just a reference ID that'll be used when you create, edit, delete or send it
* `reply` : this is mimu's response when someone clicks the button - similar to the **autoresponder raw reply**.&#x20;
* *displayed on the button:*

  * `label` : this refers to the **text that's on the button**. not to be confused with name!
  * `emoji`: this refers to the **emoji that's on the left of the button**.&#x20;
  * you must have a `label`, `emoji` or both on the button

  <figure><img src="/files/nFlmGHvTVGaDNCZ2kYrB" alt=""><figcaption><p>you must have an emoji or a label</p></figcaption></figure>

  * `color`: this refers to the color of the label; which is available in four colors: **blue**, **green**, **grey** and **red**. it defaults to blue.

<figure><img src="/files/ZRbx8a1TVHesD6DeJADj" alt=""><figcaption><p>button colors that are available - these colors are preset by discord and cannot be a custom hex code.</p></figcaption></figure>

{% hint style="info" %}
other settings like `limitations` and `invoker_only` will be discussed in [expert ii: instantiated buttons](/autoresponder/guide/expert-ii-instanced-button-responders). for now - ignore them.
{% endhint %}

### making a button that adds a role

for your first button responder, we're going to make a button that adds a role, with the `{addrole:}` function.&#x20;

<figure><img src="/files/b5qqR4CfZsyEDlCBw6Qu" alt=""><figcaption><p>creating a button responder</p></figcaption></figure>

`/buttonresponder add name:role_panel1 reply:{addrole:@pink}{embed} you now have the pink role! label:pink color:grey emoji::pink_heart:`

<figure><img src="/files/B1Nd2UcQxZt3bISX1nVt" alt="" width="375"><figcaption><p>here's the result!</p></figcaption></figure>

* you'll notice that once you create a button responder, it shows options similar to a normal message auto responder.
* it also creates the button below it to allow you to test it then and there!

### creating multiple buttons

now that you've created your first button, let's create a couple more! in this example, we're going to make a simple panel of buttons for color roles.

1. first, we're going to update the pink button we made earlier:

   `/buttonresponder edit reply name:role_panel1 reply:{addrole:@pink}{removerole:@blue}{removerole:@yellow}{embed} you now have the @pink role !`
2. and then we're going to add two more buttons for each color:

   `/buttonresponder add name:role_panel2 reply:{addrole:@blue}{removerole:@pink}{removerole:@yellow}{embed} you now have the @blue role ! label:blue emoji::blue_heart: color:grey`

   `/buttonresponder add name:role_panel3 reply:{addrole:@yellow}{removerole:@pink}{removerole:@blue}{embed} you now have the @yellow role ! label:yellow emoji::yellow_heart: color:grey`

<figure><img src="/files/7HniRo4luo1ty91MXUOx" alt="" width="375"><figcaption><p>blue role button!</p></figcaption></figure>

<figure><img src="/files/zzKdIgcKcKym2TcRGc3o" alt="" width="375"><figcaption><p>yellow role button!</p></figcaption></figure>

3. then, we're going to use a premade embed to make it look cute!&#x20;

   `/embed create choose_color`

<figure><img src="/files/XVKROQTktEFuQTpOwgzv" alt=""><figcaption><p>creating the embed</p></figcaption></figure>

### using /send command to post static button responders

* to post a role panel (which consists of an embed and buttons), we're going to use the **/send** command, combining all of the buttons and embed we made into one message.
  * to attach the button, we'll use `{addbutton:button_name}`

`/send content:{embed:choose_color}{addbutton:role_panel1}{addbutton:role_panel2}{addbutton:role_panel3} channel:#choose-roles`

* when sent successfully, **#choose-roles** channel looks like this:

<figure><img src="/files/RQSFCSFztBTrHpGirVo3" alt="" width="280"><figcaption></figcaption></figure>

* and here's what it looks like in action!

<figure><img src="/files/s4qHVXU869oqLIu9vrpo" alt=""><figcaption><p>our role panel working in action!</p></figcaption></figure>


# expert ii: instanced button responders

let's utilize button responders that are instanced - i.e. are generally used temporarily only, or triggered by other commands.

* `limitations`: this sets limitations of how the button can be used. by default, it is set to **not limited**.
  * no limitations: the button never gets disabled
  * limited: the button gets disabled when someone clicks on it

<figure><img src="/files/65u9j66J3cuEn9tfv4Ii" alt=""><figcaption><p>limited buttonresponder limitation</p></figcaption></figure>

* strict: the button, and any other buttons in the same message, gets disabled on the first click

<figure><img src="/files/WcGVqBPWD3Y7RgLC1tNs" alt=""><figcaption><p>strict buttonresponder limitations</p></figcaption></figure>

* `invoker_only`: this sets whether other people can use the button other than the person that summoned it
  * no limit: the button can be used by anyone
  * invoker only: the button can only be used by the person who initiated it. if the button is attached to... (examples; not limited to these!)
    * a welcome message, only the person who joined can click the button
    * an autoresponder, only the person who typed the autoresponder can click the button
    * an item reply, only the person who used the item can click the button


# resources

click a card below for the resource it names\~

<table data-card-size="large" data-view="cards" data-full-width="true"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td></td><td>variables - placeholders &#x26; functions</td><td></td><td><a href="/pages/-MWRbOm17SWvZnx7C7vP">/pages/-MWRbOm17SWvZnx7C7vP</a></td></tr><tr><td></td><td>examples</td><td></td><td><a href="/pages/-MWRX9kh6tRMYnMGTjN9">/pages/-MWRX9kh6tRMYnMGTjN9</a></td></tr></tbody></table>


# variables - placeholders & functions

* you can escape a placeholder or function via a backslash `\` before your placeholder. this way, the placeholder will not replace (e.g. `\{user}`).

## ✎ placeholder list

{% hint style="info" %}
a bit confused on what a placeholder is? check out our beginner guide on [using simple placeholders](/autoresponder/guide/using-simple-placeholders).
{% endhint %}

### ♪ user / author information

* **advanced usage:** user information can all be extended into a function to swap the user target of the information. for example, `{user_balance:395526710101278721}` would provide balance of that specific user id.
* this means that `{user_balance:[$1]}` can provide the user balance of the first argument. for more information, read[ advanced ii: using user arguments in placeholders](/autoresponder/guide/advanced-ii-using-user-arguments#using-user-arguments-in-user-placeholders).

<table data-header-hidden><thead><tr><th>variable</th><th width="242">example</th><th>description</th></tr></thead><tbody><tr><td>variable</td><td>example</td><td>description</td></tr><tr><td><code>{user}</code></td><td>@iara</td><td>the user's @mention</td></tr><tr><td><code>{user_tag}</code></td><td>iara</td><td>the user's username <del>and tag</del><br>✦ tags have been deprecated by Discord</td></tr><tr><td><code>{user_name}</code></td><td>iara</td><td>the user's username</td></tr><tr><td><code>{user_avatar}</code></td><td><a href="https://cdn.discordapp.com/embed/avatars/0.png">https://cdn.discordapp.com<br>/embed/avatars/0.png</a></td><td>the user's avatar</td></tr><tr><td><code>{user_discrim}</code></td><td>0</td><td>the user's discriminator  <del>(the numbers after your username)</del><br>✦ tags have been deprecated by Discord</td></tr><tr><td><code>{user_id}</code></td><td>395526710101278721</td><td>the user's id</td></tr><tr><td><code>{user_nick}</code></td><td>iara c:</td><td>the member's nickname in the server, if applicable</td></tr><tr><td><code>{user_joindate}</code></td><td>Wed, Aug 15, 2018 2:32 AM</td><td>the date of when the member joined the server</td></tr><tr><td><code>{user_createdate}</code></td><td>Wed, Dec 27, 2017 10:41 AM</td><td>the date of when the user joined discord</td></tr><tr><td><code>{user_displaycolor}</code></td><td>#ffdfdf</td><td>the member's hex color when chatting</td></tr><tr><td><code>{user_boostsince}</code></td><td>Wed, Mar 17, 2021 7:13 PM</td><td>the date the member has been boosting the server since (if they're not a booster, it'll say "Not a Booster")</td></tr><tr><td><code>{user_balance}</code></td><td>21983</td><td>the member's balance</td></tr><tr><td><code>{user_balance_locale}</code></td><td>21,983</td><td>the member's balance but with locale (comma separator)</td></tr><tr><td><code>{user_item:}</code></td><td><code>{user_item:apple}</code> = 1 × apple</td><td>shows the user's quantity &#x26; name of a specified item</td></tr><tr><td><code>{user_item_count:}</code></td><td><code>{user_item_count:apple}</code> = 1</td><td>shows the quantity of a specified item</td></tr><tr><td><code>{user_inventory}</code></td><td>1 × apple<br>2 × banana</td><td>shows the user's entire inventory</td></tr></tbody></table>

### ♪ server general information

| variable                              | example                                                                                                                  | description                                                                                                        |
| ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ |
| `{server_name}`                       | = m i m u =                                                                                                              | the server's name                                                                                                  |
| `{server_id}`                         | 479115079338557469                                                                                                       | the server's id                                                                                                    |
| `{server_membercount}`                | 407                                                                                                                      | the server's member count                                                                                          |
| `{server_membercount_ordinal}`        | 203rd                                                                                                                    | the ordinal number of the member count                                                                             |
| `{server_membercount_nobots}`         | 400                                                                                                                      | the server's member count, but without bots\*                                                                      |
| `{server_membercount_nobots_ordinal}` | 309th                                                                                                                    | the ordinal number of the server's member count without bots\*                                                     |
| `{server_botcount}`                   | 7                                                                                                                        | the server's bot count\*                                                                                           |
| `{server_botcount_ordinal}`           | 2nd                                                                                                                      | the ordinal number of the server's  bot count\*                                                                    |
| `{server_icon}`                       | <p><a href="https://cdn.discordapp.com/embed/avatars/0.png"><https://cdn.discordapp.com><br>/embed/avatars/0.png</a></p> | the server's icon                                                                                                  |
| `{server_rolecount}`                  | 40                                                                                                                       | the server's role count                                                                                            |
| `{server_channelcount}`               | 20                                                                                                                       | the server's channel count (includes all types of channels)                                                        |
| `{server_randommember}`               | @iara                                                                                                                    | the @mention of a random member of your server\*\*                                                                 |
| `{server_randommember_tag}`           | iara                                                                                                                     | <p>the user <del>and tag</del> of a random member of your server\*\*<br>✦ tags have been deprecated by Discord</p> |
| `{server_randommember_nobots}`        | @iara                                                                                                                    | the @mention of a random member (that is not a bot) of your server\*\*                                             |
| `{server_owner}`                      | @iara                                                                                                                    | the @mention of the server owner                                                                                   |
| `{server_owner_id}`                   | 395526710101278721                                                                                                       | the user id of the server owner                                                                                    |
| `{server_createdate}`                 | Wed, Dec 27, 2017 10:41 AM                                                                                               | <p>the date the server was </p><p>created on</p>                                                                   |

\* = due to discord's constraints with intents, the numbers of bots / without bots can be unreliable since october 2020. this is a result of not being able to cache every bot without caching all members in your server. servers with **premium** are equipped with premium caching to bypass these restraints.

\*\* = due to discord's constraints with intents, random member variables only consists of cached members (usually members who are active in your chat). servers with **premium** are equipped with premium caching to bypass these restraints.

### ♪ server boost information

| variable                                 | example | description                                                                    |
| ---------------------------------------- | ------- | ------------------------------------------------------------------------------ |
| `{server_boostlevel}`                    | 2       | the boost level, from 0 to 3, of the server                                    |
| `{server_boostcount}`                    | 7       | the number of boosts the server has                                            |
| `{server_nextboostlevel}`                | 3       | the boost level the server is heading towards.\*                               |
| `{server_nextboostlevel_required}`       | 14      | the number of boosts needed in total to reach the next boost level.\*          |
| `{server_nextboostlevel_until_required}` | 7       | the number of boosts the server needs in order to reach the next boost level\* |

\* = returns "Max Level Reached" if it's already at level 3.

### ♪ server settings' information

| variable            | example | description                                                                                            |
| ------------------- | ------- | ------------------------------------------------------------------------------------------------------ |
| `{server_prefix}`   | /       | the server's prefix -- globally, mimu uses slash (/) commands, so this variable will always return "/" |
| `{server_currency}` | 🍪      | the server's currency                                                                                  |

### ♪ channel information

| variable               | example                   | description                              |
| ---------------------- | ------------------------- | ---------------------------------------- |
| `{channel}`            | #general                  | the mention of the channel               |
| `{channel_name}`       | media                     | the name of the channel                  |
| `{channel_createdate}` | Sun, Dec 27, 2020 3:11 AM | the date of when the channel was created |

### ♪ message information

| variable            | example                                                                                                                                                                                                                      | description                                                                                                                                                    |
| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `{message_id}`      | 8832493284932843t                                                                                                                                                                                                            | the id of the message that triggered the autoresponder                                                                                                         |
| `{message_content}` | hi! i'm new!                                                                                                                                                                                                                 | <p>the content of the message that triggered the autoresponder. <br><em>pro-tip! it's the same as</em> <code>\[$1+]</code>, <em>but with the trigger.</em></p> |
| `{message_link}`    | <p><a href="https://canary.discord.com/channels/479115079338557469/500910593679687680/837680632225464430"><https://canary.discord.com><br>/channels/4791150793385<br>57469/50091059367968<br>7680/837680632225464430</a></p> | the link to the message that triggered the autoresponder.                                                                                                      |

### ♪ misc&#x20;

| variable    | example                               | description                                                                                                                                                           |
| ----------- | ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `{date}`    | Tue, April 27, 2021 10:41 AM          | the date, now.                                                                                                                                                        |
| `{newline}` | <p>text line one<br>text line two</p> | adds a new line. note: this only works with `/embed edit` and `/autoresponder add/editreply` commands due to discord's limitation on new lines within slash commands. |

### ♪ unique / situational

these refer to variables that only work in special situations.

<table><thead><tr><th>variable</th><th>example</th><th>usable in...<select><option value="ZAUHmiA2Nbb6" label="pick message" color="blue"></option></select></th><th>description</th></tr></thead><tbody><tr><td><code>{pick_code}</code></td><td>j0yZ</td><td><span data-option="ZAUHmiA2Nbb6">pick message</span></td><td>the code to /pick with. only valid if pickhard is on.</td></tr><tr><td><code>{pick_amount}</code></td><td>31</td><td><span data-option="ZAUHmiA2Nbb6">pick message</span></td><td>the amount the <code>/pick</code> gives. if your picktype is <code>multiple</code> then it will say "handful of currency" instead.</td></tr></tbody></table>

### ♪ advanced placeholders

there are no examples for these because this depends on either user input, or something else, and could **simply be anything**.

{% hint style="info" %}
there are no examples for these because this depends on either user input, or defined elsewhere in your autoresponder. this can be simply anything.

for information on using this, please view intermediate guides on[ ranges and making choices](/autoresponder/guide/intermediate-i-ranges-and-making-choices), [locked choices](/autoresponder/guide/intermediate-ii-locked-choices), as well as advanced guides on [different matchmodes](/autoresponder/guide/advanced-i-different-matchmodes) and using [user arguments](/autoresponder/guide/advanced-ii-using-user-arguments).
{% endhint %}

| variable         | description                                                                                                                                              |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `[range]`        | the range response made from the range in the {range:} function.                                                                                         |
| `[choice]`       | the choice made from the chosen list in the `{choose:}` function.                                                                                        |
| `[lockedchoice]` | the corresponding locked choice made from `{lockedchoose:}` function                                                                                     |
| `[$N]`           | the Nth argument/word used to trigger the autoresponder send by the user. only applicable for modes of autoresponder that is not`exact.`                 |
| `[$N+]`          | the Nth word and words after that was used to trigger the autoresponder send by the user. only applicable for modes of autoresponder that is not`exact.` |
| `[$N-Z]`         | the Nth to Zth words / arguments used to trigger the autoresponder send by the user. only applicable for modes of autoresponder that is not`exact.`      |

## ✎ function list

{% hint style="info" %}
completely lost? check out our beginner guide on [using simple functions](/autoresponder/guide/beginner-ii-using-simple-functions).
{% endhint %}

### ♪ formatting and redirecting

| `{dm}`      | `{dm}`                                                                                          | redirects the response to be in dms.                                                                                                                                                                                                                                                                            |
| ----------- | ----------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `{sendto:}` | `{sendto:#general}`                                                                             | redirects the response to the channel specified. by default, it is the channel the autoresponder is invoked in.                                                                                                                                                                                                 |
| `{embed:}`  | <p><code>{embed}</code><br><code>{embed:#ffffff}</code><br><code>{embed:embed\_name}</code></p> | turns the reply to an embed. if input is provided, then you can put in a hex color, or a premade custom embed from the `/embed` command.                                                                                                                                                                        |
| `{silent:}` | <p><code>{silent}</code><br><code>{silent: u cant use dis!}</code></p>                          | <p>allows you to silent long-form errors, like permission errors and \[$N] argument related errors. this isn't an exhaustive list, but it silents a majority.<br>⚠️ be careful with this! autoresponders are intended to be used with the error messages. only add this as a last step of an autoresponder.</p> |

### ♪ auto-deletions

| variable          | usage               | description                                              |
| ----------------- | ------------------- | -------------------------------------------------------- |
| `{delete}`        | `{delete}`          | delete's the triggering message to the autoresponder     |
| `{delete_reply:}` | `{delete_reply:10}` | deletes the bot's reply after a given number of seconds. |

### ♪ limit autoresponder permission

{% hint style="info" %}
you can enable this to multiple users / permissions / roles / channels etc. by putting multiple function variables in your autoresponder.
{% endhint %}

| variable            | usage                                                                                              | description                                                                                                                                                                                         |                                                                  |                   |                                                                                                                                                                                                                                      |
| ------------------- | -------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `{requireuser:}`    | <p><code>{requireuser:iara#0001}</code><br><code>{requireuser:395526710101278721}</code></p>       | limit the autoresponder to only respond to a specified user.                                                                                                                                        |                                                                  |                   |                                                                                                                                                                                                                                      |
| `{requireperm:}`    | `{requireperm:manage_server}`                                                                      | limit the autoresponder to only respond if they have specified permission                                                                                                                           |                                                                  |                   |                                                                                                                                                                                                                                      |
| `{requirechannel:}` | <p><code>{requirechannel:#general}</code><br><code>{requirechannel:598897082450968617}</code></p>  | limit the autoresponder to only respond if it's ran in specified channel                                                                                                                            |                                                                  |                   |                                                                                                                                                                                                                                      |
| `{requirerole:}`    | `{requirerole:@mods} {requirerole:484312842821173250}`                                             | <p>limit the autoresponder to only respond if the user has the specified role<br></p><p><em>if the user does not have the specified role, it replies stating that they need specific roles</em></p> |                                                                  |                   |                                                                                                                                                                                                                                      |
| `{denychannel:}`    | <p><code>{denychannel:#general}</code></p><p><code>{denychannel:693258562603843707}</code><br></p> | ignores the autoresponder trigger when run in the specified channel                                                                                                                                 |                                                                  |                   |                                                                                                                                                                                                                                      |
| `{denyperm:}`       | <p><code>{denyperm:Manage Roles}</code></p><p><code>{denyperm:Manage\_Messages}</code><br></p>     | ignores the autoresponder trigger when the user has the specified permission                                                                                                                        |                                                                  |                   |                                                                                                                                                                                                                                      |
| `{denyrole:}`       | <p><code>{denyrole:@mischevious}</code></p><p><code>{denyrole:693486619751350293}</code><br></p>   | ignores the autoresponder trigger when the user has the specified role                                                                                                                              |                                                                  |                   |                                                                                                                                                                                                                                      |
| `{requirebal:}`     | <p><code>{requirebal:100}</code><br><code>{requirebal: 100                                         | iara}</code></p>                                                                                                                                                                                    | requires the user’s balance to be at least the specified amount. |                   |                                                                                                                                                                                                                                      |
| `{requireitem:}`    | <p><code>{requireitem:apple}</code><br><code>{requireitem: apple                                   | 3}</code><br><code>{requireitem: apple                                                                                                                                                              | 3                                                                | \[$1]}</code></p> | <p>requires an item in the user's inventory with the option to require an amount of an item as well as a user<br><br>if using the optional user argument in the variable, you can only check/require up to 3 users' inventories.</p> |

### ♪ misc

\| `{modifybal:}`     | <p><code>{modifybal:+1000}</code></p><p><br><code>{modifybal:+1000}</code></p><p><code>{modifybal:=10000}</code></p><p><code>{modifybal:\*2}</code></p><p><code>{modifybal:/3}</code></p><p></p><p><code>{modifybal:+1000 | iara#0001}</code></p><p><code>{modifybal:-1000 | iara#0001}</code></p><p><code>{modifybal:=10000 | iara#0001}</code></p><p><code>{modifybal:*2 | iara#0001}</code></p><p><code>{modifybal:/3 | iara#0001}</code></p><p></p><p><code>{modifybal:+1000 | \[$1]}</code></p> | <p>adds, removes, sets, divides, or multiplies from user balance.</p><p><br>can only change by up to ±100,000 at once, and only 3 users at once.<br></p><p>supports the following simple math functions:<br><code>+</code> adds specified amount to existing balance</p><p><code>-</code> subtracts specified amount to existing balance</p><p><code>=</code> sets balance to be that specified amount</p><p><code>*</code> multiplies the existing balance by specified amount</p><p><code>/</code> divides the existing balance by specified amount</p><p><br>can change balance from other users too, if you add the optional argument "user" after the pipe |.</p>                                                                                                                                          |
\| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
\| `{modifyinv:}`     | <p><code>{modifyinv: apple | 2}</code><br><code>{modifyinv: 53ab4795-d628-467d-bc59-20252a1d55bc | -2}</code><br><br><code>{modifyinv: apple | 2 | \[$1]}</code><br><code>{modifyinv: apple | -2 | iara}</code></p>                                                                                                                                                                                                                                                                                 | <p>adds or removes a specified amount of an inventory item from a user's <code>/balance</code> with an optional user argument<br><br>users can only have 10,000 of a certain item in their inventory, with exception to <a href="https://mimu.bot/donate">premium servers</a>, where it is 1,000,000,000. </p><p><br><code>+</code> adds specified item amount to existing inventory</p><p><code>-</code> subtracts specified item amount to existing inventory<br><br>if the person doesn't have enough of an item for you to "remove", it'll remove their existing item count but it won't put them in the "negative" amount of an item, and will not reply with an error.<br><br>this function is separate from stock in your <code>/shop add</code> - it will <em>not</em> reduce your amount of stock.</p> |
\| `{cooldown:}`      | `{cooldown:600}`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | sets a cooldown for the autoresponder to be ran in, in seconds.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
\| `{addrole:}`       | <p><code>{addrole:@cool kids}</code></p><p></p><p><code>{addrole:@verified | iara#0001}</code></p><p></p><p><code>{addrole:@verified | \[$1]}</code></p>                                                                                                                                                                                                                                                                                                                                            | <p>adds role to the user.</p><p></p><p>optionally, you can add roles to other users, too, if you add the optional argument "user" after the pipe |.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
\| `{removerole:}`    | <p><code>{removerole:@cool kids}</code></p><p></p><p><code>{removerole:@muted | iara#0001}</code></p><p></p><p><code>{removerole:@muted | \[$1]}</code></p>                                                                                                                                                                                                                                                                                                                                         | <p>removes role from the user.</p><p></p><p>optionally, you can remove roles to other users, too, if you add the optional argument "user" after the pipe |.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
\| `{setnick:}`       | <p><code>{setnick:a real cutie}</code></p><p><code>{setnick:i love {user\_nick}!}</code></p><p><code>{setnick: iawa | iara#0001}</code></p><p><code>{setnick: appropriate name | \[$1]}</code></p>                                                                                                                                                                                                                                                                                                   | <p>edits the user’s nickname in the server.</p><p>optionally, you can change other users’ nicknames, too, if you add the optional argument “user” after the pipe | <br></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
\| `{react:}`         | `{react::pancakes:}`                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | reacts the emoji to the triggering message to the autoresponder                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
\| `{reactreply:}`    | `{reactreply::cute_dance:}`                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | reacts the emoji to the bot reply                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
\| `{addbutton:}`     | `{addbutton:clickie}`                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | adds a button to the desired trigger (ie. greet / leave / boost, autoresponders). make these with `/buttonresponder add`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
\| `{addlinkbutton:}` | `{addlinkbutton: press me to go to the website! \| https://mimu.bot}`                                                                                                                                                                                                                                                                                                                                                                                                                              | adds a link-style button                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |

### ♪ advanced functions

{% hint style="info" %}
using these functions can be pretty difficult! read up on our intermediate section on [ranges and making choices](/autoresponder/guide/intermediate-i-ranges-and-making-choices), as well as [locked choices](/autoresponder/guide/intermediate-ii-locked-choices), to fully understand.\
\
for using arguments, read the [advanced ii: using user arguments](/autoresponder/guide/advanced-ii-using-user-arguments) guide.
{% endhint %}

| variable            | description                                                                                                                                                                                                                                                                                                                                        |                                                                                                                                                                                                                                                                                                                       |                                                                                                                                                     |     |                                                                                                                             |                                                              |   |   |   |   |                                                                                                                                                                                                                                                                                                                                                                                |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | --- | --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | - | - | - | - | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `{range:}`          | chooses a value between a minimum and maximum, separated with `-`. (e.g. `{range:1-10}`). supports up to 4 ranges, you can reference these in your autoresponder via `[range] [range1] [range2] [range3]`, also mentioned in [advanced placeholders](/autoresponder/resources/variables-placeholders-and-functions#advanced-placeholders).         |                                                                                                                                                                                                                                                                                                                       |                                                                                                                                                     |     |                                                                                                                             |                                                              |   |   |   |   |                                                                                                                                                                                                                                                                                                                                                                                |
| `{choose:}`         | <p>chooses from a provided list of choices that are separated by the pipe                                                                                                                                                                                                                                                                          | symbol. supports up to 4 choices, <code>{choose:} {choose1:} {choose2:} {choose3:}.</code><br>you can reference these in your autoresponder via <code>\[choice] \[choice1] \[choice2] \[choice3]</code>, also mentioned in <a href="/pages/-MWRbOm17SWvZnx7C7vP#advanced-placeholders">advanced placeholders</a>.</p> |                                                                                                                                                     |     |                                                                                                                             |                                                              |   |   |   |   |                                                                                                                                                                                                                                                                                                                                                                                |
| `{weightedchoose:}` | <p><code>{choose:}</code> list. the order should match.</p><p></p><p>for example, for</p><p><code>{choose: apple                                                                                                                                                                                                                                   | banana                                                                                                                                                                                                                                                                                                                | orange}</code> if <code>{weightedchoose: 20%                                                                                                        | 50% | 30%}</code> was set, \[choice] would have a 20% chance of being apple, 50% chance of being banana and 30% being orange.</p> |                                                              |   |   |   |   |                                                                                                                                                                                                                                                                                                                                                                                |
| `{lockedchoose:}`   | <p>"locks" or "forces" a choice to happen based on a corresponding <code>{choose:}</code> decision.  the order of the <code>\[choice]</code> found in the <code>{choose:}</code> corresponds to the order of the <code>\[lockedchoice]</code> found in the <code>{lockedchoose:}</code>. <br><br>for example, if a was chosen from <code>{choose:x | y                                                                                                                                                                                                                                                                                                                     | z                                                                                                                                                   | a   | b                                                                                                                           | c}</code>, then n MUST be chosen from <code>{lockedchoose1:k | r | m | n | o | p}</code>. this is because <code>a</code> is the 4th option which was chosen, and <code>n</code> is the 4th option.</p><p><br>you can reference these in your autoresponder via <code>\[lockedchoice] \[lockedchoice1] \[lockedchoice2] \[lockedchoice3]</code>, also mentioned in <a href="/pages/-MWRbOm17SWvZnx7C7vP#advanced-placeholders">advanced placeholders</a>. </p> |
| `{requirearg:}`     | <p>requires an argument to be specified so you can refer to them properly in the <code>\[$N]</code> placeholder. you can put the number of the argument in. for example, <code>{requirearg:1}</code></p><p></p><p>optionally takes an input type after the pipe                                                                                    | symbol, which forces the user to follow that type, e.g. <code>{requirearg:2                                                                                                                                                                                                                                           | number}</code>. the types supported are <code>user</code>, <code>channel</code>, <code>color</code>, <code>role</code> and <code>number</code>.</p> |     |                                                                                                                             |                                                              |   |   |   |   |                                                                                                                                                                                                                                                                                                                                                                                |


# examples

attached to this page are various different premade autoresponder commands for you to take inspiration or add to your server!

### quick links

* [custom currency command examples](/autoresponder/resources/autoresponder-examples/custom-currency-command-examples)
* [manager/moderation commands](/autoresponder/resources/autoresponder-examples/manager-moderation-commands)
* [utility/fun commands](/autoresponder/resources/autoresponder-examples/utility-fun-commands)


# custom currency command examples

included in our documentation are various guides/premade commands for you to easily implement into your server!

the guides progress from easy to make commands into harder, more complex commands.


# .bake command

*this command utilizes basic variables and gives a sweet currency command for your server members to use!*

### ✎ autoresponder command

`/autoresponder add trigger:.bake reply:{range:200-1000} {choose: cookies :cookies: | cupcake :cupcake: | pie :pie: | cake :cake:} {choose1: they loved it ! | they nommed happily c: | they love you for being so thoughtful !}{modifybal:[range]} you bake a [choice] for {server_randommember} . . .` \
`[choice1] and gave you [range] ! <3`\
`your balance is now {user_balance_locale} {server_currency} ^-^`

{% hint style="info" %}
confused about the variables used? see our variables guide [here](/autoresponder/resources/variables-placeholders-and-functions)
{% endhint %}


# .bake command with items

*this command utilizes shop items and the modifyinventory feature, making your bake commands more accurate. this replaces the previous bake command, shown on the previous page.*

### ✎ add your shop items

`/shop add name: milk price:10 stock:0`

`/shop add name: wheat price:15 stock:0`

`/shop add name: egg price:5 stock:0`

### ✎ autoresponder command

`/autoresponder add trigger:.bake reply:{requireitem: milk | 3}{requireitem:wheat | 5}{requireitem:egg | 3}{modifyinv: milk | -3}{modifyinv:wheat | -5}{modifyinv:egg | -3}{range:10-25}{range1:25-40}{choose:[range]|[range1]}{modifybal:[choice]}{embed} with the ingredients in your inventory, you decided to make a cake! you sold it, earning [choice] {server_currency}!`

for help with understanding how modifyinv works, please view the following guide:

{% content-ref url="/pages/2733RFaz4LDz4rl4MMtP" %}
[advanced iii: modifying inventory and using args](/autoresponder/guide/advanced-iii-modifying-inventory-and-using-args)
{% endcontent-ref %}


# .harvest command

*in this command, we've made it so that some fruits cost more than certain fruits. you can refer to below table for the pricing it can be sold for:*

<table data-header-hidden><thead><tr><th width="464.5">fruit</th><th>price</th></tr></thead><tbody><tr><td>fruit</td><td>price</td></tr><tr><td>bananas</td><td>10</td></tr><tr><td>apples</td><td>20</td></tr><tr><td>strawberries</td><td>30</td></tr><tr><td>oranges</td><td>25</td></tr><tr><td>pears</td><td>15</td></tr></tbody></table>

### ✎ autoresponder command

`/autoresponder add trigger:.harvest reply:{choose:bananas|apples|strawberries|oranges|pears} {lockedchoose:10|20|30|25|15} {modifybal:+[lockedchoice]} you have harvested some [choice] . . . and earned [lockedchoice] {server_currency}!`

{% hint style="info" %}
confused about the variables used? see our variables guide [here](/autoresponder/resources/variables-placeholders-and-functions)
{% endhint %}


# .stealcookie command

*server members can playfully interact with mimu in this steal cookie command!*

### ✎ autoresponder command

`/autoresponder add trigger:.stealcookie reply:{embed} {cooldown:1000} {choose1: You were caught by mimu for trying to steal some cookies from the cookie jar! >:( mimu took away 200 | You stole some cookies successfully! Nom nom nom~ you earned 50 | but mimu caught you and isn't happy <:angerybean:678534873828556810> ! mimu took away 300 | You stole the whole cookie jar and got away with it! Hurray!! You earned 500 } {lockedchoose1: -200 | 50 | -300 | 500} {modifybal:[lockedchoice1]} **You tried to take some cookies from the cookie jar . . .** [choice1] {server_currency} your balance is now {user_balance_locale} {server_currency} !`

{% hint style="info" %}
confused about the variables used? see our variables guide [here](/autoresponder/resources/variables-placeholders-and-functions)
{% endhint %}


# .crime command

*allow your server members to get into some trouble with this custom command example c:*

### ✎ autoresponder command

`/autoresponder add trigger:.crime reply:{cooldown:6000} {choose: you robbed a bank and earned 10000 {server_currency} | you stole 200 {server_currency} from someone at a restaurant! | you pickpocketed with great stealth but only picked up 50 {server_currency}. | you tried to steal from someone, but you accidentally dropped 600 {server_currency} as you ran away.} {lockedchoose:+10000 | +200 | +50 | -600} {modifybal:[lockedchoice]} . . . let's commit a crime . . . [choice] !`\
`now you have {user_balance} balance.`

{% hint style="info" %}
confused about the variables used? see our variables guide [here](/autoresponder/resources/variables-placeholders-and-functions)
{% endhint %}


# .steal \[user] \[amount] command

*this example uses our more complex variables, diving into user arguments with choices/locked choices!*

### ✎ autoresponder command

`/autoresponder add trigger:.steal reply:{requirearg:1|user} {requirearg:2|number}`\
`{choose:-[$2]|0|[$2]} {lockedchoose:you tried to steal money from [$1] but failed and ended up losing [$2] {server_currency} instead! :notsopog: | you tried to steal money from [$1] but didn't earn any {server_currency}! oops. | you tried to steal money from [$1] and was able to steal [$2] {server_currency} :pog:} {modifybal:-[choice] | [$1]} {modifybal:[choice]}`\
\
`[lockedchoice]`

`/autoresponder editmatchmode trigger:.steal reply:startswith`

<figure><img src="/files/jzMtyXFXr0YAMwTnSgVD" alt=""><figcaption><p>the functioning .steal command</p></figcaption></figure>


# .sell command

*this command allows people who bought your role(s) to refund their roles accordingly.*

{% hint style="warning" %}
this assumes the item you're making it for has a role reward, and the user has **used** the item and want to refund / have the role removed. \
as not all servers want to have a full refund + role remove option, you must do this for **every single item that you want to be refundable**. this also allows some items to be refundable, and some not.
{% endhint %}

### ✎ autoresponder command

`/autoresponder add trigger: .sell marshmallows reply:{requirerole:@Marshmallows}{removerole:@Marshmallows}{modifybal:+1000}{embed:#ffffff} You have been refunded 1000{server_currency} and removed the @Marshmallows role. To check your balance, type /balance`


# manager/moderation commands

some server owners like to use mimu's autoresponders as more of a moderation tool as well. with mimu's highly customizable autoresponders, manager & moderation commands can be created.

{% hint style="warning" %}
please note that mimu is **not actually intended for moderation**. these autoresponders *do work*, but are mostly here to showcase the variety of things you can do simply with autoresponders. you cannot ban/kick with mimu.
{% endhint %}

###


# self-verification system

this example is our most popular!

### ✎ verification system

1. set up your permissions
   * in order to make a verification system, you need to first lock all your channels to hide them from users who just join.
   * as this is mostly a discord-help thing, if you need guidance on how permissions work, [click here](<https://support.discordapp.com/hc/en-us/articles/206029707-How-do-I-set-up-Permissions >).
   * then, make a role that can't view the rest of the server and remember to set up all the channels so that this particular role cannot view the rest of the server, but can still view your rules / landing channel!
   * confused on how to set up permissions? check out the [template we've prepared](https://discord.new/JBKDfcGeRMhK). it includes 2 main roles (mod & verified member role), 4 main categories (info - everyone can see, verify category - unverified can see, main chat - verified can see, and mod corner category - only mod can see).


# click a button to verify

{% hint style="info" %}
please make sure you have set up the verified role (instructions can be found in [self-verification system](/autoresponder/resources/autoresponder-examples/manager-moderation-commands/self-verification-system))

for typing "i agree" or ".verify" commands, please read [type "i agree" to verify](/autoresponder/resources/autoresponder-examples/manager-moderation-commands/self-verification-system/type-i-agree-to-verify)
{% endhint %}

### use a button responder and /send command

1. create a button responder:

   `/buttonresponder add name:verify label:click to verify color:green reply:{addrole: read n agreed to rules}{embed:#ceb3af}hello {user} ~ thank you for agreeing to the rules of in {server_name} ! you have gained access to the rest of our server ^-^ we hope you enjoy your stay!`

> `{addrole:}` - adds the specified role in the brackets; this should refer to the verified role that gives the permission

> `{embed}` - would make it embed with the default embed color of the server; in this case to customise the color, we used {embed:#ceb3af} instead.
>
> *you can also link a premade embed with `{embed:embed_name_here}`. more information on embeds can be found in the guide:* [*your first embed*](/embeds/your-first-embed)*.*

***note**: you can also use the `{dm}` variable - but buttons respond ephemerally (only to the user in the channel, and never have permission issues) so it is recommended not to for buttons.*

2. send instructions and button to the rules channel:

   `/send channel:#rules content:{addbutton:verify}{embed} click the button below to verify !`

> `{addbutton:}` - attaches a button (with the name of the button in the brackets) to the message.


# type "i agree" to verify

{% hint style="info" %}
please make sure you have set up the verified role (instructions can be found in [self-verification system](/autoresponder/resources/autoresponder-examples/manager-moderation-commands/self-verification-system))

for setting up button-style verify, check out [click a button to verify](/autoresponder/resources/autoresponder-examples/manager-moderation-commands/self-verification-system/click-a-button-to-verify)
{% endhint %}

### message autoresponder (users type 'i agree' or '.verify' to verify)

1. at the end of your rules, we suggest typing something like "type `i agree` to gain access to the rest of the server \~ !" to guide new members joining your server.&#x20;
2. create an autoresponder with `i agree` or `.verify`&#x20;

   `/autoresponder add trigger:i agree reply:{dm}{delete}{embed:#ceb3af}{addrole: read n agreed to rules}hi ! thank you for agreeing to the rules of our server, {user}! you have gained access to the rest of the server.`

> `{dm}` - makes it dm the user instead, so it doesn't clog up your channel

> `{delete}` - makes it autodelete the invoked autoresponder

> `{embed}` - would make it embed with the default embed color of the server; in this case to customise the color, we used {embed:#ceb3af} instead
>
> *you can also link a premade embed with `{embed:embed_name_here}`. more information on embeds can be found in the guide:* [*your first embed*](/embeds/your-first-embed)*.*

> `{addrole:}` adds the specified role in the brackets, this is the verified role the remaining text is the message in the embed you're sending to them

> `{requirechannel:}` - optionally, you can add `{requirechannel:#verify}` to limit the autoresponder to be done in the verification channel, so people cannot run this AR elsewhere.


# manual verification system

### ✎ .verify \[user] (manual verification) command

* this command is useful for servers with "gates" to them, where some "gatekeepers" can manually verify the user after they have posted a valid introduction or some other form of verification requirement.

`/autoresponder add trigger:.verify reply:{requirearg:1|user} {requirerole:gatekeepers} {delete} {addrole:verified | [$1]}{embed} verified [$1]!`

`/autoresponder editmatchmode trigger:.verify matchmode:startswith`

* you can also have it so that once the user is verified, it sends a premade embed that greets the user in the chat channel, so that they get notified:

`/autoresponder add trigger:.verify reply:{requirearg:1|user} {requirerole:gatekeepers} {delete} {addrole:verified | [$1]} {sendto: #general} [$1] {embed:greet}`&#x20;


# self assignable roles

## 3 types of self-assignable roles available:

### **1. button roles:**

allows the user to select roles from a roles channel.

<figure><img src="/files/XkyAyBmrBvzH27NczrfR" alt="" width="369"><figcaption><p>button roles example</p></figcaption></figure>

### 2. command roles:

allows the user to run commands to obtain roles.

<figure><img src="/files/G4Y8ezxgpKAoRBuTMMhC" alt="" width="282"><figcaption><p>command roles example</p></figcaption></figure>

### 3. command x button roles:

a happy medium between options 1 and 2: allows the user to run a command that shows a panel of roles that can then be selected with buttons.

<figure><img src="/files/L8z09BHdtYoyGF7ftIeU" alt="" width="375"><figcaption><p>command x button roles example</p></figcaption></figure>

{% hint style="warning" %}
make sure you have all of the roles created already in your discord server!
{% endhint %}

<figure><img src="/files/M0taITPzTL7UVKFjTMCj" alt=""><figcaption><p>the roles created within your server's roles</p></figcaption></figure>


# button roles

*this example provides information on creating assigned roles through buttons; similar to reaction roles.*

{% hint style="info" %}
if you'd like to display your roles in a custom embed, we recommend checking out our [embed documentation](/embeds/your-first-embed) for more details
{% endhint %}

## ♪ example one - add

<figure><img src="/files/AbB3NPL3PARcUOvbS6oV" alt="" width="369"><figcaption><p>an example with color roles</p></figcaption></figure>

### ✎ information

this example allows users to add the role to themselves based on the buttons provided.

this method does not have a remove role function - once they click the button, the role is added to them

### ✎ buttonresponder commands

`/buttonresponder add name:addpink reply:{addrole:@pink}{embed} you now have the pink role! label::pink_heart: pink color:grey`\
\
`/buttonresponder add name:addblue reply:{addrole:@blue}{embed} you now have the blue role! label::blue_heart: blue color:grey`\
\
`/buttonresponder add name:addyellow reply:{addrole:@yellow}{embed} you now have the yellow role! label::yellow_heart: yellow color:grey`

### ✎ autoresponder commands

`/autoresponder add trigger:.showroles reply:{addbutton:addpink}{addbutton:addblue}{addbutton:addyellow}{embed} pick your color . . .` \
`@pink` \
`@blue` \
`@yellow`

## ♪ example two - add/remove

<div><figure><img src="/files/dLxlXqPpaXs47CP8WXjC" alt="" width="375"><figcaption><p>expanded add roles</p></figcaption></figure> <figure><img src="/files/qSnLH66pFRiuFWEQrV8n" alt="" width="375"><figcaption><p>expanded remove roles</p></figcaption></figure></div>

### ✎ information

this example allows users to both add AND remove their desired roles.

as autoresponders can only have 5 buttons attached, this method allows you to bypass that by using a button within a button (buttonception!)

### ✎ buttonresponder commands

to keep this example readable/shortened, we'll be replicating the pings okay/no pings button menus rather than all of the buttons shown in the images.

`/buttonresponder add name: addpingsok reply: {embed:#c0eeff}{addrole: @pings okay } ✎┇okay, i have given you the @pings okay role.{newline} <:spacer:791592722527551518> - to remove it, please use the red remove button. label: pings okay emoji: <:mimuyes:756561205925118033> color: green`

`/buttonresponder add name: addpingsno reply: {embed:#c0eeff}{addrole: @no pings } ✎┇okay, i have given you the @no pings role.{newline} <:spacer:791592722527551518> - to remove it, please use the red remove button. label: no pings emoji: <:mimuno:821403020767789087> color: green`

`/buttonresponder add name: removepingsok reply: {embed:#c0eeff} {removerole: @pings okay } ✎┇okay, i have removed the @pings okay role.{newline} <:spacer:791592722527551518> - to add it, please use the green add button. label: pings okay emoji: <:mimuyes:756561205925118033> color: red`

`/buttonresponder add name: removepingsno reply: {embed:#c0eeff} {removerole: <@&819030959739240479> } ✎┇okay, i have removed the <@&819030959739240479> role.{newline} <:spacer:791592722527551518> - to add it, please use the green add button. label: no pings emoji: <:mimuno:821403020767789087> color: red`

`/buttonresponder add name: addroles reply: {embed:#c0eeff} <:iarapeek:932095187914735617> please choose which role(s) you'd like added! {addbutton:addpingsok}{addbutton:addpingsno} label: add roles emoji: <:activated:820456097755693126> color: green`

`/buttonresponder add name: removeroles reply: {embed:#c0eeff} <:iarapeek:932095187914735617> please choose which role(s) you'd like removed! {addbutton:removepingsok}{addbutton:removepingsno} label: remove roles emoji: <:unactivated:820456096384811038> color: red`

### ✎ autoresponder command

`/autoresponder add trigger: .rolesmenu reply: {delete}{embed} roles list: {newline}@pings okay{newline}@no pings {addbutton:addroles3}{addbutton:removeroles}`


# command roles (type +role)

*this example guide helps you create a lovely list for all of your available roles, as well as the command for when users want to add that role to themselves*

<figure><img src="/files/mOEmtNDrnV7i3I0rGAfc" alt="" width="224"><figcaption><p>the functioning self assignable roles</p></figcaption></figure>

### ✎ autoresponder commands

`/autoresponder add trigger: .roles reply:{embed} **our available roles**`**`...`**\
`@role` \
`@role` \
`etc. . .`\
`` to add a role, use `+[role]` ``\
`` to remove a role, use `-[role]` ``

{% hint style="warning" %}
in this example, we are using `+[role]` and `-[role]`, but you can do anything, like `.addrole [role]`, `.iam [role]`, `.iamnot [role]` or whatever you'd most prefer as the trigger
{% endhint %}

`/autoresponder add trigger:+lollipop reply: {addrole:lollipop}{embed} i have added the @lollipop role to you` \
\
`/autoresponder add trigger:-lollipop reply:{removerole:lollipop}{embed} i have removed the @lollipop role from you`

{% hint style="info" %}
remember to create an add & remove autoresponder for each role!
{% endhint %}


# command x button roles

*this example guide helps you create a displayable list for all of your available roles to be triggered by users as needed, as well as the buttons for when users want to add that role to themselves or reset the roles from that menu*

<figure><img src="/files/gXcpqhUHeG9qyEDXbRIr" alt="" width="375"><figcaption><p>user-activated roles menu</p></figcaption></figure>

### ✎ buttonresponder commands

`/buttonresponder add name:addpink reply:{addrole:@pink}{embed} you now have the pink role! label::pink_heart: pink color:grey`\
\
`/buttonresponder add name:addblue reply:{addrole:@blue}{embed} you now have the blue role! label::blue_heart: blue color:grey`\
\
`/buttonresponder add name:addyellow reply:{addrole:@yellow}{embed} you now have the yellow role! label::yellow_heart: yellow color:grey`

`/buttonresponder add name:resetcolors reply:{removerole:@pink}{removerole:@blue}{removerole:@yellow}{embed} okie, i've taken away any color roles you had. label::red_x: reset roles color:red`

### ✎ autoresponder commands

`/autoresponder add trigger:.selfroles reply:{addbutton:addpink}{addbutton:addblue}{addbutton:addyellow}{addbutton:resetcolors}{embed} pick your color . . .` \
`@pink` \
`@blue` \
`@yellow`


# .roleadd \[user] \[role] command

*you can also make a similar command for role removes, using the `{removerole:}` function.*

### ✎ autoresponder commands

`/autoresponder add trigger:.roleadd reply:{requirerole:Managers} {requirearg:1|user}{requirearg:2|role}{addrole:[$2] | [$1]}{embed} okie dokie, i've added the [$2] role to [$1]`

`/autoresponder editmatchmode trigger:.roleadd matchmode:startswith`

<figure><img src="/files/8XwBSLAhX0RtZhWjA1S5" alt="" width="373"><figcaption><p>the .roleadd command</p></figcaption></figure>


# antiswear/blacklisted words

### ✎ autoresponder commands

`/autoresponder add trigger:stupid reply:{delete}{embed} hey, {user}! don't be rude. i have removed your message.`

`/autoresponder editmatchmode trigger:stupid matchmode:includes`

<figure><img src="/files/zT6CYoqXoNo1sOXl0fjW" alt=""><figcaption><p>the message written that triggers mimu to delete it based on the autoresponder</p></figcaption></figure>

<figure><img src="/files/SrILX6TouuFPItYgDEHJ" alt=""><figcaption><p>mimu's response after deleting the message c:</p></figcaption></figure>


# anti link/advertising

*you can modify the trigger according to what you need. in this example we're using discord.gg/ as trigger, so any invite links.*

### ✎ autoresponder commands

`/autoresponder add trigger:discord.gg/ reply:{delete} hey {user}! please don't advertise.`

`/autoresponder editmatchmode trigger:discord.gg/ matchmode:includes`&#x20;


# change to appropriate nickname command

### ✎ autoresponder commands

`/autoresponder add trigger:.appnick reply:{requirearg:1|user}{setnick:an appropriate name!|[$1]}{sendto:#member-warnings} [$1], your nickname has been set to "an appropriate nickname" due to username inappropriacy.` \
`-- this moderation action was done by {user}.`

`/autoresponder editmatchmode trigger:.appnick matchmode:startswith`

{% hint style="warning" %}
if a user's original user/nickname is too long, mimu will create an error to tell you that the nickname is too long and cannot be changed.
{% endhint %}


# .setnick \[user] \[nickname] command

### ✎ autoresponder commands

`/autoresponder add trigger:.setnick reply:{requirearg:1|user}{requirearg:2}{setnick:[$2+]|[$1]}{embed} alright {user}, i've changed {user_tag:[$1]}'s nickname to [$2].`

`/autoresponder editmatchmode trigger:.setnick matchmode:startswith`

{% hint style="warning" %}
if a user's nickname is too long, mimu will create an error to tell you that the nickname is too long and cannot be changed.
{% endhint %}


# click to disable pings (e.g. partner pings)

<figure><img src="/files/Sqe6NGbbmfHFIXmeUDSa" alt="" width="563"><figcaption><p>the completed disable pings example</p></figcaption></figure>

in order to do this, first, we're going to make a role called "disable partner pings".

<figure><img src="/files/Pf0KGHN2DDgVIpil8lRE" alt="" width="375"><figcaption><p>disable partner pings role creation</p></figcaption></figure>

then, we're going to first create two different channels:

1. \#partners channel -- this is the channel where you send the partnered servers and ping everyone.
   1. for this channel, we're going to go to the channel settings, edit channel permissions, and make three adjustments:

      1. add the role **disable partner pings** and turn off "view channel"![](/files/AVlTKyXavDp4vh3Nk7Fi)
      2. for the @**everyone** role, keep it at "/" for "view channel", but turn off  "send messages"

      ![](/files/D1Yr8O8jQCJeV8gSyow0)
2. \#disable-ping channel&#x20;

<figure><img src="/files/3GTusy2Zd33tFqcwsXqS" alt=""><figcaption><p>it should look like this</p></figcaption></figure>

### now that you've completed your permissions, we are going to make a button responder.

here's the command

**`/buttonresponder add`**`name:partner_disable reply:{addrole: @disable partner pings !}{embed} - you have disabled partner pings ♡ label:click to disable partner ping emoji::icon_disabled: color:grey`

<figure><img src="/files/SVH8Gv0Gd97HhtObOgWj" alt="" width="375"><figcaption><p>the command in completion</p></figcaption></figure>

by putting **{addrole: @role}**, it will add the disable ping role, which, if we did the permissions correctly in the previous step, will allow disabling of the ping.

{% hint style="info" %}

### you can also attach a second button to re-enable pings if you want, which works in a similar fashion. **just remember to add {addbutton:partner\_enable}** into your **/send** command as well.

**`/buttonresponder add`**`name:partner_enable reply:{removerole: @disable partner pings !}{embed} - you have re-enabled partner pings ! thank you for supporting our server label:click to enable partner pings emoji::icon_enabled: color:blue`

<img src="/files/wT5OidiqDW0Yf0MNYHZK" alt="" data-size="original">
{% endhint %}

### finally, use the /send command to make a message in #disable-ping which allows them to click the button.

`/send content:{embed}`` `**`please click the button below to disable pings if you don't want to be pinged anymore !`**` ``{addbutton:partner_disable} channel:#disable-ping`

<figure><img src="/files/1gKGIwLfKlTomMcJXBTd" alt=""><figcaption><p>the completed send command</p></figcaption></figure>


# utility/fun commands

this category of custom commands include a variety of different utilities and fun you can add to your server's mimu c:


# .serverinfo command

### ✎ autoresponder command

`/autoresponder add trigger:.serverinfo reply:{embed}` \
`server name: {server_name}`\
`server id: {server_id}`\
`member count: {server_membercount}`\
`human count: {server_membercount_nobots}`\
`bot count: {server_botcount}`\
`role count: {server_rolecount}`\
`channel count: {server_channelcount}`\
`a random member: {server_randommember}`\
`server owner: {server_owner}`\
`server owner id: {server_owner_id}`\
`created on: {server_createdate}`\
\
`server boost level: {server_boostlevel}`\
`server boost count: {server_boostcount} / {server_nextboostlevel_required} to reach {server_nextboostlevel} ! that's only {server_nextboostlevel_until_required} boosts away.`

*you can also use a premade embed to show the icon and format it cutely. if you'd like more details on embeds, view our documentation linked below.*

{% content-ref url="/pages/ElnTSfPz2oY8QjQMqP53" %}
[embeds](/embeds/your-first-embed)
{% endcontent-ref %}


# .nick \[nickname] command

*different than the* [*.setnick example*](/autoresponder/resources/autoresponder-examples/manager-moderation-commands/.setnick-user-nickname-command)*, this allows any user to change their own nickname.*

### ✎ autoresponder commands

`/autoresponder add trigger:.nick reply:{requirearg:1} {setnick:[$1]} okay {user_tag}, i've set your nickname to [$1].`

`/autoresponder editmatchmode trigger:.nick matchmode:startswith`


# .suggest \[text] command

### ✎ autoresponder commands

`/autoresponder add trigger:.suggest reply:{delete} {requirearg:1} {sendto:#suggestions} {user} suggested:`\
`[$1+]`

`/autoresponder editmatchmode trigger:.suggest reply:startswith`

*you can also use a premade embed for an output that looks cuter, like this:*

`/embed create name:suggestion`

`/embed edit author embed:suggestion text:{user_tag} icon:{user_avatar}`

`/embed edit description embed:suggestion text:[$1+]`

`/autoresponder add trigger:.suggest reply:{delete} {requirearg:1} {sendto:#suggestions} {embed:suggestion}`

`/autoresponder editmatchmode trigger:.suggest matchmode:startswith`

*additionally, you could include a few`{reactreply:}` variables to react to the suggestion post with a thumbs up* :thumbsup:, *shrug* :person\_shrugging:*, and thumbs down* :thumbsdown: *reactions for other users to vote on the original suggestion.*


# .say commands

## ✎ .say \[text]

### ✎ autoresponder commands

`/autoresponder add trigger:.say reply:{delete}{requirearg:1} [$1+]`

`/autoresponder editmatchmode trigger:.say matchmode:startswith`

<figure><img src="/files/5ko8FjTP5Kd0Fzu2FWOg" alt=""><figcaption><p>basic .say command</p></figcaption></figure>

## ✎ .say \[#channel] \[text]

*this allows the user to say something in a private channel, but have it sent to a public channel as the bot*

### ✎ autoresponder commands

`/autoresponder add trigger:.say reply:{requirearg:1|channel} {requirearg:2} {sendto:[$1]} [$2+]`

`/autoresponder editmatchmode trigger:.say matchmode:startswith`

## ✎ .embedsay \[color] \[text]

### ✎ autoresponder commands

`/autoresponder add trigger:.embedsay reply:{requirearg:1|color}{requirearg:2}{embed:[$1]} [$2+]`

`/autoresponder editmatchmode trigger:.embedsay matchmode:startswith`

<figure><img src="/files/R00wvZCBvbp4MWeZInn4" alt=""><figcaption><p>an embedded say</p></figcaption></figure>


# embed reaction command

{% hint style="info" %}
create [an embed](/embeds/your-first-embed) before making your autoresponder. below, we will have basic embed details edited, but for full customization, see [our guides](/embeds/embed-guide)
{% endhint %}

{% hint style="info" %}
replace giggle to any reaction you'd like (i.e. smile instead of giggle)
{% endhint %}

### ✎ embed commands

`/embed create name:giggle_embed`

`/embed edit title embed:giggle_embed title:{user_name} just giggled c:`

`/embed edit image embed:giggle_embed image:`[`https://4.bp.blogspot.com/-vxl2wB3kWFs/XIBzgjt1omI/AAAAAAAMc84/AyIeRB1qkhMKTodYXSYyf3jrIVaVgSiwwCLcBGAs/s1600/AS0005027_13.gif`](https://4.bp.blogspot.com/-vxl2wB3kWFs/XIBzgjt1omI/AAAAAAAMc84/AyIeRB1qkhMKTodYXSYyf3jrIVaVgSiwwCLcBGAs/s1600/AS0005027_13.gif)

### ✎ autoresponder command

`/autoresponder add trigger:.giggle reply:{embed:giggle_embed}`

<figure><img src="/files/Vm8JAhkPb2sLAvcnMl3L" alt=""><figcaption><p>the completed command</p></figcaption></figure>


# embed action command (user arguments)

*this example utilizes user arguments. unlike the* [*simple embed reaction command*](https://app.gitbook.com/o/-LjUQ3GQFZXsJcvj7LTS/s/-LjUSz3NQrpyR-tHhUV-/~/changes/90/autoresponder/resources/autoresponder-examples/utility-fun-commands/embed-reaction-command)*, this example requires another user to complete the action.*

{% hint style="info" %}
create [an embed](/embeds/your-first-embed) before making your autoresponder. below, we will have basic embed details edited, but for full customization, see [our guides](/embeds/embed-guide)
{% endhint %}

{% hint style="info" %}
replace hug with any action you'd like (i.e. kiss instead of hug)
{% endhint %}

### ✎ embed commands

`/embed create name:hug`

`/embed edit description embed:hug description:{user} hugs [$1}, how sweet c:`

`/embed edit image embed:hug image:`[`https://i.imgur.com/lWHgVEu.gif`](https://i.imgur.com/lWHgVEu.gif)

### ✎ autoresponder commands

`/autoresponder add trigger:.hug reply:{requirearg: 1 | user}{embed:hug}`

`/autoresponder editmatchmode trigger:.hug matchmode:startswith`

<figure><img src="/files/GafxN6fqA6SjtjuvldHl" alt=""><figcaption><p>the completed hug command</p></figcaption></figure>


# partner manager reward system

every time your partner managers send an invite link to your partner channels, they can earn some currency!

### ✎ autoresponder commands

`/autoresponder add trigger:discord.gg/ reply:{embed} {modifybal:+1000} {requirerole: Partner Managers} {requirechannel: #affiliates} {requirechannel: #partners} thanks {user} for setting up the partner! you've been rewarded with 1000 {server_currency}.`

`/autoresponder editmatchmode trigger:discord.gg/ matchmode:includes`

{% hint style="info" %}
mimu **cannot** keep a count of how many times a partner manager has sent invite links/successful partnerships. this simply rewards them for posting in your partner channels
{% endhint %}


# would you rather/.topic command

### ✎ autoresponder command

`/autoresponder add trigger:.topic reply:{choose: what's your favourite childhood memory? | what's something embarrassing you don't ever wanna tell anyone about? | do you have any siblings? | would you describe yourself as sunset, dawn, midnight or afternoon? | what's your favourite season?} [choice]`

*feel free to add more topics in the {choose:} variable!*


# .poke \[user] command

### ✎ autoresponder commands

`/autoresponder add trigger:.poke reply:{choose:`[`https://media.tenor.com/images/a0e5105faf3f068bbc545d653b96d019/tenor.gif`](https://media.tenor.com/images/a0e5105faf3f068bbc545d653b96d019/tenor.gif) `|` [`https://i.pinimg.com/originals/aa/ad/33/aaad333e08a22dee3a1c798924c749dc.gif`](https://i.pinimg.com/originals/aa/ad/33/aaad333e08a22dee3a1c798924c749dc.gif)`} you poke [$1] . . . [choice]`

`/autoresponder editmatchmode trigger:.poke matchmode:startswith`


# .8ball \[text] command

### ✎ autoresponder commands

`/autoresponder add trigger:.8ball reply:{requirearg:1} {delete} {embed:#00008b} {choose: as i see it, yes. | ask again later. | better not tell you now. | cannot predict now. | concentrate and ask again. | don’t count on it. | it is certain. | it is decidedly so. | most likely. | my reply is no. | my sources say no. | outlook not so good. | outlook good. | reply hazy, try again. | signs point to yes. | very doubtful. | without a doubt. | yes. | you may rely on it. | yes — definitely. } {modifybal: +1}`\
&#x20;`` `🎱` your question . . . `` \
`> [$1+]`\
&#x20;`` `🎱` you shake your magic eight ball and it tells you . . . `` \
`[choice]`

`/autoresponder editmatchmode trigger:.8ball matchmode:startswith`


# mimu, rate \[thing] command

### ✎ autoresponder commands

`/autoresponder add trigger:mimu, rate reply:{delete} {range:0-10} hmm, i rate [$1] a [range]/10 :o`

`/autoresponder editmatchmode trigger:mimu, rate matchmode:startswith`


# .muteroulette \[user] \[user]... command

you can add more arguments in the response to support more users to do the roulette on.

### ✎ autoresponder commands

`/autoresponder add trigger:.muteroulette reply:{requirearg:1|user} {requirearg:2|user} {requirearg:3|user} {choose:[$1]|[$2]|[$3]} {addrole:muted|[choice]} okay . . . the roulette landed on [choice] ! i have muted [choice].`

`/autoresponder editmatchmode trigger:.muteroulette matchmode:startswith`

{% hint style="info" %}
mimu **cannot** automatically unmute a user or remove the role after a certain time has passed. make sure to remove the muted role from the chosen user after your desired time has passed!
{% endhint %}


# variable system error list

a list of errors that are possible when using features involving variables ➜ (autoresponder / buttonresponder / shop replies / greet / leave / boost).

## the way an autoresponder works is:

* **parse.** mimu reads from ➜ right to determine what actions are needed. parsing is done serially and conquentially; allowing mimu to form an ordered plan of execution for the AR.
  * during this phase, small errors are caught and already visible. these errors are usually found in previews; such as `/autoresponder show`. [#parsing-errors](#parsing-errors "mention")
* **replace.** mimu substitutes placeholders (e.g. `{user}`) to their real values (e.g. `@iara`).
  * there are very, very few limitations to placeholders; they rarely have any errors. [#placeholder-errors](#placeholder-errors "mention")
* **verify**. mimu checks for all required permissions and that other conditions are met.
  * errors are generally expected. these errors often indicate the AR is working as expected; and are failsafe mechanisms to ensure a command doesn't run when it should not. [#expected-errors-missing-arguments-perms-etc](#expected-errors-missing-arguments-perms-etc "mention")
* **run**. when, and only when all the above are good ➜ mimu runs the functions in strict chronological order.

### because of how unique and complicated autoresponders work, you may run into errors of all types. this place serves as an index of all such errors.

{% hint style="success" %}
long-form errors, such as `PERMISSION_ERROR`: `DENIED_PERMISSIONS` can be disabled with the `{silent}` variable. you can also set a custom error when it occurs, with `{silent: you don't have the things needed to use this!}`
{% endhint %}

### parsing errors

these refer to errors that happen at the first step; typically due to inconsistent information or wrong information being passed into function variables (such as typing gibberish where a number is expected).&#x20;

{% hint style="info" %}
while these errors **should be paid attention to**, it is important to be reminded that errors shown in previews may not be representative of a full error, but more of a warning.

sometimes parsing does not have things determined yet; such as arguments with \[$N] are not properly set in an `/autoresponder show`. it is strongly recommended for you to run the autoresponder or `/send` first.
{% endhint %}

| error code                                                | description                                                                                                                                                                                                                                           | limiting variable                                                                                                                      |                                                                                                                                                                                                        |                                                          |                     |
| --------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------- | ------------------- |
| `MODIFYINV_ERROR` : `INVALID_MODIFY_AMOUNT`               | the amount you specified for an inventory change is **not a valid number** (for example, `sdjfkdsjf`)                                                                                                                                                 | `{modifyinv:}`                                                                                                                         |                                                                                                                                                                                                        |                                                          |                     |
| `ITEM_ERROR` : `TOO_MANY_ITEM_USER_DENY`                  | autoresponders can only deny up to 3 users' inventory items.                                                                                                                                                                                          | `{denyitem:}`                                                                                                                          |                                                                                                                                                                                                        |                                                          |                     |
| `ROLE_ERROR` : `INVALID_ROLE_PROVIDED`                    | one of the roles you used in your addrole / removerole configuration is invalid or could not be resolved by mimu.                                                                                                                                     | `{addrole:}` and `{removerole:}`                                                                                                       |                                                                                                                                                                                                        |                                                          |                     |
| `ROLE_ERROR` : `INVALID_ROLE_POSITION`                    | mimu’s highest role is **below** the role you are trying to add or remove, so discord does not allow the action.                                                                                                                                      | `{addrole:}` and `{removerole:}`                                                                                                       |                                                                                                                                                                                                        |                                                          |                     |
| `EMBED_ERROR` : `EMBED_NOT_FOUND`                         | the premade embed name you used does not exist, *or* the embed color / object is missing. mimu cannot find the embed to render.                                                                                                                       | `{embed:}`                                                                                                                             |                                                                                                                                                                                                        |                                                          |                     |
| `INVALID_ROLE`                                            | <p>a role you provided is not valid or could not be found in the server. this usually happens if:</p><ul><li>the role id / mention / name is wrong</li><li>the role was deleted</li><li>mimu can’t resolve it from the text you typed</li></ul>       | `{requirerole:}` and `{denyrole:}`                                                                                                     |                                                                                                                                                                                                        |                                                          |                     |
| `INVALID_PERMISSION`                                      | <p>the permission name you provided is not a valid discord permission.<br>for example: <code>ADMINSTRATOR</code> instead of <code>ADMINISTRATOR</code>.</p>                                                                                           | `{requireperm:}` / `{denyperm:}`                                                                                                       |                                                                                                                                                                                                        |                                                          |                     |
| `CHANNEL_ERROR`: `INVALID_CHANNEL`                        | the autoresponder is used in a channel *not* listed in `{requirechannel:}`                                                                                                                                                                            | `{requirechannel:}`                                                                                                                    |                                                                                                                                                                                                        |                                                          |                     |
| `CHANNEL_ERROR`: `DENIED_CHANNEL`                         | the autoresponder is used in a channel listed in `{denychannel:}`                                                                                                                                                                                     | `{denychannel:}`                                                                                                                       |                                                                                                                                                                                                        |                                                          |                     |
| `USER_ERROR`: `REQUIRED_USER_MISMATCH`                    | the invoking user is *not* listed in `{requireuser:}`                                                                                                                                                                                                 | `{requireuser:}`                                                                                                                       |                                                                                                                                                                                                        |                                                          |                     |
| `USER_ERROR`: `DENIED_USER`                               | the invoking user *is* listed in `{denyuser:}`                                                                                                                                                                                                        | `{denyuser:}`                                                                                                                          |                                                                                                                                                                                                        |                                                          |                     |
| `ROLE_ERROR`: `DENIED_ROLES`                              | the member has a role listed in `{denyrole:}`                                                                                                                                                                                                         | `{denyrole:}`                                                                                                                          |                                                                                                                                                                                                        |                                                          |                     |
| `PERMISSION_ERROR`: `INSUFFICIENT_PERMISSIONS`            | the member does *not* have the permissions listed in `{requireperm:}`                                                                                                                                                                                 | `{requireperm:}`                                                                                                                       |                                                                                                                                                                                                        |                                                          |                     |
| `PERMISSION_ERROR`: `DENIED_PERMISSIONS`                  | the member *has* a permission listed in `{denyperm:}`                                                                                                                                                                                                 | `{denyperm:}`                                                                                                                          |                                                                                                                                                                                                        |                                                          |                     |
| `ITEM_ERROR`: `DENIED_ITEM`                               | the user has an item or amount blocked by `{denyitem:}`                                                                                                                                                                                               | `{denyitem:}`                                                                                                                          |                                                                                                                                                                                                        |                                                          |                     |
| `CHANNEL_ERROR` : `INVALID_CHANNEL`                       | <p>the channel you provided is invalid or could not be found in the server. this can happen if:</p><ul><li>the channel id / mention / name is wrong</li><li>the channel was deleted</li><li>mimu doesn’t have access to see that channel</li></ul>    | `{requirechannel:}` / `{denychannel:}`                                                                                                 |                                                                                                                                                                                                        |                                                          |                     |
| `CANNOT_SEND_TO_CHANNEL`                                  | mimu is missing `send messages` or `view channel`                                                                                                                                                                                                     | `{sendto:}` or current channel                                                                                                         |                                                                                                                                                                                                        |                                                          |                     |
| `CANNOT_SEND_EMBED_TO_CHANNEL`                            | missing `embed links` permission in the channel                                                                                                                                                                                                       | \[may be altered with `{sendto:}` as well] `{embed:}`                                                                                  |                                                                                                                                                                                                        |                                                          |                     |
| `INVALID_USER`                                            | <p>the user you provided is invalid or could not be found in the server. this can happen if:</p><ul><li>you typed an id / mention that doesn’t exist</li><li>the user left the server</li><li>mimu can’t resolve the input text to a member</li></ul> | placeholders or configs that expect a valid user (e.g. `{requireuser:}`, user-based args etc, or anything parsing a member from text). |                                                                                                                                                                                                        |                                                          |                     |
| `INVALID_USER_REQUSER`                                    | you used `{requireuser:user\|not_valid_user}` but the not\_valid\_user input was not a valid user.                                                                                                                                                    | `{requireuser:}`                                                                                                                       |                                                                                                                                                                                                        |                                                          |                     |
| <p></p><p><code>INVALID\_USER\_DENYUSER</code></p><p></p> | you used `{denyuser:user\|not_valid_user}` but the not\_valid\_user isn't valid.                                                                                                                                                                      | `{denyperm:}`                                                                                                                          |                                                                                                                                                                                                        |                                                          |                     |
| `INVALID_USER_REQPERM`                                    | you used `{requireperm:user\|not_valid_user}` but the not\_valid\_user isn't valid.                                                                                                                                                                   | `{requireperm:}`                                                                                                                       |                                                                                                                                                                                                        |                                                          |                     |
| `INVALID_USER_DENYPERM`                                   | you used `{denyperm:user\|not_valid_user}` but the not\_valid\_user isn't valid.                                                                                                                                                                      | `{denyperm:}`                                                                                                                          |                                                                                                                                                                                                        |                                                          |                     |
| `INVALID_USER_REQROLE`                                    | you used `{requirerole:user\|not_valid_user}` but the not\_valid\_user isn't valid.                                                                                                                                                                   | `{requirerole:}`                                                                                                                       |                                                                                                                                                                                                        |                                                          |                     |
| `INVALID_USER_DENYROLE`                                   | you used `{denyrole:user\|not_valid_user}` but the not\_valid\_user isn't valid.                                                                                                                                                                      | `{denyrole:}`                                                                                                                          |                                                                                                                                                                                                        |                                                          |                     |
| `INVALID_USER_REQBAL`                                     | you used `{requirebal:amount\|user}` but the user part could not be resolved to a valid member.                                                                                                                                                       | `{requirebal:}`                                                                                                                        |                                                                                                                                                                                                        |                                                          |                     |
| `INVALID_USER_REQITEM`                                    | you used `{requireitem:item\|amount\|user}` but the target user could not be resolved to a valid member.                                                                                                                                              | `{requireitem:}`                                                                                                                       |                                                                                                                                                                                                        |                                                          |                     |
| `INVALID_USER_DENYITEM`                                   | you used `{denyitem:item\|amount\|user}` but the target user could not be resolved to a valid member.                                                                                                                                                 | `{denyitem:}`                                                                                                                          |                                                                                                                                                                                                        |                                                          |                     |
| `INVALID_USER_IS_BOT`                                     | you tried to modify a balance or inventory for a **bot user**, which is not allowed.                                                                                                                                                                  | `{modifybal:}` or `{modifyinv:}`                                                                                                       |                                                                                                                                                                                                        |                                                          |                     |
| `INVALID_ITEM_NAME` or `INVALID_ITEM`                     | <p> </p><p>you used <code>{user\_item:}</code> or <code>{user\_item\_count:}</code> without a valid item name or id. typically:</p><ul><li>the item name part is blank, or</li><li>the placeholder couldn’t parse the item name at all</li></ul>      | `{user_item:}` `{user_item_count:}`                                                                                                    |                                                                                                                                                                                                        |                                                          |                     |
| `INVALID_ITEM_AMOUNT`                                     | <p>inside <code>{modifyinv:}</code>, the amount (middle part) is not a valid number.<br>for example: <code>{modifyinv:sword                                                                                                                           | abc                                                                                                                                    | @user}</code> wwhere abc is not a number.</p>                                                                                                                                                          | `{modifyinv:}`                                           |                     |
| `INVALID_SHOP_ITEM_ID`                                    | you tried to **add** inventory with `{modifyinv:item\|amount\|user}` using an item id / name that doesn’t match any valid shop product.                                                                                                               | `{modifyinv:}`                                                                                                                         |                                                                                                                                                                                                        |                                                          |                     |
| `INVALID_INVENTORY_ITEM`                                  | you tried to **remove** inventory with `{modifyinv:}` using an item name / id that the user does not have.                                                                                                                                            | user doesn't have this item in inventory                                                                                               |                                                                                                                                                                                                        |                                                          |                     |
| `INVALID_INV_OPERATION`                                   | <p>you used <code>{modifyinv:}</code> with an invalid operator.<br>valid operators are <code>+</code> and <code>-</code>. anything else will error.</p>                                                                                               | `{modifyinv:}`                                                                                                                         |                                                                                                                                                                                                        |                                                          |                     |
| `INVALID_AMOUNT`                                          | <p>inside <code>{modifybal:}</code>, the amount is not a valid number.<br>e.g. <code>{modifybal:abc}</code> or <code>{modifybal:+abc                                                                                                                  | @user}</code>.</p>                                                                                                                     | `{modifybal:}`                                                                                                                                                                                         |                                                          |                     |
| `INVALID_BAL_OPERATION`                                   | <p>you used <code>{modifybal:}</code> with an invalid operator.<br>valid ones are: <code>+</code>, <code>-</code>, <code>\*</code>, <code>/</code>, <code>=</code>.</p>                                                                               | `{modifybal:}`                                                                                                                         |                                                                                                                                                                                                        |                                                          |                     |
| `TOO_MANY_EMBEDS`                                         | <p>you tried to use <code>{embed}</code> more than the allowed number of times in a single autoresponder.<br>the total premade embed count is capped at <code>10</code>.</p>                                                                          | `{embed:}`                                                                                                                             |                                                                                                                                                                                                        |                                                          |                     |
| `NO_BUTTON_NAME_PROVIDED`                                 | you used `{addbutton:}` without specifying a button name.                                                                                                                                                                                             | `{addbutton:}`                                                                                                                         |                                                                                                                                                                                                        |                                                          |                     |
| `INVALID_BUTTON_NAME`                                     | you used `{addbutton:name}` but that name does not match any existing saved buttonresponder.                                                                                                                                                          | `{addbutton:}`                                                                                                                         |                                                                                                                                                                                                        |                                                          |                     |
| `NO_LINKBUTTON_TEXT_PROVIDED`                             | you used `{addlinkbutton:label\|link}` without a text label.                                                                                                                                                                                          | `{addlinkbutton:}`                                                                                                                     |                                                                                                                                                                                                        |                                                          |                     |
| `NO_LINKBUTTON_URL_PROVIDED`                              | you used `{addlinkbutton:text\|}` without a url, url is missing                                                                                                                                                                                       | `{addlinkbutton:}`                                                                                                                     |                                                                                                                                                                                                        |                                                          |                     |
| `LINKBUTTON_INVALID_URL_PROVIDED`                         | the url you provided to `{addlinkbutton:}` is not a valid url. it needs to start with http and be a full link like <https://mimu.bot/>                                                                                                                | `{addlinkbutton:}`                                                                                                                     |                                                                                                                                                                                                        |                                                          |                     |
| `INVALID_CHOICES`                                         | you used `{choose}` (or `{choose1}`, `{choose2}`, etc) but didn’t provide **at least 2** valid choices separated by `\|`.                                                                                                                             | `{choose:}`                                                                                                                            |                                                                                                                                                                                                        |                                                          |                     |
| `INVALID_ORIGINAL_CHOICE_FOR_LOCK`                        | you tried to use `{lockedchoose}` before a valid `{choose}` was set for that slot. since there’s no original choice index to “lock” to, it can’t work.                                                                                                | `{lockedchoose:}`                                                                                                                      |                                                                                                                                                                                                        |                                                          |                     |
| `INSUFFICIENT_LOCKED_CHOICES`                             | <p>you used <code>{lockedchoose:a                                                                                                                                                                                                                     | b                                                                                                                                      | c}</code> but there isn’t a corresponding choice at the original random index.<br>for example, if the original <code>{choose}</code> picked the third item, but your locked list only has 2 items.</p> | `{lockedchoose:}` list is shorter than `{choose:}` list. |                     |
| `INVALID_WEIGHTS`                                         | <p></p><p>you used <code>{weightedchoose:}</code> but the weights are invalid. for example:</p><ul><li>non-numeric entries</li><li>negative numbers</li><li>all weights are zero</li><li>nothing parseable as a number</li></ul>                      | `{weightedchoose:}`                                                                                                                    |                                                                                                                                                                                                        |                                                          |                     |
| `INSUFFICIENT_WEIGHTS_FOR_CHOOSE`                         | <p>you provided fewer weights than there are choices attached to that slot.<br>for example, <code>{choose:a                                                                                                                                           | b                                                                                                                                      | c}</code> then <code>{weightedchoose:1                                                                                                                                                                 | 2}</code>.</p>                                           | `{weightedchoose:}` |
| `INSUFFICIENT_RANGE`                                      | <p></p><p>you used <code>{range:start-end}</code> but:</p><ul><li><code>start</code> or <code>end</code> is not a valid number, or</li><li><code>start</code> is greater than <code>end</code></li></ul>                                              | `{range:}`                                                                                                                             |                                                                                                                                                                                                        |                                                          |                     |

### expected errors (missing arguments / perms etc)

these refer to errors that are **not breaking**, and are intended to provide more clarity to the user running the trigger (whether that is an autoresponder or a buttonresponder or what else).

these usually mean:

* the autoresponder is working as designed,
* but some **requirement** for it to run was not met (roles, balance, items, arguments, permissions, etc).

| error code                                  | description                                                                                                                                                                                                                                                                                                                           | limiting variable |
| ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- |
| `ROLE_ERROR` : `INSUFFICIENT_ROLES`         | you tried to run an autoresponder that requires at least one role, but the user running it does not have any of the required roles.                                                                                                                                                                                                   | `{requirerole:}`  |
| `BALANCE_ERROR` : `INSUFFICIENT_BALANCE`    | <p></p><p>a user did not have enough currency for the autoresponder to run.<br>for example:</p><blockquote><p><strong>iara</strong> needs (at least) 10 💰 for this autoresponder to run.</p></blockquote>                                                                                                                            | `{requirebal:}`   |
| `INVENTORY_ERROR` : `INSUFFICIENT_ITEM`     | <p>a user is missing an item, or does not have enough of that item, for the autoresponder to run successfully.<br>for example:</p><blockquote><p><strong>xyz</strong> needs <code>1 × apple</code> for this autoresponder to run successfully.</p></blockquote>                                                                       | `{requireitem:}`  |
| `ARGUMENT_ERROR` : `INVALID_ARGUMENTS`      | <p></p><p>one or more of the <strong>required arguments</strong> to your autoresponder are invalid or missing.<br>the error message will tell you <em>which</em> argument failed, and (if possible) show what you typed, e.g.:</p><blockquote><p>the 2nd argument is not a valid number. you wrote <code>abc</code>.</p></blockquote> | `{requirearg:}`   |
| `MODIFYBAL_ERROR` : `INVALID_MODIFY_AMOUNT` | the amount you tried to set a balance to is **not a valid number**.                                                                                                                                                                                                                                                                   | `{modifybal:}`    |

## placeholder errors

very rare but sometimes occurs — pay attention to these!

| error code                               | description                                                    | variable          |
| ---------------------------------------- | -------------------------------------------------------------- | ----------------- |
| `BAL_ERROR` : `TOO_MANY_BAL_REQS`        | autoresponders can only check for up to 3 user balances.       | `{user_balance:}` |
| `ITEM_ERROR` : `TOO_MANY_ITEM_USER_REQS` | autoresponders can only require up to 3 users' inventory items | `{requireitem:}`  |

## runtime errors

these are errors that occur during the running of the autoresponder, at the last step. it is strongly recommended to pay attention to these. :warning:

| error code                                              | description                                                                                                                                                                                              | variable                           |
| ------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- |
| `ROLE_ERROR` : `INVALID_MIMU_PERMISSION`                | mimu tried to **add or remove roles**, but does not have the `Manage Roles` permission in that server.                                                                                                   | `{addrole:}` or `{removerole:}`    |
| `SETNICK_ERROR` : `INVALID_MIMU_PERMISSION`             | mimu tried to **change someone’s nickname**, but does not have the `Manage Nicknames` permission in that server.                                                                                         | `{setnick:}`                       |
| `ADDREACTION_ERROR` : `INVALID_MIMU_PERMISSION`         | mimu tried to **react with emojis** to a message or reply, but does not have the `Add Reactions` permission in that channel.                                                                             | `{reactreply:}` or `` {react:}` `` |
| `MESSAGE_ERROR` : `CANNOT_DELETE_MESSAGE`               | <p></p><p>the autoresponder tried to delete the <strong>trigger message</strong>, but:</p><ul><li>mimu does not have <code>Manage Messages</code>, or</li><li>the message was already deleted.</li></ul> | `{delete}` or `{deletereply:}`     |
| `MESSAGE_ERROR` : `CANNOT_MESSAGE_USER`                 | <p></p><p>the autoresponder tried to <strong>dm the user</strong>, but could not, usually because:</p><ul><li>the user has dms disabled for the server, or</li><li>the user left the server.</li></ul>   | `{dm:}`                            |
| `MODIFYINV_ERROR` : `TOO_MANY_MODIFICATIONS`            | the autoresponder is trying to modify **more than 6 user–item pairs** in a single run. this is capped for safety.                                                                                        | `{modifyinv:}`                     |
| `MODIFYINV_ERROR` : `EXCEED_MODIFYINVENTORY_AMT_NOPREM` | on **non-premium servers**, autoresponder inventory changes **will not apply** if the amount exceeds `10,000` for that item.                                                                             | `{modifyinv:}`                     |
| `MODIFYINV_ERROR` : `EXCEED_MODIFYINVENTORY_AMT`        | autoresponder inventory changes **will not apply** if the amount of the item exceeds `1,000,000,000,000` (1 trillion).                                                                                   | `{modifyinv:}`                     |
| `MODIFYBAL_ERROR` : `TOO_MANY_MODIFICATIONS`            | the autoresponder is trying to modify balances for **more than 3 users** at once. this is capped for safety.                                                                                             | `{modifybal:}`                     |
| `MODIFYBAL_ERROR` : `EXCEED_MODIFYBAL_AMT_NOPREM`       | on **non-premium servers**, autoresponder balance changes are limited to **±100,000**. if the change is bigger, it will not be applied.                                                                  | `{modifybal:}`                     |
| `MODIFYBAL_ERROR` : `EXCEED_MODIFYBAL_AMT`              | autoresponder balance changes are limited to **±1,000,000,000**. above that, the change will not be applied.                                                                                             | `{modifybal:}`                     |
| `ROLE_ERROR` : `TOO_MANY_USERS`                         | you tried to add or remove roles for **more than 3 users** at once in a single autoresponder.                                                                                                            | `{addrole:}` and `{removerole:}`   |
| `ROLE_ERROR` : `TOO_MANY_ROLES`                         | you tried to add / remove **more than 10 roles** for a single user at once.                                                                                                                              | `{addrole:}` and `{removerole:}`   |
| `SETNICK_ERROR` : `TOO_MANY_NICKNAMES`                  | you tried to modify nicknames for **more than 3 users** in a single autoresponder run.                                                                                                                   | `{setnick:}`                       |
| `SETNICK_ERROR` : `NICKNAME_TOO_LONG`                   | the nickname you tried to set is **longer than 32 characters**, which discord does not allow.                                                                                                            | `{setnick:}`                       |
| `SETNICK_ERROR` : `INVALID_ROLE_POSITION`               | mimu tried to change the nickname of someone **higher than or equal to** its own role, or the server owner. discord blocks this.                                                                         | `{setnick:}`                       |
| `ADDREACTION_ERROR` : `TOO_MANY_REACTIONS`              | an autoresponder is trying to add **more than 5 reactions** to the trigger message or reply.                                                                                                             | `{react:}` or `{reactreply:}`      |
| `ADDREACTION_ERROR` : `INVALID_EMOJI`                   | at least one emoji you tried to react with is **invalid or not accessible** to mimu (e.g. from a server mimu is not in).                                                                                 | `{react:}` or `{reactreply:}`      |
| `MESSAGE_ERROR` : `MESSAGE_TOO_LONG`                    | the **final text content** of your autoresponder is over discord’s 4`000` character limit for a single message.                                                                                          | n/a                                |
| `MESSAGE_ERROR` : `EMBED_DESCRIPTION_TOO_LONG`          | the description of one of your embeds is longer than discord’s limit of `4096` characters.                                                                                                               | `{embed:}` (custom embed)          |
| `MESSAGE_ERROR` : `TOO_MANY_EMBED_CHARACTERS`           | the **combined** text across all embeds (titles, descriptions, fields, footers, authors) exceeds discord’s overall embed character limit (`6000` chars).                                                 | `{embed:}`                         |
| `BUTTON_ERROR` : `TOO_MANY_BUTTONS`                     | you tried to create more than `25` buttons in a single autoresponder response (discord limit: 5 buttons × 5 rows).                                                                                       | `{addbutton:}` `{addlinkbutton:}`  |


# your first embed

## ✎ introduction

embeds are a way to specially format and structure a message. you can put things such as images, a colored border, and more in an embed.&#x20;

the command base is `/embed`

{% hint style="info" %}
interested in checking out some examples and ideas? click [here](/embeds/embed-guide)!
{% endhint %}

## ✎ adding an embed

* to add an embed, you have to use the `/embed create name:embedname`
*

```
<figure><img src="/files/kiOEopYQjDq8EX7kmseY" alt=""><figcaption><p>the embed create command</p></figcaption></figure>
```

* the embed name is what mimu recognizes the embed as compared to other embeds you may create.&#x20;
* embed names should be *short and sweet,* as they cannot be more than 16 characters long and do not support spaces.&#x20;
* after using the create command, mimu will send that you've successfully created it and will have buttons below it to edit your newly created embed

{% hint style="info" %}
we recommend naming your embed something easy to type & remember. for example, if you're making an embed for your server rules, name it `rules_embed` or something similar for simplicity's sake.&#x20;
{% endhint %}

<figure><img src="/files/i18Y13PbEhObM2s3kgrz" alt=""><figcaption><p>created embed with buttons below it</p></figcaption></figure>

* clicking each button will bring you to a form, also known as text modals, to fill out what you want edited in your embed

<figure><img src="/files/Z67EORhfQ2hjxCDyVL1N" alt=""><figcaption><p>this what the first button, editing basic information, brings you to!</p></figcaption></figure>

* when you're all done in the modal, click the "submit" button. all of your changes will be automatically saved!

<figure><img src="/files/NeFFWG6yDkmEdZrnVm8r" alt=""><figcaption><p>your freshly edited embed c:</p></figcaption></figure>

* if you need to exit the text modal and come back for any reason, discord automatically saves the information you had previously input.

## ✎ viewing your existing embeds

* you can view your existing embeds by typing `/embed list`
* all servers have a maximum of **5 embeds**
* premium servers have this limit lifted, allowing them up to **300 embeds**

<figure><img src="/files/N6HhulXho3bVjaMcnDLI" alt=""><figcaption><p>a list of your server's embeds</p></figcaption></figure>

## ✎ deleting an embed

* you can delete an embed using `/embed delete embed:embedname`
* for example, to delete the existing embed named `example`, you would run /`embed delete embed:example`

<figure><img src="/files/A7X839s1VY3ZLamLV4Bo" alt=""><figcaption><p>successfully deleting your embed</p></figcaption></figure>

## ✎ editing your embed

* you can edit an existing embed by using `/embed edit` OR `/embed edit all`
* `/embed edit all` acts similarly to `/embed create` -- this brings up the button embed builder again, allowing you to edit each property through the modals instead of through commands.

<figure><img src="/files/RL8LZPGu96WuUpm486Ei" alt=""><figcaption><p>embed edit all</p></figcaption></figure>

* there are **8** possible embed properties for you to edit- author, color, description, footer, image, thumbnail, timestamp, title
* to edit the author - `/embed edit author embed:embedname text:optional text here icon: optional icon link here`
* to edit the color - `/embed edit color embed:embedname color:optional color hex here`
* to edit the description - `/embed edit description embed:embedname description:optional text here`
* to edit the footer - `/embed edit footer embed:embedname text:optional text here icon:optional icon link here`
* to edit the image - `/embed edit image embed:embedname image:optional image link here`
* to edit the thumbnail - `/embed edit thumbnail embed:embedname image:optional image link here`
* to edit the timestamp - `/embed edit timestamp embed:embedname timestamp:True/False` : select true for a timestamp to be added and false for no timestamp.
* to edit the title: `/embed edit title embed:embedname title:optional text here`
* in the above commands, all values are "optional" as if you leave them blank, it will *remove* the property completely. for example, if you edit the image of your embed and decide to leave the image option out, it will remove the image from your embed entirely if there is one set.

{% hint style="warning" %}
Mimu can only use valid image links in any icon/image property. we recommend using either [Imgur ](https://imgur.com)or getting your link from a [Discord media link.](https://images-ext-2.discordapp.net/external/HwK8_5-sp8pKrslgaxpiaSYozeksPDjy4PNmo0O2udk/https/i.imgur.com/jaXKqAI.mp4)
{% endhint %}

{% hint style="info" %}
are you editing something like your description on PC and are unable to add a new line within the command? to get around this Discord limitation, you can use the `{newline}` variable where you want the next line to start.\
\
i.e., `/embed edit description embed:welcome description:hi there!{newline}welcy to my server` \
will change it to appear as:\
"hi there!\
welcy to my server"
{% endhint %}

![embed infographic on all of the properties](/files/TJwv8FFsR8bIKYh0q4wQ)


# embed guide

there are so many things you can do with embeds in mimu c: let's go through a few common embed examples together!


# general/nonspecific embed

embeds aren't limited to things such as rules or welcome messages, they can be used for *anything!*&#x20;

### ✎ step one

* create the embed by using `/embed create name:general_embed`
* you can name the embed anything you'd like, however we strongly recommend naming it something simple and easy to remember.

### ✎ step two

* let's start to edit the embed to our liking!&#x20;
* remember : you can either outright use these edit commands, or use the buttons + modals from creating your embed to have an interactive text form.

{% hint style="info" %}
you can edit any part of the embed to whatever you'd like! you can customize it to whatever you'd like to fit your server. this guide just goes through creating a common general embed.
{% endhint %}

* **editing the author:** `/embed edit author embed:general_embed text:{server_name} icon:{server_icon}`
* want something else for the author? just replace `{server_name} & {server_icon}` with whatever text/ image you'd like.
* note: if you'd like an image in your author, its link must be in the `icon:` section of the command &#x20;
* **editing the title:** `/embed edit title embed:general_embed title:learn about our server!`
* is this embed for something else? just replace `learn about our server` with whatever text you'd like c:
* **editing the description:** `/embed edit description embed:general_embed description:let's get comfy at {server_name} c:`

  `> owned by: {server_owner}`

  `> created on: {server_createdate}`
* is this embed for something else? just replace all the text after `general_embed` with whatever description text you desire.

{% hint style="warning" %}
Discord on PC/Desktop/select devices **do not** allow new lines in slash commands. If you're looking to have new lines/better spacing in your embed, we recommend either going through the text modal OR using the `{newline}` variable in place of where you want a new line to start.
{% endhint %}

* **editing our thumbnail:** `/embed edit thumbnail embed:general_embed image:{user_avatar}`
* **editing our image:** `/embed edit image embed:general_embed image:`[`https://cdn.discordapp.com/attachments/760988796249833472/907997718788603914/8E08317A-B423-43F5-8D50-CE505204532D.png`](https://cdn.discordapp.com/attachments/760988796249833472/907997718788603914/8E08317A-B423-43F5-8D50-CE505204532D.png)
* if you want a different image, make sure to grab the link! unsure how? click [here ](https://imgur.com/grSt2tz)

![editing our embed's image](/files/2CfJF9qLZnxJ5ZqMyast)

* **editing the color:** `/embed edit color embed:general_embed color:#607D3B`
* feel free to replace the hexcode at the end with any other hex code you'd like. if you need to find a hex code, click [here](https://htmlcolorcodes.com/)
* **editing the footer:** `/embed edit footer embed:general_embed text:thanks for learning with me!`
* **adding a timestamp:** `/embed edit timestamp embed:general_embed timestamp:True`
* . . . and we're done! we've created a general embed for our server.
* we can either preview it in a channel using `/embed show embed:general_embed` or create an[ autoresponder](/autoresponder/your-first-autoresponder#adding-an-autoresponder) for it.

{% hint style="info" %}
premium servers are able to use `/embed show webhook:`option, which sends the embed as a webhook instead.
{% endhint %}


# greet/welcome embed

### ✎ step one

* create the embed by using `/embed create name:greet_embed`
* you can name the embed anything you'd like, however we strongly recommend naming it something simple and easy to remember.

### ✎ step two

* now we can edit the details of our embed to our liking
* remember : you can either outright use these edit commands, or use the buttons + modals from creating your embed to have an interactive text form.
* to edit the author to the user's avatar and name/tag, use `/embed edit author embed:greet_embed text:{user_name} icon:{user_avatar}`
* to edit the title, use `/embed edit title embed:greet_embed title:welcome to {server_name}, cutie!`
* edit the description using `/embed edit description embed:greet_embed description:- get your roles in #roles`

  `- remember to read the #rules`

  `- [link to server](https://discord.gg/mimu)`

{% hint style="warning" %}
Discord on PC/Desktop/select devices **do not** allow new lines in slash commands. if you're looking to have new lines/better spacing in your embed, we recommend either going through the text modal OR using the `{newline}` variable in place of where you want a new line to start.
{% endhint %}

* add the server icon as your thumbnail using `/embed edit thumbnail embed:greet_embed image:{server_icon}`
* you can set the timestamp by using `/embed edit timestamp embed:greet_embed timestamp:True`
* add a footer using `/embed edit footer embed:greet_embed text:you are our {server_membercount_ordinal} member!`
* add an image using `/embed edit image embed:greet_embed image:`[`https://cdn.discordapp.com/attachments/760988796249833472/908698057502240808/386C83E5-5761-43E2-950C-CBB9590758B4.jpg`](https://cdn.discordapp.com/attachments/760988796249833472/908698057502240808/386C83E5-5761-43E2-950C-CBB9590758B4.jpg)
* you can edit the color of your embed by using `/embed edit color embed:greet_embed color:#ffeeff`
* in the end, you should have an embed like below if you followed the guide exact

![the resulting embed](/files/nYzyKNyUT6ApyWFDaz9I)

### ✎ step three

* mimu now needs to know that we'd like this embed to be apart of our greet.
* use `/set greet message message:welcome, {user}! {embed:greet_embed}` to set the greet message to a short welcome, pinging the user, and the embed we just created.
* we also need to set our greet channel using `/set greet channel channel:#welcome`

### ✎ step four

* we can test our greet using `/test greet`
* testing our greet should yield the results below ::

![our finished greeting](/files/pvhrCXEhgYGrSr7bVxN3)

{% hint style="warning" %}
if mimu *doesn't* send the greet message to the channel, it means it has no permissions to do so. you can check by using `/ping` in the greet channel and seeing if it responds. no response = no permissions.
{% endhint %}


# leave/goodbye embed

### ✎ step one

* create the embed by using `/embed create name:leave_embed`
* you can name the embed anything you'd like, however we strongly recommend naming it something simple and easy to remember.

### ✎ step two

* now we can edit the details of our embed to our liking!
* remember : you can either outright use these edit commands, or use the buttons + modals from creating your embed to have an interactive text form.
* edit the author to the user's avatar and name/tag by using `/embed edit author embed:leave_embed text:{user_name} icon:{user_avatar}`
* edit the title by using `/embed edit title embed:leave_embed title:goodbye!`
* edit the thumbnail to the user's avatar by using `/embed edit thumbnail embed:leave_embed image:{user_avatar}`
* edit the description of the embed to `/embed edit description embed:leave_embed description:oh no!`

  `it looks like {user_name} has left us :c`

  `we now have {server_membercount} members`

{% hint style="warning" %}
Discord on PC/Desktop/select devices **do not** allow new lines in slash commands. If you're looking to have new lines/better spacing in your embed, we recommend either going through the text modal OR using the `{newline}` variable in place of where you want a new line to start.
{% endhint %}

* you can add a timestamp by using `/embed edit timestamp embed:leave_embed timestamp:True`
* edit the footer of the embed by using `/embed edit footer embed:leave_embed text:we now have {server_membercount} members. . .`
* edit the color of your embed by using `/embed edit color embed:leave_embed color:#feeee8`
* lastly, you can edit the image of the embed by using `/embed edit image embed:leave_embed image:`[`https://tenor.com/view/puffybear-puffy-face-cute-bye-gif-12628645`](https://tenor.com/view/puffybear-puffy-face-cute-bye-gif-12628645)
* if you followed this, you should get something like:

![a completed leave message embed](/files/MkiDQh6IMVyemOrMY3cw)

### ✎ step three

* now that you have a leave embed, we can set the leave message & channel!
* set your leave message by using `/set leave message message:oh no. . . bye, {user_tag} {embed:leave_embed}`
* make sure that mimu has full permissions to send the embed to the channel you want the message to be sent to, then run\
  `/set leave channel channel:#channel`

### ✎ step four

* we can test our leave using `/test leave`
* testing our leave should yield the results below ::

![our finished leave message!](/files/j5Z7V3rCBSgjtxsZs6fr)

{% hint style="warning" %}
if mimu *doesn't* send the leave message to the channel, it means it has no permissions to do so. you can check by using `/ping` in the leave channel and seeing if it responds. no response = no permissions.
{% endhint %}


# rules embed

### ✎ step one

* create the embed by using `/embed create name:rules_embed`
* you can name the embed anything you'd like, however we strongly recommend naming it something simple and easy to remember.

### ✎ step two

* now we can edit the details of our embed to our liking!
* remember : you can either outright use these edit commands, or use the buttons + modals from creating your embed to have an interactive text form.
* edit the author to the server's icon and name by using `/embed edit author embed:rules_embed text:{server_name} icon:{server_icon}`
* edit the title by using `/embed edit title embed:rules_embed title:our rules & guidelines!`
* edit the thumbnail to the server's icon by using `/embed edit thumbnail embed:rules_embed image:{server_icon}`
* edit the description of the embed! remember that you can replace the rules with your own worded rules, this is just a template!\
  `/embed edit description embed:rules_embed description:read below to learn our rules!`\
  `1) no nsfw content allowed in the server.`\
  `2) please do not spam`\
  `3) keep the chat lighthearted always`\
  `4) follow Discord's ToS`\
  `5) please don't advertise!`

{% hint style="warning" %}
Discord on PC/Desktop/select devices **do not** allow new lines in slash commands. if you're looking to have new lines/better spacing in your embed, we recommend either going through the text modal OR using the `{newline}` variable in place of where you want a new line to start.
{% endhint %}

* you can add a timestamp by using `/embed edit timestamp embed:rules_embed timestamp:True`
* edit the footer of the embed by using `/embed edit footer embed:rules_embed text:rules created on {date}. . .`
* edit the color of your embed by using `/embed edit color embed:rules_embed color:#feeee8`
* lastly, you can edit the image of the embed by using `/embed edit image embed:rules_embed image:`[`https://cdn.discordapp.com/attachments/755410733893681204/946492559725850634/rules-discord.png`](https://cdn.discordapp.com/attachments/755410733893681204/946492559725850634/rules-discord.png)
* if you followed this, you should get something like:

![our complete rules embed](/files/LkrLjB7YHcjAaXtgWrhu)

### ✎ step three

* now, you can display your embed in your rules channel!
* make sure mimu has the proper permissions in your rules channel. then, run:\
  `/embed show embed:rules_embed`
* mimu will then show your embed, as shown below!

![mimu previewing our rules in our rule channel!](/files/ROfP1KERhnhwvaiFykjC)

{% hint style="warning" %}
mimu CANNOT edit the posted embed in the channel. in order to edit the embed again, you would need to edit it using `/embed edit` and have to repost it with the new edits in the channel
{% endhint %}

{% hint style="info" %}
premium servers are able to use `/embed show webhook:`option, which sends the embed as a webhook instead.
{% endhint %}


# boost embed

### ✎ step one

* create the embed by using `/embed create name:boost_embed`
* you can name the embed anything you'd like, however we strongly recommend naming it something simple and easy to remember.

### ✎ step two

* now we can edit the details of our embed to our liking!
* remember : you can either outright use these edit commands, or use the buttons + modals from creating your embed to have an interactive text form.
* to edit the author to the user's avatar and name/tag, use `/embed edit author embed:boost_embed text:{user_name} icon:{user_avatar}`
* to edit the title, use `/embed edit title embed:boost_embed title:wowww a new booster~!`
* edit the description using `/embed edit description embed:boost_embed description:thank you {user_name} for boosting! you've received our booster role and 5000 {server_currency}!`\
  `- we are now at {server_boostcount} boosts :D`

{% hint style="warning" %}
Discord on PC/Desktop/select devices **do not** allow new lines in slash commands. If you're looking to have new lines/better spacing in your embed, we recommend either going through the text modal OR using the `{newline}` variable in place of where you want a new line to start.
{% endhint %}

* add a boost icon as your thumbnail using `/embed edit thumbnail embed:boost_embed image:`[`https://cdn.discordapp.com/attachments/840652464532488202/947591810283347989/EWdeUeHXkAQgJh7.png`](https://cdn.discordapp.com/attachments/840652464532488202/947591810283347989/EWdeUeHXkAQgJh7.png)
* you can set the timestamp by using `/embed edit timestamp embed:boost_embed timestamp:True`
* add a footer using `/embed edit footer embed:boost_embed text:we only need {server_nextboostlevel_until_required} boosts to our next level!`
* add an image using `/embed edit image embed:boost_embed image:`[`https://cdn.discordapp.com/attachments/840652464532488202/947590709148536912/8f3f0c30e25dc0c40d9e3600949a4e3b.gif`](https://cdn.discordapp.com/attachments/840652464532488202/947590709148536912/8f3f0c30e25dc0c40d9e3600949a4e3b.gif)
* you can edit the color of your embed by using `/embed edit color embed:boost_embed color:#CF9FFF`
* in the end, you should have an embed like below if you followed the guide exact

![our full boost embed](/files/17FZ5581eIa5lPAkRm3G)

### ✎ step three

* mimu now needs to know that we'd like this embed to be apart of our boost.
* use `/set boost message message:thank you, {user}! {modifybal:5000}{embed:boost_embed}` to set the boost message to a short thanks, pinging the user, giving them the promised currency, and the embed we just created.
* we also need to set our boost channel using `/set boost channel channel:#channel`
* in addition to this, we need our **default server boost messages on in a channel that Mimu can see.** it doesn't necessarily need to be the same channel as your mimu boost message is in, however mimu needs to be able to see the system boost messages in order to know when someone boosts.

![the system messages found in server settings > overview](/files/4pT6sKYU2zr94lZHYPcV)

### ✎ step four

* we can test our boost using `/test boost`
* testing our boost should yield the results below ::

![mimu letting us know that someone boosted!](/files/UvcySNtgB5jvOMltsxu4)

{% hint style="warning" %}
if mimu *doesn't* send the boost message to the channel, it means it has no permissions to do so or cannot see where default boost messages are being sent by Discord. you can check by using `/ping`. no response = no permissions.
{% endhint %}


# \[03/2024] v8.10 - leaving patreon and restructuring supporter tiers

some information for the launch of the new payment system.


# changelog & details

a full list of EVERY change made with this update

## 1. all subscription tier information

view [tier changes & pricing changes](#id-7.-tier-changes-pricing-changes) for more information regarding pricing changes

<figure><img src="/files/OT9CVcCtGEQBGYfwJy5f" alt=""><figcaption></figcaption></figure>

## 2. pet elite is worth more than ever!

* now you will obtain 6 pet tickets upon claiming.
* we're working on more improvements in the experience as well, please stay tuned.

## 3. changes in commands

* `/donate` -> `/purchase`&#x20;
* claiming a key:
  * `/claim premium` -> `/keys claim premium`
  * `/claim elite` -> `/keys claim elite`
  * `/claim tickets` -> `/keys claim tickets`
* viewing your keys:

  * upon your support, you will be sent the keys via mimu's dm. it'll look something like this.

  <figure><img src="/files/Xw88EYHIGWHn5NeagQLV" alt=""><figcaption></figcaption></figure>

  * you can also access these keys in the [manage ](https://mimu.bot/donate/manage)page or `/keys list`

<figure><img src="/files/OfIWo3jiiCleWXCS5n2M" alt=""><figcaption></figcaption></figure>

## 4. payment flow

### your first purchase

1. to begin purchasing, head to `/purchase`&#x20;
2. it allows you to easily go through the options, as well as providing a quickstart guide with the 'not sure what anything is :(' option

<figure><img src="/files/JajuJv2d9kosJV6oAMcd" alt=""><figcaption><p>this allows mimu to give you advice on exactly what you should choose.</p></figcaption></figure>

3. just select the purchase option you'd like, and you'll be allowed to checkout.&#x20;

{% hint style="info" %}
remember to turn on your DMs so that you receive a message when it's arrived. if your DMs are closed, rewards will still apply but you won't get a DM.

&#x20;![](/files/suIq3iHyiUoarb4yeJGr)
{% endhint %}

4. when your payment goes through, you'll get a dm from mimu.
5. for roles, badges, and other perks, head to the [support server](https://mimu.bot/support).

   note: we have plans to not require access to the support server for perks in the future, but it will have to wait until we fully sunset patreon. read more:[swapping over as an existing patron: early patron badge & more!](/other/03-2024-v8.10-leaving-patreon-and-restructuring-supporter-tiers/swapping-over-as-an-existing-patron-early-patron-badge-and-more)

### manage your subscription within discord

<figure><img src="/files/hXqrELF4qUnZKnsq8E7N" alt=""><figcaption></figcaption></figure>

you can click **edit subscriptions** to instantly adjust, cancel, or update payment information.

<figure><img src="/files/8n4s62rP0RToMxO4OC2d" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/7fJniel2lBv9BW1xLwuO" alt=""><figcaption></figcaption></figure>

if by chance, your discord account gets compromised, or are unable to access your discord account anymore; and you want to adjust your billing, you can do so by heading to the [billing login page](https://mimu.bot/purchase/billing).&#x20;

### failed payment reminders

* if your payment method declines, you'll be given a reminder over discord dm to update your payment information.

### add an additional monthly key

you can now all add key subscriptions - monthly! just head over to /purchase and add an extra one. you can still purchase individual keys, with discounts for bulk. for full information, read the [pricing changes here](#tier-changes-pricing-changes-and-other).

<figure><img src="/files/BFG4A33Rhm1z7UZAG0F5" alt=""><figcaption></figcaption></figure>

per some users' request, we've also added the ability to purchase more keys - you can also purchase up to **300 at once** now:

<figure><img src="/files/Ck8n0eEbXghNRTx2gTRb" alt=""><figcaption></figcaption></figure>

### annual subscriptions

* with this update, there are now annual subscriptions, allowing you to save 2 months' of your subscription cost!&#x20;
* if the subscription includes a key, you'll immediately recieve all 12 keys for the year.&#x20;

## 5. enhanced security with locking your keys

one of our biggest pain points from users were key sniping, especially since commands are typically public. with key locking, fear no more!

* by default, keys are now in a **locked** state.
  * note: any keys made on or before **March 4, 12:00 ET are unlocked by default**.
  * this is to ensure that any gifted keys that are unclaimed, prior, would still be possible to claim. you can re-lock them in `/keys list`.&#x20;
* keys that are **locked** can **only be used on your account**, and not by anyone else.&#x20;
* you can unlock them at `/keys list` at any time.

<figure><img src="/files/LOMeBJfXmrof6mjGm54H" alt=""><figcaption></figcaption></figure>

## 6. improved keys claiming process

### better autocomplete to claim a key

<figure><img src="/files/Nd22N6A3vJEgzPqhijjl" alt=""><figcaption><p>autocomplete to prompt you to claim a key.</p></figcaption></figure>

### bulk key claiming

<figure><img src="/files/ajCWmwSxNBajogspvqKI" alt=""><figcaption><p>an easy way to claim up to 25 keys at once.</p></figcaption></figure>

### double-confirmation before claiming

before claiming, it'll make you confirm that you want **tickets**, **premium** or **elite**.

## 7. tier changes, pricing changes

stripe significantly charges less fees for large transactions - but significantly more on smaller transactions in comparison to PayPal (mimu.bot/donate) and Patreon. as a result, we're updating our pricing to reflect that. we haven't updated our pricing **since 2020** so we have tried to balance out the pricing as best we can. most tiers have **gotten a price decrease, and all tiers now have an annual subscription option**.

### the below prices are in USD.&#x20;

note that the new system will only charge you in USD. if your bank has a different currency, your bank will likely have a small fee in the transaction (typically under 5%, but this may depend on your jurisdiction). **however,** the fee will **likely be lower than the fee** that Patreon was charging you (Patreon charged anywhere from 20-30% in conversion fees), which was why we made the decision to purely only charge USD.

<table data-view="cards"><thead><tr><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>pet caretaker</strong></td><td>$1 + sales tax -> $1.49 </td><td>or $14.99 / yearly (save $3)</td></tr><tr><td><strong>mimu plus</strong></td><td><em>previously called "mimu premium"</em></td><td>$5 + sales tax -> $4.99<br>or $49.99 / yearly (save $10) </td></tr><tr><td><strong>custom mimu</strong></td><td>previously called "my own mimu"</td><td>$25 + sales tax -> $19.99 <br>or $199.99 / yearly (save $40)</td></tr></tbody></table>

### individual keys: cheaper pricing!

key pricing is mostly unchanged, but due to the limitations of stripe billing, the model of which it works is a little bit different.

**previously:**

* keys were $4 each, then keys after the 3rd would be $3.50 each
  * e.g. for 5 keys: $4 x 3 + $3.5 x 2 = $19
  * e.g. for 2 keys: $4 + $4 = $8
  * e.g. for 50 keys:  $4 x 3 + $3.5 x 47 = $176.50

**now:**

* <https://mimu.bot/donate> now provides a similar model, but at a less discounted price to encourage usage of **/purchase** instead:
  * keys are $4 each, then keys after the 3rd would be $3.80 each&#x20;
* **/purchase** now provides threshold-based key pricing. for most scenarios, the pricing is about the same as before, or cheaper.
  * $4 per key (unchanged)
  * 8% off for 3 or more keys
    * e.g. for 5 keys: $4 x 5 x (100-8%) = $18.4
  * 12% off for 20 or more keys
    * e.g. for 50 keys: $4 x 50 x (100-12%) = $176

### role names

one feedback we got very often was that the role names were not intuitive, with users asking what "sugar pastries" was.

{% hint style="info" %}
**fun fact!** the origination of "sugar pastries" was inspired by one of our earliest donators dating back in **2020!**

![](/files/n3tRlatHlA9nCnXwpchk)
{% endhint %}

* sugar pastries -> supporter
* premium beans -> stellar supporter
* my own mimu -> celestial supporter

<figure><img src="/files/j6rvJvKTtnmgrJxlhr0D" alt=""><figcaption><p>colors still cuter than ever.</p></figcaption></figure>

if at any point your roles are not synced properly, you can resync your roles via `r.syncroles`. please note that any roles pertaining to patreon subscriptions can be resynced by unlinking & relinking your discord to patreon.


# terms of purchasing, refunds, etc.

## About Your Purchase

Purchases are either one-time, or a monthly subscription, depeneding on which tier you decide to purchase.

#### Keys and Codes

* Keys can be claimed for 1 month of server premium, 2 weeks of pet elite, or 10 pet tickets.&#x20;
* Keys do not expire unless notified and stated otherwise. Should this change in the future, we will make reasonable attempt to provide notice.
* Keys are locked by default. Keys can be gifted to others by "unlocking" with `/keys list`, and then sending the corresponding code to your friend.

#### Subscription-based Rewards

* Perks only pertain during the month(s) of your subscription.
* Keys that pertain to your subscription do not expire unless notified and stated otherwise (as aforementioned) and given depending on your billing interval: monthly or yearly respectively.
* Your billing date depends on the date you initially subscribed; for example, if you subscribed on July 9 on a monthly basis, you'll be billed on August 9.
* Each subscription is linked to one Discord account. It is not possible to transfer your subscription to another Discord account: to do so, please re-subscribe.
* Should you lose access to your Discord account but still need to manage your subscription, you can still do so at the [billing login page](https://mimu.bot/purchase/billing).

If you need help, please reach out to our support in our [Support Server](https://mimu.bot/support).

## Terms of Purchase

Please read this section in cohesion with our [Terms of Use](https://mimu.bot/terms) to fully understand your rights.

By purchasing Products, you represent that you are of legal age to enter into this agreement and that all information you provide is accurate and complete. Payment must be made at the time of purchase through the payment methods we offer. Prices for Products are subject to change without notice.

After your purchase is successfully processed, you will receive an email with your invoice, as well as a Discord Message via Direct Messages with clear instructions of how to utilize your Digital Goods. It is your responsibility to ensure that your email is accurate, and your Discord DMs are open, in order to be capable of receiving such notifications.

We reserve the right to modify these Terms of Purchase at any time. Your continued use of the Products after such changes indicates your acceptance of the new Terms of Purchase.

#### Compliance of Terms of Use

By purchasing digital goods from mimu.bot, you agree to comply with our Terms of Purchase and any associated [Terms of Use](https://mimu.bot/terms) governing the use of our Products. Violation of these terms, including but not limited to unauthorized distribution, copying, or misuse of the Products, constitutes a breach of our agreement.

In the event of such a violation:

* Your license to use the digital goods may be terminated immediately without notice.
* You will not be eligible for a refund for any purchases made.
* We may take any other remedial action we deem appropriate in accordance with these Terms of Purchase and applicable law.

It is our policy to enforce these terms to ensure the integrity of our Products and the fairness to all our customers. If your access to the Products is terminated due to a violation of our Terms of Service, any payments made for the Products will not be refunded. This policy is in place to deter unauthorized use of our Products, ensuring that we can continue to offer high-quality digital goods to our customers.

#### **Assistance and Disputes**

We understand that technical issues or concerns about our Products can arise. If you are experiencing difficulties or if you have any concerns about the Products you have purchased, please contact us immediately at <support@mimu.bot> or [our support server.](https://mimu.bot/support) We are committed to providing excellent customer support and will work with you to resolve any issues within the scope of our policies and capabilities.

Your satisfaction is important to us, and we encourage open communication to address any concerns you may have regarding your purchase or use of our digital goods.

## Refund Policy

We understand that sometimes you may run into issues with your purchase, and we're here to help.

#### General Refund Policy

The nature of digital distribution makes it challenging to provide refunds. We provide comprehensive descriptions and previews of our Products to help you make informed decisions before making a purchase. However, we do offer refunds for up to **7 days** from your original purchase, as long as any keys that are associated with your purchase (if applicable) are intact and unused. To be eligible under these circumstances, you must ensure that the digital key (also coined as 'mimu key') has not been redeemed or used.&#x20;

If you qualify for a refund based on the above criteria, please note that the refund amount will be subject to a **non-refundable payment processing fee**. This fee consists of $0.30 plus 3% of the original transaction amount. This is to cover the cost of processing the transaction and the refund

To request a refund under these terms, reach out to us via the [Support Server (talk-to-devs)](https://mimu.bot/support) or <support@mimu.bot>.

#### **Chargebacks**

Initiating a chargeback or dispute through your bank, or credit card issuer is against our [Terms of Use](https://mimu.bot/terms). Filing a chargeback for transactions made without following our refund process may result in immediate termination of your access to our digital goods and services. We take fraud and chargeback abuse seriously and may pursue legal action or other remedies to recover losses incurred.

If you have concerns about a transaction or believe you are entitled to a refund, we urge you to contact us directly before considering a chargeback. We are committed to addressing your concerns and finding a resolution within our policies.


# swapping over as an existing patron: early patron badge & more!

#### hello pastry! or should i say supporter? \~&#x20;

thank you for supporting mimu so far - i really appreciate it! below i'll be sharing insights on exactly how the badge works, and how to transfer stuff over.

## the early patron role and badge (the "move-over" badge!)

to appreciate you for supporting us even through the patreon era, we're giving away a badge to anyone who's moving over to the new system within the **next 3 months**, i.e. before **June 10, 2024**.&#x20;

<figure><img src="/files/fjhbXrf9qu1n67HGIocP" alt=""><figcaption><p>shows in /balance, just like other badges.</p></figcaption></figure>

<figure><img src="/files/sN9tmEyg1XtzvDkfGgZS" alt=""><figcaption><p>the role received! :)</p></figcaption></figure>

### to be eligible for the badge:

* you must be an existing supporter on [patreon.com/mimubot](https://patreon.com/mimubot) of any tier
* subscribed to any tier (pet caretaker, mimu plus or custom mimu) in **/purchase**, **BEFORE** the end of your patreon subscription. for more info on doing so, please read the [purchasing guide](https://docs.mimu.bot/other/03-2024-v8.10-leaving-patreon-and-restructuring-supporter-tiers/pages/U4RS30k53LEn94haDT1A#id-4.-payment-flow).

### things to keep in mind! :)

* this badge is **associated** with a role "early patron"
* if you leave or are banned from the support server, you will **not be able** to retain this role and badge.
* this badge has **no monetary equivalent;** it is just a token of thanks for moving over to the new system.
* to make the most of your patreon subscription, it is highly recommended to wait until the last few days of the month (e.g. 25th) before subscribing to the new system.

## retaining moon loyalty badge (for mimu plus or above)

* when moving over, you may notice that your loyalty badge streak also disappears
* to re-gain your loyalty, please subscribe to **$4.99 mimu plus** or **$19.99 custom mimu /purchase tier,** **before your patreon subscription ends**, and reach out to us.
* we will provide loyalty badge transfer support for the next 6 months (until patreon support ends).

<figure><img src="/files/gsgyRNSPQxJ1CxMIvkeN" alt=""><figcaption></figcaption></figure>

## ok! how do i reach out to claim my badges (loyalty streak & move-over badge)?

* please reach out via #talk-to-devs (under the **supporter corner**) and just type "hi! i swapped over to the new system and here to claim my badges!"

## when are you guys ending support for patreon?

we will stop accepting Patreon donations in 1 month, i.e. **April 10, 2024**; and then stop support for perks officially in 6 months, i.e. **September 10, 2024**. on this day, perks for patrons are no longer guaranteed, but we will continue to provide customer support for those who need help transferring.


# why are you moving away? what about the donation site?

i initially shared the reasoning as to why we were moving away in april 2021, when i first launched mimu.bot/donate. this page will go in-depth with the reasoning, and our plans going forward \~

## What's happening to the donation site?

Whilst the donation site was good, it was built upon [PayPal Checkout](https://developer.paypal.com/docs/checkout/) - which had its limitations in terms of development tools; and was built on web, meaning that it was always going to be an additional platform for developers to worry about. Above all, our users had expressed that the site was sometimes unreliable and that PayPal was not an option for them in their country.&#x20;

As a result, we're moving to **Stripe**: whilst it takes slightly more fees, it handles majority of our checkout issues, provides us with in-built support for **Apple Pay, Google Pay**, and potentially other payment providers as they expand in the future. The development experience is also drastically simpler, making it way easier for me as a developer to provide a cleaner checkout experience **within Discord**.

Some may know that Discord actually recently launched **App Monetization** and it's in an **early beta** (ish) stage. **However**, it's been over a year since they launched server monetization and that doesn't support Canada yet, so I'm unoptimistic that it'll ever be supported. In addition, the fee that Google Play and App Store takes for mobile payments is 30%, meaning that I'll have to suffer from a lot of additional fees.

There's nothing stopping me from integrating some of them in the future with the Discord in-app monetization as well, so if they ever do support Canada, I can reconsider it. But I didn't wanna pause development on this as Discord was unable to provide additional context on support for Canada.

#### Ok, so will the donation site still be around?

For now, **our tentative plan** is to keep the donation site as a backup option. The one thing that the donation site supports is one-time payments for **PayPal balance** - PayPal accounts that only have balance without a credit card attached. That's something that Stripe unfortunately doesn't support. So our plan is to keep it.

The [Manage](https://mimu.bot/donate/manage) page will also stay for those who want a full overview of their keys. We're currently unsure if we'll update or maintain it - please stay tuned.

## So...why did you move away from Patreon?

I explained this [a little in April 2021 when I first worked on the Donation Site](https://discord.com/channels/479115079338557469/479115079338557472/833055423779176519), but I wanted to rearticulate my thoughts since it's been almost 3 years.

To be honest, there are quite a few reasons, which I'll elaborate again below.

#### An abandoned API :(

Starting with the less obvious: whilst Patreon has been a wonderful startup platform at the beginning, allowing me to quickly setup and gain monetary support to pay for the evergrowing fees in Mimu since over a year ago, it is simply not made for you to sell features, services, or products on.&#x20;

Patreon is designed for, lets say, a content creator from YouTube to quickly gather support and is a really nice platform for those creators to communicate with their users. It's also a great place for one to quickly set up simple tiers and show behind the scenes footage. However, it falls flat when it comes to any form of integration.&#x20;

Whilst yes - in its core - Premium or other perks and features are still a donation, Patreon just doesn't provide sufficiently maintained tools for me to easily automate the process of rewarding you. As the number of supporters increased from one to hundreds, the automation I had put together felt more and more like a cardboard box that was drenched, and I was trying to use tape to stick it back together every time something went wrong.&#x20;

The reason is because Patreon has stopped working on these integrations [since late 2019](https://imgur.com/a/l5FglVS), and [completely stopped all support for it in 2020](https://www.patreondevelopers.com/t/patreon-com-to-not-support-api-after-june-22nd-2020/). As they release more features, their API has become more and more unstable, and I'm not even able to use those features as I'm scared my poorly put-together integration would cause issues. In attempt to make this developer experience a less painful one, I even put together a [small package allowing others to build upon it](https://www.npmjs.com/package/patreon-discord).

This caused a lot of issues: keys are never instantly generated, taking anywhere from 10 minutes to even a week at some times. The API documentation is mixed between the two versions they use, and fetching a singular patron's information is near-to impossible without fetching ALL patrons' information; even figuring out someone just paid or not is incredibly challenging. And understandably so - to be honest - Patreon is *trying to attract **content creators**, and **not services**, and have proved that as they increase their time working on a myriad of other stuff instead of their AP&#x49;**.***

#### **30-40% in Fees**

On top of that, the payment model of Patreon is incredibly expensive for what it provided. Patreon is known to stack fees heavily already, but for small transactions, it suffers even more. To give you some more insight of how much it actually costs, the **USD$1 Pet Caretaker** tier ends up being around US&#x44;**$0.50 by the time it arrives to me**. This includes the payment provider fee (2.9% + $0.30), the Patreon fee (8%), and then also the payout fee (around 4.9% since I'm not in the US).&#x20;

If you're paying in another currency, Patreon takes **even more:** one of my donators from europe paid **€29.40** for the USD$25 my own mimu tier. That's literally over USD$30. However, I only receive around **USD$22** even though the user paid **USD$32**.

<figure><img src="/files/vYADilzniSZ3l9ie0YCg" alt=""><figcaption><p>The exchange rate of 29.4 Euros to USD</p></figcaption></figure>

#### Accounts and Integration with Discord

Another problem with Patreon is that their integration for roles are problematic, and doesn't innately require accounts to be associated with a Discord account. As someone who is selling a service/product on Discord, it's vital for all users who are paying to be associated with a Discord account. However, 9 times of 10 we have many patrons [not getting their roles and perks properly as a result of the Patreon bot being broken](https://www.reddit.com/r/patreon/comments/mptnnm/patreon_bot_not_removing_discord_roles/), or just not knowing how to connect their account. Getting your rewards shouldn't feel like quantum mathematics: it should be smooth and fast.

#### Limited payment methods and **Subscriptions**

Finally, due to the subscription model of this platform, Patreon has huge restrictions. Consider this: whilst Patreon does, on paper, support PayPal and credit cards; but PayPal support is actually non-inclusive because in order to pay for a subscription on PayPal, you have to have a credit or debit card linked to it. This means you can't pay a 1-time payment with existing PayPal balance without a credit / debit card linked for a mimu key. With the new system, we can not only support Card (credit and debit): we're also immediately supporting Apple Pay, Link, and Google Pay - and we'll support more in the future. Those who want to pay with PayPal balance (that have no credit/debit card associated) can still do so in the [Donate page](https://mimu.bot/donate).

There's also the nature of a subscription that doesn't sit that well with me as a human being; whilst I do appreciate the amount of people willing to subscribe to Mimu and continually pay, in essence, a lot of subscriptions including Patreon has a nature of the user forgetting that they subscribed / forgetting to cancel their subscription. I want to be able to give the option of both either a one time payment, or an autorenewing subscription, should you decide that it's better for you.

### Do you think Patreon is bad then?

With all that said, I still hold the view that Patreon serves as an incredibly potent platform... **for its intended audience**. It provides you with a suite of tools and integrations and robust support for **specifically content creators** or otherwise, and it has brought significant positive shifts since its launch over a decade ago towards the content creation industry. Its low effort onboarding was why I joined in the first place and I'm grateful for everything it brought me these past few years as long as I have, and I realize that Mimu's growth to the extent it has would have been unattainable without this platform allowing me to accept your generous contributions.


