{
"id": "online.timtinkers.bot.command",
"defs": {
"vip": {
"type": "token",
"description": "A VIP viewer"
},
"main": {
"key": "tid",
"type": "record",
"record": {
"type": "object",
"required": [
"trigger",
"response",
"createdAt"
],
"properties": {
"hidden": {
"type": "boolean",
"description": "Whether the command is hidden from the !commands list"
},
"isReply": {
"type": "boolean",
"description": "Whether the bot should reply to the triggering message rather than posting standalone"
},
"trigger": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "The command trigger without prefix (e.g., 'socials', 'hug', 'd6')"
},
"response": {
"type": "string",
"description": "Response text supporting variable substitution ($user, $target, $arg[n], $randomNumber[min,max], etc.). Length is validated at runtime after substitution."
},
"createdAt": {
"type": "string",
"format": "datetime"
},
"description": {
"type": "string",
"maxLength": 300,
"description": "Optional help text describing what the command does"
},
"permissions": {
"type": "array",
"items": {
"ref": "#permissionLevel",
"type": "ref"
},
"maxLength": 10,
"description": "Roles that are allowed to use this command. If omitted, the command is available to everyone."
},
"userCooldown": {
"type": "integer",
"minimum": 0,
"description": "Per-user cooldown in seconds. 0 means no cooldown."
},
"globalCooldown": {
"type": "integer",
"minimum": 0,
"description": "Global cooldown in seconds shared across all users. 0 means no cooldown."
}
}
},
"description": "Record representing a chat bot command. The response field supports variable substitution (e.g. $user, $target, $randomNumber[min,max]) which is resolved at runtime."
},
"default": {
"type": "token",
"description": "Any viewer (default permission level)"
},
"streamer": {
"type": "token",
"description": "The channel owner / streamer"
},
"moderator": {
"type": "token",
"description": "A channel moderator"
},
"permissionLevel": {
"type": "string",
"knownValues": [
"online.timtinkers.bot.command#streamer",
"online.timtinkers.bot.command#moderator",
"online.timtinkers.bot.command#vip",
"online.timtinkers.bot.command#default"
]
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}