<commit_before>## Usage Structure

`<>` required argument, `[]` optional argument `<Name:Type{min,max}>`

- **Name** Mostly used for debugging message, unless the type is Literal in which it compares the argument to the name.
- **Type** The type of variable you are expecting.
- **Min, Max** Minimum or Maximum for a giving variable (works on strings in terms of length, and on all types of numbers in terms of value) You are allowed to define any combination of min and max. Omit for none, `{min}` for min, `{,max}` for max. If you set `min` and `max` with the same integer, then the provided string must have equal length.
- **Special Repeat Tag** `[...]` will repeat the last usage optionally until you run out of arguments. Useful for doing something like `<SearchTerm:str> [...]` which will allow you to take as many search terms as you want, per your Usage Delimiter.

> Note: You can set multiple options in an argument by writting `|`. For example: `<Message:msg|Content:string{4,16}>` will work when you provide a message ID or a string with a length between 4 and 16 (including both limits).

### Usage Types

|                         Type | Description
| ---------------------------: | -----------
|                    `literal` | Literally equal to the Name. This is the default type if none is defined.
|             `str` , `string` | A [String](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String).
|            `int` , `integer` | An [Integer](https://en.wikipedia.org/wiki/Integer).
|   `num` , `number` , `float` | A [Floating Point Number](https://en.wikipedia.org/wiki/Floating-point_arithmetic).
|                    `boolean` | A [Boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean).
|                        `url` | A [URL](https://en.wikipedia.org/wiki/URL).
|            `msg` , `message` | A [Message](https://discord.js.org/#/docs/main/master/class/Message) instance returned from the message ID.
|                       `role` | A [Role](https://discord.js.org/#/docs/main/master/class/Role) instance returned from the role ID or mention.
|                    `channel` | A [TextChannel](https://discord.js.org/#/docs/main/master/class/TextChannel) instance returned from the channel ID or channel tag.
|                      `guild` | A [Guild](https://discord.js.org/#/docs/main/master/class/Guild) instance returned from the guild ID.
|           `user` , `mention` | A [User](https://discord.js.org/#/docs/main/master/class/User) instance returned from the user ID or mention.
|                     `member` | A [GuildMember](https://discord.js.org/#/docs/main/master/class/GuildMember) instance returned from the member ID or mention.
|            `cmd` , `command` | A {@link Command} instance returned from the command name or alias.
|                      `event` | A {@link Event} instance returned from the event name.
|                  `inhibitor` | A {@link Inhibitor} instance returned from the inhibitor name.
|                  `finalizer` | A {@link Finalizer} instance returned from the finalizer name.
|                    `monitor` | A {@link Monitor} instance returned from the monitor name.
|                   `provider` | A {@link Provider} instance returned from the provider name.

> Note: `Literal` is very useful in arguments with multiple options.

___

# Using arguments in your command.

Now, after we understand how to configurate the command, we'll start writting it:

```javascript
async run(msg, [...params]) {
	// This is where you place the code you want to run for your command
}<commit_msg>grammer<commit_after>## Usage Structure

`<>` required argument, `[]` optional argument `<Name:Type{min,max}>`

- **Name** Mostly used for debugging message, unless the type is Literal in which it compares the argument to the name.
- **Type** The type of variable you are expecting.
- **Min, Max** Minimum or Maximum for a giving variable (works on strings in terms of length, and on all types of numbers in terms of value) You are allowed to define any combination of min and max. Omit for none, `{min}` for min, `{,max}` for max. If you set `min` and `max` with the same integer, then the provided string must have equal length.
- **Special Repeat Tag** `[...]` will repeat the last usage optionally until you run out of arguments. Useful for doing something like `<SearchTerm:str> [...]` which will allow you to take as many search terms as you want, per your Usage Delimiter.

> Note: You can set multiple options in an argument by writting `|`. For example: `<Message:msg|Content:string{4,16}>` will work when you provide a message ID or a string with a length between 4 and 16 (including both limits).

### Usage Types

|                         Type | Description
| ---------------------------: | -----------
|                    `literal` | Literally equal to the Name. This is the default type if none is defined.
|             `str` , `string` | A [String](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String).
|            `int` , `integer` | An [Integer](https://en.wikipedia.org/wiki/Integer).
|   `num` , `number` , `float` | A [Floating Point Number](https://en.wikipedia.org/wiki/Floating-point_arithmetic).
|                    `boolean` | A [Boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean).
|                        `url` | A [URL](https://en.wikipedia.org/wiki/URL).
|            `msg` , `message` | A [Message](https://discord.js.org/#/docs/main/master/class/Message) instance returned from the message ID.
|                       `role` | A [Role](https://discord.js.org/#/docs/main/master/class/Role) instance returned from the role ID or mention.
|                    `channel` | A [TextChannel](https://discord.js.org/#/docs/main/master/class/TextChannel) instance returned from the channel ID or channel tag.
|                      `guild` | A [Guild](https://discord.js.org/#/docs/main/master/class/Guild) instance returned from the guild ID.
|           `user` , `mention` | A [User](https://discord.js.org/#/docs/main/master/class/User) instance returned from the user ID or mention.
|                     `member` | A [GuildMember](https://discord.js.org/#/docs/main/master/class/GuildMember) instance returned from the member ID or mention.
|            `cmd` , `command` | A {@link Command} instance returned from the command name or alias.
|                      `event` | An {@link Event} instance returned from the event name.
|                  `inhibitor` | An {@link Inhibitor} instance returned from the inhibitor name.
|                  `finalizer` | A {@link Finalizer} instance returned from the finalizer name.
|                    `monitor` | A {@link Monitor} instance returned from the monitor name.
|                   `provider` | A {@link Provider} instance returned from the provider name.

> Note: `Literal` is very useful in arguments with multiple options.

___

# Using arguments in your command.

Now, after we understand how to configurate the command, we'll start writting it:

```javascript
async run(msg, [...params]) {
	// This is where you place the code you want to run for your command
}
{'fraction_non_alphanumeric': 0.1300880088008801, 'fraction_numerical': 0.0016501650165016502, 'mean_word_length': 2.7703473302229136, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 15, 'https://': 22, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5155055', 'n_tokens_mistral': 2004, 'n_tokens_neox': 1926, 'n_words': 774}