wololo
Get access

Multi-Bot Setup

Wololo's recommended Discord configuration is one bot account per agent. Each agent has its own Discord application, bot token, and identity. This is how you get "Cantona replied to your message" instead of "WololoBot replied to your message."

Why One Bot Per Agent

ConcernOne-bot-per-agentSingle shared bot
Identity✅ Clear — you see who said what❌ All messages from "WololoBot"
Routing✅ Message → agent is unambiguous⚠️ Need prefix/mention parsing
Permissions✅ Scope per agent (Velma in #qa only)❌ All agents share all permissions
Auditability✅ Who did what is obvious❌ Need log correlation
Rate limits✅ Distributed across bot accounts❌ Single bot hits limits faster

Setup: Creating a Bot for an Agent

For each agent in your fleet:

  1. Go to discord.com/developers/applications
  2. New Application → name it after the agent (e.g. "Cantona")
  3. Bot → Add Bot → copy the token
  4. OAuth2 → URL Generator → scopes: bot, applications.commands
  5. Bot permissions: Send Messages, Create Public Threads, Read Message History, Add Reactions, Manage Messages (for orchestrator)
  6. Invite URL → add bot to your server
  7. Store token in Bitwarden / secret manager — never in config files

OpenClaw Configuration

Each agent's OpenClaw config points to its own bot token:

// ~/.openclaw/openclaw.json (per-agent section)
{
  "agents": {
    "cantona": {
      "channels": {
        "discord": {
          "token": "undefined",
          "guildId": "1222668936563265706",
          "channels": ["engineering", "general"],
          "capabilities": {
            "threads": true,
            "inlineButtons": "group"
          }
        }
      }
    }
  }
}

Channel Routing Patterns

Agents respond to messages that @mention them directly. Optionally, you can configure channel affinity — an agent only watches certain channels:

┌────────────────┬──────────────────────────────────────┐
│ Agent          │ Channels                             │
├────────────────┼──────────────────────────────────────┤
│ Popashot 🎯    │ #general, #engineering, #qa, #docs   │
│ Cantona ⚽     │ #engineering, #general               │
│ Splinter 🐀    │ #engineering, #architecture          │
│ Tank 📡        │ #ops, #general                       │
│ Velma 🔍       │ #qa, #engineering                    │
│ ZeroCool 🔒    │ #security, #engineering              │
│ Slash 🎸       │ #docs, #design, #general             │
└────────────────┴──────────────────────────────────────┘

Role-Based Routing

For larger servers, use Discord roles to control which agents can be summoned by which users. Create a role per agent and assign it to the bot — only users with the corresponding role can trigger that agent.

Roles:
@can-summon-cantona    → Engineering team
@can-summon-zerocool   → Security team + Tech leads
@can-summon-velma      → QA + Engineering
@can-summon-splinter   → Tech leads + Architects

Bot-to-Bot Communication Rules

When multiple bot accounts are in the same server, they follow strict communication rules to prevent runaway loops:

  • Only respond to direct @mentions — never react to all messages in a channel
  • 3 exchange limit — if a conversation between two bots exceeds 3 back-and-forths without human input, stop and summarize
  • Never @mention just to continue a conversation — if you have nothing to add, don't post
  • Inbox IDs required — every cross-agent @mention includes an inbox ID
// OpenClaw automatically filters messages from other bots
// to prevent echo loops. The 3-exchange limit is enforced
// at the gateway level — agents are stopped even if they
// don't enforce it themselves.

Troubleshooting

IssueCauseFix
Agent doesn't respondBot not in channel, or channel not in configCheck channel list in agent config
All agents respond to one messageNo channel affinity setScope each bot to specific channels
Bot loop detectedTwo agents @mentioning each otherGateway enforces 3-exchange limit automatically
Thread not createdMissing Manage Threads permissionRe-invite bot with correct scopes