Replace all instances of this.specialArgs with this.options, update docs
This commit is contained in:
parent
d469d36a59
commit
df91afee1f
14 changed files with 50 additions and 32 deletions
|
@ -11,9 +11,12 @@ Here's an overview of the environment variables required to run the bot:
|
|||
Here's an overview of the variables that are not necessarily required for the bot to run, but can greatly enhance its functionality:
|
||||
- `STAYVC`: Set this to true if you want the bot to stay in voice chat after playing music/a sound effect. You can make it leave by using the stop command.
|
||||
- `DBL`: An API token from [Top.gg](https://top.gg/). Unnecessary for most users since Top.gg tends to ban forks of bots like esmBot from their list.
|
||||
- `TENOR`: An API token from [Tenor](https://tenor.com/gifapi). This is not required for using GIFs from Tenor; however, it can greatly reduce resource usage from converting said GIFs.
|
||||
- `TENOR`: An API token from [Tenor](https://tenor.com/gifapi). This is required for using GIFs from Tenor.
|
||||
- `OUTPUT`: A directory to output the help documentation in Markdown format to. It's recommended to set this to a directory being served by a web server.
|
||||
- `TEMPDIR`: A directory that will store generated images larger than 8MB. It's recommended to set this to a directory being served by a web server.
|
||||
- `TMP_DOMAIN`: The root domain/directory that the images larger than 8MB are stored at. Example: `https://projectlounge.pw/tmp`
|
||||
- `THRESHOLD`: A filesize threshold that the bot will start deleting old files in `TEMPDIR` at.
|
||||
- `METRICS`: The HTTP port to serve [Prometheus](https://prometheus.io/)-compatible metrics on.
|
||||
- `API`: Set this to true if you plan on using the image API. Images will be requested from the URLs specified in the `image` block of `servers.json`.
|
||||
- `API`: Set this to "none" if you want to process all images locally. Alternatively, set it to "ws" to use an image API server specified in the `image` block of `servers.json`, or "azure" to use the Azure Functions-based API.
|
||||
- `AZURE_URL`: Your Azure webhook URL. Only applies if `API` is set to "azure".
|
||||
- `AZURE_PASS`: An optional password used for Azure requests. Only applies if `API` is set to "azure".
|
|
@ -40,27 +40,41 @@ As you can see, the first thing we do is import the Command class. We then creat
|
|||
The default command name is the same as the filename that you save it as, excluding the `.js` file extension. If you ever want to change the name of the command, just rename the file.
|
||||
|
||||
The parameters available to your command consist of the following:
|
||||
- `this.client`: An instance of an Eris `Client`, useful for getting info or performing lower-level communication with the Discord API. Documentation for this type can be found [here](https://abal.moe/Eris/docs/Client).
|
||||
- `this.client`: An instance of an Eris [`Client`](https://abal.moe/Eris/docs/Client), useful for getting info or performing lower-level communication with the Discord API.
|
||||
- `this.cluster`: The ID of the eris-fleet cluster that the command is being run from. This should be a number greater than or equal to 0.
|
||||
- `this.worker`: The ID of the current eris-fleet worker. This should be a number greater than or equal to 0.
|
||||
- `this.ipc`: An eris-fleet `IPC` instance, useful for communication between worker processes. Documentation for this type can be found [here](https://danclay.github.io/eris-fleet/classes/IPC.html).
|
||||
- `this.message`: An Eris `Message` object of the message that the command was run from, useful for interaction and getting info about the channel/server that the command was run in. Documentation for this type can be found [here](https://abal.moe/Eris/docs/Message).
|
||||
- `this.ipc`: An eris-fleet [`IPC`](https://danclay.github.io/eris-fleet/classes/IPC.html) instance, useful for communication between worker processes.
|
||||
- `this.origOptions`: The raw options object provided to the command by the command handler.
|
||||
- `this.type`: The type of message that activated the command. Can be "classic" (a regular message) or "application" (slash commands).
|
||||
- `this.channel`: An Eris [`TextChannel`](https://abal.moe/Eris/docs/TextChannel) object of the channel that the command was run in, useful for getting info about a server and how to respond to a message.
|
||||
- `this.author`: An Eris [`User`](https://abal.moe/Eris/docs/User) object of the user who ran the command, or a [`Member`](https://abal.moe/Eris/docs/Member) object identical to `this.member` if run in a server as a slash command.
|
||||
- `this.member`: An Eris [`Member`](https://abal.moe/Eris/docs/Member) object of the server member who ran the command. When running the command outside of a server, this parameter is undefined when run as a "classic" command or a [`User`](https://abal.moe/Eris/docs/User) object identical to `this.author` when run as a slash command.
|
||||
- `this.options`: When run as a "classic" command, this is an object of special arguments (e.g. `--argument=true`) passed to the command. These arguments are stored in a key/value format, so following the previous example, `this.options.argument` would return true. When run as a slash command, this is an object of every argument passed to the command.
|
||||
|
||||
Some options are only available depending on the context/original message type, which can be checked with `this.type`. The options only available with "classic" messages are listed below:
|
||||
- `this.message`: An Eris [`Message`](https://abal.moe/Eris/docs/Message) object of the message that the command was run from, useful for interaction.
|
||||
- `this.args`: An array of text arguments passed to the command.
|
||||
- `this.content`: A string of the raw content of the command message, excluding the prefix and command name.
|
||||
- `this.specialArgs`: An object of special arguments (e.g. `--argument=true`) passed to the command. These arguments are stored in a key/value format, so following the previous example, `this.specialArgs.argument` would return true.
|
||||
- `this.reference`: An object that's useful if you ever decide to reply to a user inside the command. You can use [`Object.assign`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) to combine your message content with this parameter.
|
||||
|
||||
The options only available with "application"/slash commands are listed below:
|
||||
- `this.interaction`: An Eris [`CommandInteraction`](https://abal.moe/Eris/docs/CommandInteraction) object of the incoming slash command data.
|
||||
- `this.optionsArray`: A raw array of command options. Should rarely be used.
|
||||
|
||||
Some static fields are also available and can be set depending on your command. These fields are listed below:
|
||||
- `description`: Your command's description, which is shown in the help command.
|
||||
- `aliases`: An array of command aliases. People will be able to run the command using these as well as the normal command name.
|
||||
- `arguments`: An array of command argument types, which are shown in the help command.
|
||||
- `flags`: An array of objects specifying command flags, or special arguments, that will be shown when running `help <command>` Example:
|
||||
- `flags`: An array of objects specifying command flags, or special arguments, that will be shown when running `help <command>` or a slash command. Example:
|
||||
```js
|
||||
static flags = [{
|
||||
name: "argument",
|
||||
description: "Does a thing"
|
||||
type: Constants.ApplicationCommandOptionTypes.STRING, // translates to 3, see https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-option-type
|
||||
description: "Does a thing",
|
||||
...
|
||||
}];
|
||||
```
|
||||
- `slashAllowed`: Specifies whether or not the command is available via slash commands.
|
||||
|
||||
## The `run` Function
|
||||
The main JS code of your command is specified in the `run` function. This function should return a [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) of your command output, which is why the `run` function [is an async function by default](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function). The return value inside the `Promise` should be either a string or an object; you should return a string whenever you intend to reply with plain text, or an object if you intend to reply with something else, such as an embed or attachment.
|
|
@ -2,16 +2,17 @@
|
|||
Here are some instructions for setting up PostgreSQL for use with esmBot.
|
||||
|
||||
**1. Install PostgreSQL.**
|
||||
#### Alpine
|
||||
```sh
|
||||
sudo apk add postgresql
|
||||
```
|
||||
|
||||
#### Debian/Ubuntu
|
||||
```sh
|
||||
sudo apt-get install postgresql postgresql-client
|
||||
```
|
||||
|
||||
#### Alpine
|
||||
```sh
|
||||
doas apk add postgresql
|
||||
```
|
||||
|
||||
#### Arch/Manjaro
|
||||
```sh
|
||||
sudo pacman -S postgresql
|
||||
|
|
|
@ -9,7 +9,7 @@ Recommended system requirements:
|
|||
|
||||
If you want to run the bot on Windows, [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) is recommended. This guide is somewhat Linux-centric, so for now you're mostly on your own if you decide not to use WSL.
|
||||
|
||||
If you have any further questions regarding setup, feel free to ask in the #self-hosting channel on the [esmBot Support server](https://projectlounge.pw/support).
|
||||
If you have any further questions regarding setup, feel free to ask in the #self-hosting-support channel on the [esmBot Support server](https://projectlounge.pw/support).
|
||||
|
||||
## Setup
|
||||
#### 1. Install the required native dependencies.
|
||||
|
@ -202,4 +202,4 @@ Make sure Lavalink is running and started up completely. The bot skips loading s
|
|||
|
||||
***
|
||||
|
||||
If you have any further questions regarding self-hosting, feel free to ask in the #self-hosting channel on the [esmBot Support server](https://projectlounge.pw/support).
|
||||
If you have any further questions regarding self-hosting, feel free to ask in the #self-hosting-support channel on the [esmBot Support server](https://projectlounge.pw/support).
|
Loading…
Add table
Add a link
Reference in a new issue