# Config details

Find an example `config.json` [here](../config.json.sample) and an example `config.yml` [here](../config.yml.sample).

| Property                           | Type   | Required | Description                                                                                                                                                                                                       | Default                                       |
|:-----------------------------------|:-------|:---------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:----------------------------------------------|
| `timeout`                          | int    | yes      | The cooldown time in seconds between the execution of any command (prevents flooding/spamming). Does not apply to moderators and channel owners.                                                                  |                                               |
| `ma.host`                          | string | yes      | The IP address of the desk to connect to.                                                                                                                                                                         |                                               |
| `ma.user`                          | string | no       | The GrandMA 2 user to log in with.                                                                                                                                                                                | administrator                                 |
| `ma.password`                      | string | no       | The password for the user defined in `ma.user`.                                                                                                                                                                   | admin                                         |
| `twitch.clientId`                  | string | yes      | The client ID obtained by Twitch.                                                                                                                                                                                 |                                               |
| `twitch.accessToken`               | string | yes      | The access token obtained by Twitch.                                                                                                                                                                              |                                               |
| `twitch.channel`                   | string | yes      | The Twitch channel the bot connects to.                                                                                                                                                                           |                                               |
| `sacn.lockMessage`                 | string | no       | The message to be sent when viewers try to execute a command that is currently locked. `{command}` is replaced by the attempted command and parameter.                                                            | `{command}` is currently locked! Please wait! |
| `sacn.interface`                   | string | no       | The IP address of the interface `twitch2ma` is listening on.                                                                                                                                                      | All interfaces                                |
| `commands`                         | array  | yes      | An array of commands the bot reacts to.                                                                                                                                                                           |                                               |
| `command.chatCommand`              | string | yes      | The command viewers need to use in chat without `!`. The command `lights` is reserved for viewer help.                                                                                                            |                                               |
| `command.consoleCommand`           | string | no       | The command that gets executed on the desk.                                                                                                                                                                       |                                               |
| `command.message`                  | string | no       | A message that is sent to Twitch chat when the command was executed on the desk. `{user}` is replaced by the user who issued the command, `{parameterList}` is replaced by a list of available parameters if any. |                                               |
| `command.help`                     | string | no       | A help message that is sent to Twitch when viewers run the command `!lights !<command>`. `{parameterList}` is replaced by a list of available parameters if any.                                                  |                                               |
| `command.sacn`                     | object | no       | The sACN configuration for locking commands and parameters.                                                                                                                                                       |                                               |
| `command.sacn.universe`            | int    | no*      | The sACN universe to listen to.                                                                                                                                                                                   |                                               |
| `command.sacn.channel`             | int    | no*      | The sACN channel to listen to.                                                                                                                                                                                    |                                               |
| `command.parameters`               | array  | no       | An array of parameters for each command so viewers can call `!<command> <parameter>`.                                                                                                                             |                                               |
| `command.parameter.parameter`      | string | yes      | The parameter to append to the command.                                                                                                                                                                           |                                               |
| `command.parameter.consoleCommand` | string | yes      | The command that gets executed on the desk when using the parameter.                                                                                                                                              |                                               |
| `command.parameter.message`        | string | no       | A message that is sent to Twitch chat when the parameter was executed on the desk. `{user}` gets replaced by the user who issued the command.                                                                     |                                               |
| `command.parameter.sacn`           | object | no       | See `command.sacn`.                                                                                                                                                                                               |                                               |

(*) Required as property of `command.sacn`
