online.timtinkers.bot.command

bot.timtinkers.online

{
  "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
}

Validate Record

Validate a record against online.timtinkers.bot.command

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:xnpibbj2hcqlsodutcnirmxp
CID
bafyreib3oa2zwsqja4sqeg4hfmzydt4fstdr6w7amwft5242hyusjhok4i
Indexed At
2026-05-05 14:40 UTC
AT-URI
at://did:plc:xnpibbj2hcqlsodutcnirmxp/com.atproto.lexicon.schema/online.timtinkers.bot.command

Version History (3 versions)

Lexicon Garden

@