Skip to content

What Are Bots?

Automated users that interact with spaces, channels, and members via the Argon Bot API.

Overview #

Bots are special Argon accounts controlled by code instead of a human. They can send messages, moderate channels, stream audio, respond to slash commands, and react to real-time events — all through a simple REST + SSE API.

Every bot has a linked user account (with a bot username suffix) and appears in member lists like any other user. Under the hood, bot requests are authenticated with a secret token and processed through the same permission system as regular users.

Architecture #

Your Bot Any language/runtime
REST API Authenticated requests
SSE Events Real-time stream
Spaces & Channels Users see bot actions

REST API — Send messages, manage channels, query members, register commands. All endpoints require Authorization: Bot <token>.

SSE Stream — Open a single persistent connection to receive events in real time. Filter events by intent bitmask. Automatically replay missed events on reconnection.

Voice WebSocket — Stream Opus audio directly to voice channels via a WebSocket ingress endpoint. No WebRTC needed.

Bot vs. User #

Feature Bot User
Authentication Token (secret string) JWT (login session)
Username Ends with _bot Free choice
Rate limits Per-interface token buckets Standard user limits
Real-time events SSE with intent filtering Ion RPC (binary)
Voice WebSocket audio ingress WebRTC (browser/app)
Slash commands Register and handle Invoke only

User Flags #

Every user object in the Bot API includes a flags bitmask field. Use bitwise AND to check for specific flags.

Flag Value Description
BOT 1 << 0 Account is a bot
SYSTEM 1 << 1 Official system account
VERIFIED 1 << 2 Bot or user has been verified by the Argon team
PREMIUM 1 << 3 User has an active premium subscription
BANNED 1 << 4 Account is under a platform lockdown
DELETED 1 << 5 Account has been deleted

About System Account

The SYSTEM user always has a fixed ID: 11111111-2222-1111-2222-111111111111.

Checking flags
// Example: check if a user is a verified bot
const isBot      = (user.flags & 1) !== 0;
const isVerified = (user.flags & 4) !== 0;

if (isBot && isVerified) {
  // Verified bot
}

Slash Commands #

Bots can register slash commands that users invoke via the / prefix in any text channel. Commands are registered through the ICommands/v1 interface and interactions are delivered as CommandInteraction SSE events.

Constraint Limit
Command name length 1–32 characters
Command description length 1–100 characters
Max commands per app per space 50
Command name format Lowercase only, auto-normalized via toLowerInvariant()
Scope Per-space (set spaceId) or global (omit it)

Option Types

Each command can accept typed options:

Type Description
String Free text input
Integer Whole number
Number Floating-point number
Boolean True / false toggle
User User picker
Channel Channel picker
Role Archetype (role) picker
Register a command
POST /ICommands/v1/Register
{
  "spaceId":     "...",
  "name":        "play",
  "description": "Play a song by URL or search query",
  "options": [
    {
      "name":        "query",
      "description": "Song URL or search term",
      "type":        "String",
      "required":    true
    }
  ]
}

Bot Lifecycle #

  1. 1

    Create

    Register a bot application at console.argon.gl. Get your bot token.

  2. 2

    Install

    Add the bot to a space. The bot appears as a member and receives a botInstallingToSpace event. When removed, it receives botUninstallingFromSpace. These lifecycle events are always delivered regardless of intents.

  3. 3

    Connect

    Open an SSE stream with your desired intents. Receive a Ready event with your active spaces.

  4. 4

    React

    Handle incoming events (messages, commands, member changes) and respond via REST API calls.

  5. 5

    Scale

    Apply for verification to unlock privileged intents, higher rate limits, and advanced APIs like voice egress and calls.

Verified Bots #

Verified bots have been reviewed by the Argon team and gain access to:

  • Privileged intents — Members, Presence, and other sensitive event categories
  • Higher rate limits — Increased token buckets for all interfaces
  • Voice egress — Listen to individual audio tracks from voice channels
  • Calls API — Accept incoming calls from users
  • Verified badge — Displayed next to the bot name in member lists

Apply for verification through the Developer Console.