Skip to content

Discord Bots

Every agent that communicates via Discord has a dedicated bot application. This document covers the configuration, permissions, Bitwarden entries, and how to recreate each bot if a token is lost.

Bot Overview

Agent Application Name Bot User ID Mention Public Bot Server
Codi-E Codi-E Agent 1477267530946187305 <@1477267530946187305> No Dashecorp Agents
Pi-E Pi-E Agent 1477270576765735024 <@1477270576765735024> No Dashecorp Agents
Volt-E Volt-E Agent 1477272514332852416 <@1477272514332852416> No Dashecorp Agents
Review-E Review-E Agent 1477785888095473798 <@1477785888095473798> No Dashecorp Agents
iBuild-E iBuild-E Agent 1480845201978163271 <@1480845201978163271> No Dashecorp Agents
iClaw-E iClaw-E Agent 1482352836242051092 <@1482352836242051092> No Dashecorp Agents
ATL-E ATL-E Agent — (webhook only) No Dashecorp Agents

Guild: Dashecorp Agents (1477259107684847708)


Standard Configuration (All Bots)

All bots share the same settings. Only deviate if noted per-agent.

Discord Developer Portal Settings

Setting Value Where
Public Bot Off Bot tab
Presence Intent On Bot tab → Privileged Gateway Intents
Server Members Intent On Bot tab → Privileged Gateway Intents
Message Content Intent On Bot tab → Privileged Gateway Intents
Default Install Settings None Installation tab

Bot Permissions

All bots are invited with Administrator permission (simplest for a closed private server). OAuth2 scope: bot + applications.commands.


Per-Agent Details

Codi-E

Property Value
Application Name Codi-E Agent
Bot User ID 1477267530946187305
Bitwarden Entry Discord Bot Token (Codi-E)
Runtime Claude Code (MacBook Air M4)
Channel #codi-e (1477263450324336705)
Logs Channel
Token used by discord MCP (channel=discord in OpenClaw)

Pi-E

Property Value
Application Name Pi-E Agent
Bot User ID 1477270576765735024
Bitwarden Entry Discord Bot Token (Pi-E)
Runtime OpenClaw in Docker (Pi4-03)
Channel #pi-e (1477263673700651051)
Logs Channel #pi-e-logs (1481788666975092878)
Token used by OpenClaw config on Pi4-03

Volt-E

Property Value
Application Name Volt-E Agent
Bot User ID 1477272514332852416
Bitwarden Entry Discord Bot Token (Volt-E)
Runtime agent-runner (systemd, VPS srv1099021)
Channel #volt-e (1477263777266270300)
Logs Channel #volt-e-logs (1481788607726620753)
Token used by agent-runner .env on VPS

Review-E

Property Value
Application Name Review-E Agent
Bot User ID 1477785888095473798
Bitwarden Entry Discord Bot Token (Review-E)
Runtime agent-runner (Pi4-02)
Channel #review-e (1477787408773943488)
Logs Channel #review-e-logs (1482280608364232828)
Token used by agent-runner .env on Pi4-02

iBuild-E

Property Value
Application Name iBuild-E Agent
Bot User ID 1480845201978163271
Bitwarden Entry Discord Bot Token (iBuild-E)
Runtime Claude Code + LaunchAgent (Mac Mini M4)
Channel #ibuild-e (1478779143914262711)
Logs Channel #ibuild-e-logs (1482368579910238511)
Token used by OpenClaw config on Mac Mini

iClaw-E

Property Value
Application Name iClaw-E Agent
Bot User ID 1482352836242051092
Bitwarden Entry Discord Bot Token (iClaw-E)
Runtime OpenClaw (Mac Mini M4)
Channel #iclaw-e (1482354822492455065)
Logs Channel #iclaw-e-logs (1482354831342567494)
Token used by OpenClaw config on Mac Mini

ATL-E

Property Value
Application Name ATL-E Agent
Bot User ID — (uses webhook, not bot token)
Bitwarden Entry ATL-E Discord Webhook (URL, not bot token)
Runtime Kubernetes CronJob (Dell k3s)
Channel #tasks (1477261755125075969)
Token used by atl-agent-secrets SealedSecret in k8s
Docs https://atl-docs.pages.dev/setup/

ATL-E uses a Discord webhook URL, not a bot token. It does not have a bot application in the Developer Portal. The webhook is stored in Kubernetes as a SealedSecret.


How to Recreate a Bot Token

If a token is lost or compromised:

  1. Go to Discord Developer Portal
  2. Select the application (e.g., "Pi-E Agent")
  3. Bot tab → Reset Token → confirm → copy the new token
  4. Update Bitwarden: open Discord Bot Token (Agent-Name) → edit password field
  5. Update the token on the agent host:

OpenClaw agents (Pi-E, Codi-E, iClaw-E, iBuild-E):

# Edit OpenClaw config
# Find: discord.token (or equivalent)
# Replace with new token
# Restart OpenClaw / Docker container

agent-runner agents (Volt-E, Review-E):

ssh -i ~/.ssh/<key> <user>@<host>
# Edit /etc/agent-runner.env (or the .env file configured in the systemd unit)
# Replace DISCORD_TOKEN=...
sudo systemctl restart agent-runner

  1. Verify bot comes back online: post in the agent's private channel, confirm response.

Creating a New Bot from Scratch

Follow these steps when adding a new agent to the fleet:

  1. Discord Developer PortalNew Application
  2. Name: {Agent-Name} Agent
  3. Installation tab → Default Install Settings → set Install Link to None → Save
  4. Bot tab → uncheck Public Bot → Save
  5. Bot tab → Privileged Gateway Intents → enable all 3 (Presence, Server Members, Message Content) → Save
  6. Bot tab → Reset Token → copy token
  7. Store in Bitwarden: Discord Bot Token ({Agent-Name}), username = Application ID
  8. Note the Application ID from General Information (= Bot User ID, use for mentions)
  9. OAuth2 → URL Generator → check bot + applications.commands → check Administrator → copy URL
  10. Open URL → select Dashecorp Agents → Authorize
  11. In Discord: create #{agent-name} channel + #{agent-name}-logs channel
  12. Enable Developer Mode in Discord → right-click channels → Copy Channel IDs
  13. Add to docs/infrastructure/agents.md (Discord Bot IDs table and Discord Channels table)
  14. Add to this file (Per-Agent Details section)

Troubleshooting

Symptom Likely Cause Fix
Bot offline / not responding Token expired or rotated Reset token, update config, restart agent
Missing Message Content Intent Not enabled in Dev Portal Enable on Bot tab → save → no restart needed
"Used disallowed intents" error Privileged intents not enabled Enable all 3 on Bot tab
Bot not receiving DMs Public Bot is On Turn off Public Bot, reinvite bot
Can't invite to server Install Link not set to None Set to None under Installation tab first
Mentions not working Using name instead of ID Use <@BOT_USER_ID> format