twitch2ma
Version:
Twitch chat bot that runs commands on the MA GrandMA2 using Telnet.
191 lines (190 loc) • 6.23 kB
JSON
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Config",
"description": "The schema for the config JSON used by twitch2ma",
"definitions": {
"sacn": {
"description": "The sACN configuration for locking commands and parameters.",
"type": "object",
"properties": {
"universe": {
"description": "The sACN universe to listen to.",
"type": "integer",
"minimum": 1,
"maximum": 64000
},
"channel": {
"description": "The sACN channel to listen to.",
"type": "integer",
"minimum": 1,
"maximum": 512
}
},
"additionalProperties": false,
"required": [
"universe",
"channel"
]
}
},
"type": "object",
"properties": {
"timeout": {
"description": "The cooldown time in seconds between the execution of any command (prevents flooding/spamming). Does not apply to moderators and channel owners.",
"type": "integer",
"minimum": 0
},
"ma": {
"description": "GrandMA 2 telnet configuration",
"type": "object",
"properties": {
"host": {
"description": "The IP address of the desk to connect to.",
"type": "string",
"format": "ipv4"
},
"user": {
"description": "The GrandMA 2 user to log in with.",
"type": "string",
"default": "administrator",
"pattern": "^[a-zA-Z0-9]+$"
},
"password": {
"description": "The password for the user defined in 'ma.user'.",
"type": "string",
"default": "admin",
"pattern": "^[a-zA-Z0-9]+$"
}
},
"additionalProperties": false,
"required": [
"host"
]
},
"twitch": {
"description": "The config for the Twitch connection.",
"type": "object",
"properties": {
"clientId": {
"description": "The client ID obtained by Twitch.",
"type": "string",
"pattern": "^[a-zA-Z0-9]+$"
},
"accessToken": {
"description": "The access token obtained by Twitch.",
"type": "string",
"pattern": "^[a-zA-Z0-9]+$"
},
"channel": {
"description": "The Twitch channel the bot connects to.",
"type": "string",
"pattern": "^\\w+$"
}
},
"additionalProperties": false,
"required": [
"clientId",
"accessToken",
"channel"
]
},
"sacn": {
"description": "sACN specific configuration used for sACN locks.",
"type": "object",
"properties": {
"lockMessage": {
"description": "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.",
"type": "string",
"default": "{command} is currently locked! Please wait!"
},
"interface": {
"description": "The IP address of the interface twitch2ma is listening on.",
"type": "string",
"format": "ipv4"
},
"timeout": {
"description": "Time until sACN is considered lost.",
"type": "number",
"minimum": 0.5,
"default": 2.5
}
},
"additionalProperties": false,
"default": {
"lockMessage": "{command} is currently locked! Please wait!",
"timeout": 2.5
}
},
"commands": {
"description": "An array of commands the bot reacts to.",
"type": "array",
"items": {
"type": "object",
"properties": {
"chatCommand": {
"description": "The command viewers need to use in chat without '!'. The command 'lights' is reserved for viewer help. ",
"type": "string",
"pattern": "^((?!\\b[lL][iI][gG][hH][tT][sS]\\b)[a-zA-Z0-9-])+$"
},
"consoleCommand": {
"description": "The command that gets executed on the desk.",
"type": "string"
},
"message": {
"description": "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.",
"type": "string"
},
"help": {
"description": "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.",
"type": "string"
},
"sacn": {
"$ref": "#/definitions/sacn"
},
"parameters": {
"description": "An array of parameters for each command so viewers can call '!<command> <parameter>'.",
"type": "array",
"items": {
"type": "object",
"properties": {
"parameter": {
"description": "The parameter to append to the command.",
"type": "string",
"pattern": "^[a-zA-Z0-9-]+$"
},
"consoleCommand": {
"description": "The command that gets executed on the desk when using the parameter.",
"type": "string"
},
"message": {
"description": "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.",
"type": "string"
},
"sacn": {
"$ref": "#/definitions/sacn"
}
},
"additionalProperties": false,
"required": [
"parameter",
"consoleCommand"
]
},
"minItems": 1
}
},
"additionalProperties": false,
"required": [
"chatCommand"
]
}
}
},
"additionalProperties": false,
"required": [
"timeout",
"ma",
"twitch",
"commands"
]
}