Each skill now: - Pre-flight: checks for file present + import line + dep listed (idempotent) - git fetch origin channels - git show origin/channels:<paths> > <paths> to copy adapter (and helpers/tests/setup-step where applicable) - Append `import './<chan>.js';` to src/channels/index.ts - pnpm install <pkg>@<pinned-version> - pnpm run build Telegram additionally copies 4 helper/test files + setup/pair-telegram.ts and registers `'pair-telegram':` in setup/index.ts STEPS. WhatsApp (native) additionally copies setup/whatsapp-auth.ts and registers `'whatsapp-auth':` in setup/index.ts STEPS, installs @whiskeysockets/baileys + qrcode + @types/qrcode pinned. All credential / next-steps / channel-info / troubleshooting sections preserved verbatim. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.2 KiB
3.2 KiB
name, description
| name | description |
|---|---|
| add-discord-v2 | Add Discord bot channel integration to NanoClaw v2 via Chat SDK. |
Add Discord Channel
Adds Discord bot support to NanoClaw v2. Discord is built in — no adapter package to install.
Install
v2 trunk doesn't ship channels. This skill copies the Discord adapter in from the channels branch.
Pre-flight (idempotent)
Skip to Credentials if all of these are already in place:
src/channels/discord.tsexistssrc/channels/index.tscontainsimport './discord.js';@chat-adapter/discordis listed inpackage.jsondependencies
Otherwise continue. Every step below is safe to re-run.
1. Fetch the channels branch
git fetch origin channels
2. Copy the adapter
git show origin/channels:src/channels/discord.ts > src/channels/discord.ts
3. Append the self-registration import
Append to src/channels/index.ts (skip if the line is already present):
import './discord.js';
4. Install the adapter package (pinned)
pnpm install @chat-adapter/discord@4.26.0
5. Build
pnpm run build
Credentials
Create Discord Bot
- Go to the Discord Developer Portal
- Click New Application and give it a name (e.g., "NanoClaw Assistant")
- From the General Information tab, copy the Application ID and Public Key
- Go to the Bot tab and click Add Bot if needed
- Copy the Bot Token (click Reset Token if you need a new one — you can only see it once)
- Under Privileged Gateway Intents, enable Message Content Intent
- Go to OAuth2 > URL Generator:
- Scopes: select
bot - Bot Permissions: select
Send Messages,Read Message History,Add Reactions,Attach Files,Use Slash Commands
- Scopes: select
- Copy the generated URL and open it in your browser to invite the bot to your server
Configure environment
All three values are required — the adapter will fail to start without DISCORD_PUBLIC_KEY and DISCORD_APPLICATION_ID.
Add to .env:
DISCORD_BOT_TOKEN=your-bot-token
DISCORD_APPLICATION_ID=your-application-id
DISCORD_PUBLIC_KEY=your-public-key
Sync to container: mkdir -p data/env && cp .env data/env/env
Next Steps
If you're in the middle of /setup, return to the setup flow now.
Otherwise, run /manage-channels to wire this channel to an agent group.
Channel Info
- type:
discord - terminology: Discord has "servers" (also called "guilds") containing "channels." Text channels start with #. The bot can also receive direct messages.
- how-to-find-id: Enable Developer Mode in Discord (Settings > App Settings > Advanced > Developer Mode). Then right-click a server and select "Copy Server ID" for the guild ID, and right-click the text channel and select "Copy Channel ID." The platform ID format used in registration is
discord:{guildId}:{channelId}— both IDs are required. - supports-threads: yes
- typical-use: Interactive chat — server channels or direct messages
- default-isolation: Same agent group for your personal server. Separate agent group for servers with different communities or where different members have different information boundaries.