원클릭으로
add-discord
Add Discord bot channel integration to NanoClaw.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Add Discord bot channel integration to NanoClaw.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | add-discord |
| description | Add Discord bot channel integration to NanoClaw. |
This skill adds Discord support to NanoClaw, then walks through interactive setup.
Check if src/channels/discord.ts exists. If it does, skip to Phase 3 (Setup). The code changes are already in place.
Use AskUserQuestion to collect configuration:
AskUserQuestion: Do you have a Discord bot token, or do you need to create one?
If they have one, collect it now. If not, we'll create one in Phase 3.
git remote -v
If discord is missing, add it:
git remote add discord https://github.com/qwibitai/nanoclaw-discord.git
git fetch discord main
git merge discord/main || {
git checkout --theirs package-lock.json
git add package-lock.json
git merge --continue
}
This merges in:
src/channels/discord.ts (DiscordChannel class with self-registration via registerChannel)src/channels/discord.test.ts (unit tests with discord.js mock)import './discord.js' appended to the channel barrel file src/channels/index.tsdiscord.js npm dependency in package.jsonDISCORD_BOT_TOKEN in .env.exampleIf the merge reports conflicts, resolve them by reading the conflicted files and understanding the intent of both sides.
npm install
npm run build
npx vitest run src/channels/discord.test.ts
All tests must pass (including the new Discord tests) and build must be clean before proceeding.
If the user doesn't have a bot token, tell them:
I need you to create a Discord bot:
- Go to the Discord Developer Portal
- Click New Application and give it a name (e.g., "Andy Assistant")
- Go to the Bot tab on the left sidebar
- Click Reset Token to generate a new bot token — copy it immediately (you can only see it once)
- Under Privileged Gateway Intents, enable:
- Message Content Intent (required to read message text)
- Server Members Intent (optional, for member display names)
- Go to OAuth2 > URL Generator:
- Scopes: select
bot- Bot Permissions: select
Send Messages,Read Message History,View Channels- Copy the generated URL and open it in your browser to invite the bot to your server
Wait for the user to provide the token.
Add to .env:
DISCORD_BOT_TOKEN=<their-token>
Channels auto-enable when their credentials are present — no extra configuration needed.
Sync to container environment:
mkdir -p data/env && cp .env data/env/env
The container reads environment from data/env/env, not .env directly.
npm run build
launchctl kickstart -k gui/$(id -u)/com.nanoclaw
Tell the user:
To get the channel ID for registration:
- In Discord, go to User Settings > Advanced > Enable Developer Mode
- Right-click the text channel you want the bot to respond in
- Click Copy Channel ID
The channel ID will be a long number like
1234567890123456.
Wait for the user to provide the channel ID (format: dc:1234567890123456).
The channel ID, name, and folder name are needed. Use npx tsx setup/index.ts --step register with the appropriate flags.
For a main channel (responds to all messages):
npx tsx setup/index.ts --step register -- --jid "dc:<channel-id>" --name "<server-name> #<channel-name>" --folder "discord_main" --trigger "@${ASSISTANT_NAME}" --channel discord --no-trigger-required --is-main
For additional channels (trigger-only):
npx tsx setup/index.ts --step register -- --jid "dc:<channel-id>" --name "<server-name> #<channel-name>" --folder "discord_<channel-name>" --trigger "@${ASSISTANT_NAME}" --channel discord
Tell the user:
Send a message in your registered Discord channel:
- For main channel: Any message works
- For non-main: @mention the bot in Discord
The bot should respond within a few seconds.
tail -f logs/nanoclaw.log
DISCORD_BOT_TOKEN is set in .env AND synced to data/env/envsqlite3 store/messages.db "SELECT * FROM registered_groups WHERE jid LIKE 'dc:%'"launchctl list | grep nanoclawThis is the default behavior for non-main channels (requiresTrigger: true). To change:
requiresTrigger to falseIf the bot connects but can't read messages, ensure:
If you can't copy the channel ID:
The Discord bot supports:
<@botId> → NanoClaw trigger format)Add Ollama MCP server so the container agent can call local models and optionally manage the Ollama model library.
Add Telegram as a channel. Can replace WhatsApp entirely or run alongside it. Also configurable as a control-only channel (triggers actions) or passive channel (receives notifications only).
Convert Claude's Markdown output to each channel's native text syntax before delivery. Adds zero-dependency formatting for WhatsApp, Telegram, and Slack (marker substitution). Also ships a Signal rich-text helper (parseSignalStyles) used by the Signal skill.
X (Twitter) integration for NanoClaw. Post tweets, like, reply, retweet, and quote. Use for setup, testing, or troubleshooting X functionality. Triggers on "setup x", "x integration", "twitter", "post tweet", "tweet".
Add Emacs as a channel. Opens an interactive chat buffer and org-mode integration so you can talk to NanoClaw from within Emacs (Doom, Spacemacs, or vanilla). Uses a local HTTP bridge — no bot token or external service needed.
Add WhatsApp as a channel. Can replace other channels entirely or run alongside them. Uses QR code or pairing code for authentication.