# Configuration

This page will go over all of the configuration options for the Pterodactyl cog.  
All of the commands below can be accessed through `[p]pterodactyl config`.

## `api`

This option determines which [PlayerDB](https://playerdb.co/) endpoint the cog will use to retrieve player avatars.  
This is only used for webhook avatars in the chat integration system. You should probably leave this as default.

Default value: `minecraft`

## `chat`

### `channel`

This option determines what channel chat messages will be sent to. If this is unset, the chat integration won't work.
**Make sure the bot has permissions to speak in this channel!**

Default value: `None`

### `command`

This option determines what command will be sent to the server whenever a message is sent in the configured chat channel. The JSON format Minecraft uses for this is very janky sometimes, if you need help with changing the command, you can join my [Discord server](https://discord.gg/eMUMe77Yb8).

Available placeholders:

- `.$C` - replaced with hex color of the author's top colored role
- `.$D` - replaced with the author's discriminator (will usually be 0, you shouldn't use this)
- `.$I` - replaced with the author's ID
- `.$M` - replaced with message content
- `.$N` - replaced with author's display name (or guild nickname, if set)
- `.$U` - replaced with the author's username (NOT display name, you should usually use `.$N`)
- `.$V` - replaced with the configured invite link

Default value:

```json
tellraw @a ["",{"text":".$N ","color":".$C","insertion":"<@.$I>","hoverEvent":{"action":"show_text","contents":"Shift click to mention this user inside Discord"}},{"text":"(DISCORD):","color":"blue","clickEvent":{"action":"open_url","value":".$V"},"hoverEvent":{"action":"show_text","contents":"Click to join the Discord Server"}},{"text":" .$M","color":"white"}]
```

## `console`

### `channel`

/// admonition | Only give access to the console channel to people you trust!
    type: danger
If a user account has access to the console channel, they can execute ***any*** command on your server, including some power actions.
They will also be able to see potentially sensitive information, such as player IPs, if [IP Masking](configuration.md#ip) is disabled.
///

This option determines what channel console logs will be sent to. If this is unset, the console integration won't work.  
**Make sure the bot has permissions to speak in this channel!**  
Server status changes, Discord --> Minecraft chat messages, and command executions will all be logged here.

/// admonition
    type: info
Please note that, in order to avoid Discord ratelimits, logs will not be posted when the server status is one of the following:

- `starting`
- `stopping`

This is to prevent the console channel from flooding and getting backed up by Discord's message ratelimits.
///

Default value: `None`

### `commands`

/// admonition | This has no effect on the `[p]pterodactyl command` text command, or the matching slash command.
    type: danger
If you want to disable the ability to execute commands on the server through Discord, use the following commands:  
`[p]pterodactyl config console commands False` - this command  
`[p]command disable pterodactyl command` - disables the text command that lets you execute commands on the server  
`[p]slash disable pterodactyl` - due to how slash commands are laid out, this is the only way to disable the ability to execute commands on the server  
`[p]slash sync` - apply above slash command change
///

This option determines if commands sent to the console channel will be sent to the Pterodactyl console.

Default value: `False`

## `invite`

This option determines what url the chat command will substitute in for the Discord invite placeholder.

Default value: `None`

## `ip`

This option determines whether or not IP's will be redacted when posted in chat or to the console channel.

Default value: `True`

## `messages`

### `join`

This option determines what the description in embeds will be when a user joins the server. Has no effect if embeds aren't used.

Default value: `Welcome to the server! 👋`

### `leave`

This option determines what the description in embeds will be when a user leaves the server. Has no effect if embeds aren't used.

Default value: `Goodbye! 👋`

### `shutdown`

This option determines what the bot will send in the chat channel when the server stops.

Default value: `Server stopped!`

### `startup`

This option determines what the bot will send in the chat channel when the server is started.

Default value: `Server started!`

## `regex`

If you're not running on recent versions of Paper, which this cog was developed against, or you're otherwise changing for format of chat messages, you'll need to add custom regex through the `[p]pterodactyl config regex` command. Same thing applies if any other type of message isn't being detected. I recomend using ChatGPT or something similar for this, or if you need help, you can join my [Discord server](https://discord.gg/eMUMe77Yb8).  
See [Regex Examples](regex.md) for default values.

### `blacklist`

This group of commands allows you to add regex patterns that will be ignored by the console logger. The intended use for this is if you're getting ratelimited by messages that flood the console after the server sets its status to `running` but before it actually finishes starting.

### `achievement`

This regex pattern is used to detect advacnements/challenges. The default should work for most Minecraft servers.

### `chat`

This regex pattern is used to detect chat messages. You will probably have to change this if you're using any plugins or mods that use custom chat formatting, like EssentialsX Chat or Styled Chat.

### `join`

This regex pattern is used to detect whenever a user joins the server. You shouldn't usually need to change this.

### `leave`

This regex pattern is used to detect whenever a user leaves the server. You shouldn't usually need to change this.

### `server`

This regex pattern is used to detect whenever a server message is sent. You will have to change this if you aren't running on Paper, most likely.

## `serverid`

This option determines which server's websocket to connect to. See [Getting Started](getting-started.md#getting-server-information) for more information on this.

Default value: `None`

## `topic`

### `host`

This option determines the hostname of your server that will be used to retrieve server information.

### `port`

This option determines the port of your server that will be used to retrieve server information.

Default value: `25565`

### `text`

This option determines what the channel topic will be set to.

Available placeholders:

- `.$H` - replaced with the server's hostname
- `.$O` - replaced with the server's port

Available with a Minecraft server:

- `.$I` - replaced with the server's ip address
- `.$M` - replaced with maximum player count
- `.$P` - replaced with current online player count
- `.$V` - replaced with the server's current version
- `.$D` - replaced with the server's description / message of the day

Default value:

```
Server IP: .$H\nServer Players: .$P/.$M
```

## `url`

This option determines what panel the cog will send requests to. See [Getting Started](getting-started.md#getting-server-information) for more information on this.

Default value: `None`

## `view`

Lists all of the configuration options offered by the cog.
