# Discord Setup Guide This guide walks you through connecting **cc-connect** to Discord, so you can chat with your local Claude Code via a Discord bot. ## Prerequisites - A Discord account - A machine that can run cc-connect (no public IP needed) - Claude Code installed and configured > 💡 **Advantage**: Uses Gateway (WebSocket) — no public IP, no domain, no reverse proxy needed. --- ## Step 1: Create a Discord Application ### 1.1 Open the Developer Portal Go to [Discord Developer Portal](https://discord.com/developers/applications) and sign in. ### 1.2 Create a New Application 1. Click "New Application" in the top right 2. Enter an application name (e.g. `cc-connect`) 3. Agree to the Terms of Service 4. Click "Create" --- ## Step 2: Create a Bot User ### 2.1 Go to Bot Settings In the left sidebar, click "Bot". ### 2.2 Add a Bot 1. Click "Add Bot" 2. Confirm the action ### 2.3 Configure Bot Info | Field | Suggested Value | |-------|----------------| | Username | `cc-connect` | | Avatar | Upload an icon you like | --- ## Step 3: Get the Bot Token ### 3.1 Generate Token On the Bot page: 1. Click "Reset Token" 2. You may need to enter a 2FA code 3. Click "Copy" to copy the token > ⚠️ The token is only shown once — save it immediately! Format: `MTk4NjIyNDgzNDcOTY3NDUxMg.G8vKqh.xxx...` ### 3.2 Lost Your Token? Click "Reset Token" at any time to regenerate. The old token will be invalidated immediately. --- ## Step 4: Configure Privileged Intents (Important!) ### 4.1 What Are Intents? Intents control which events your bot can receive from Discord's Gateway. ### 4.2 Enable Required Intents On the Bot page, under "Privileged Gateway Intents", enable: | Intent | Purpose | Required? | |--------|---------|-----------| | **Message Content Intent** | Read message content | ✅ **Required** | | Presence Intent | Read user status | Optional | | Server Members Intent | Read server members | Optional | > ⚠️ **You must enable Message Content Intent**, or the bot won't be able to read messages! ### 4.3 Save Changes Click "Save Changes". --- ## Step 5: Configure cc-connect Add the token to your `config.toml`: ```toml [[projects]] name = "my-project" [projects.agent] type = "claudecode" [projects.agent.options] work_dir = "/path/to/your/project" mode = "default" [[projects.platforms]] type = "discord" [projects.platforms.options] token = "MTk4NjIyNDgzNDcOTY3NDUxMg.G8vKqh.xxx..." # thread_isolation = true # Optional: isolate each agent session in its own Discord thread # progress_style = "legacy" # Optional: legacy | compact | card ``` > cc-connect automatically configures the required Intents (MESSAGE_CONTENT, GUILD_MESSAGES, DIRECT_MESSAGES). > With `thread_isolation = true`, cc-connect creates or reuses a Discord thread for each session and routes follow-up messages by thread channel ID. > `progress_style = "compact"` merges thinking/tool updates into one editable message; `progress_style = "card"` renders a Discord-native embed progress card and still sends the final answer as a normal message. --- ## Step 6: Generate an Invite Link ### 6.1 Go to OAuth2 Settings In the left sidebar, click "OAuth2" → "URL Generator". ### 6.2 Select Scopes Under "Scopes", check: - ✅ `bot` ### 6.3 Select Permissions Under "Bot Permissions", check: | Permission | Purpose | |------------|---------| | Read Messages/View Channels | Read messages | | Send Messages | Send messages | | Create Public Threads | Create a new thread for a fresh agent session | | Send Messages in Threads | Send messages in threads | | Read Message History | Read message history | ### 6.4 Copy the Link 1. The invite link will be generated at the bottom of the page 2. Click "Copy" --- ## Step 7: Invite the Bot to Your Server ### 7.1 Open the Invite Link Open the copied URL in your browser and sign in to Discord. ### 7.2 Select a Server Choose the server you want to add the bot to from the dropdown. ### 7.3 Authorize Review the permissions and click "Authorize". Complete the CAPTCHA if prompted. --- ## Step 8: Start cc-connect ### 8.1 Launch ```bash cc-connect # Or specify a config file cc-connect -config /path/to/config.toml ``` ### 8.2 Verify Connection You should see logs like: ``` level=INFO msg="discord: connected" bot=cc-connect#0000 level=INFO msg="platform started" project=my-project platform=discord level=INFO msg="cc-connect is running" projects=1 ``` --- ## Step 9: Start Chatting ### 9.1 Channel Usage Send a message in any channel where the bot has permissions. ### 9.2 Direct Message 1. Click the bot's avatar 2. Send a DM --- ## Usage Example ``` User: Help me analyze the current project structure cc-connect: 🤔 Thinking... cc-connect: 🔧 Tool: Bash(ls -la) cc-connect: Here's the project structure... ``` If you enable `progress_style = "card"`, Discord shows one editable progress embed during the turn, then the final answer arrives as a separate normal message. This reduces channel noise compared with the legacy multi-message flow. --- ## Architecture ``` ┌─────────────────────────────────────────────────────────────┐ │ Discord Cloud │ │ │ │ User Message ──→ Discord Gateway ◄── WebSocket │ │ │ │ └─────────────────────────┼────────────────────────────────────┘ │ │ WebSocket (no public IP needed) ▼ ┌─────────────────────────────────────────────────────────────┐ │ Your Local Machine │ │ │ │ cc-connect ◄──► Claude Code CLI ◄──► Your Project Code │ │ │ └─────────────────────────────────────────────────────────────┘ ``` --- ## Discord Gateway Features | Feature | Details | |---------|---------| | **Connection** | WebSocket | | **Public IP** | ❌ Not needed | | **Heartbeat** | Automatic keepalive | | **Reconnection** | Automatic on disconnect | | **Intents** | Must declare required event types | | **Message limit** | 2000 characters per message (auto-split by cc-connect) | | **Markdown** | Full native support | --- ## FAQ ### Q: Bot can't read message content? **Most common issue**: Message Content Intent is not enabled! Fix: 1. Go to Discord Developer Portal 2. Select your app → Bot 3. Enable "Message Content Intent" 4. Save changes 5. Restart cc-connect ### Q: Bot connects then immediately disconnects? Check: 1. Is the bot token correct? 2. Are intents configured properly? 3. Are you hitting Discord rate limits? (from frequent reconnects) ### Q: Bot doesn't appear in the server? 1. Make sure you used the invite link to add the bot 2. Check if the bot was kicked from the server ### Q: How to regenerate the token? 1. Go to Discord Developer Portal 2. Select your app → Bot 3. Click "Reset Token" 4. Update your config.toml ### Q: Bot has insufficient permissions? 1. Generate a new invite link with the correct permissions 2. Re-invite the bot to the server --- ## References - [Discord Developer Portal](https://discord.com/developers/applications) - [Discord API Documentation](https://discord.com/developers/docs/intro) - [Bot Getting Started Guide](https://discord.com/developers/docs/getting-started) - [Gateway Intents](https://discord.com/developers/docs/topics/gateway#privileged-intents) - [OAuth2 Scopes](https://discord.com/developers/docs/topics/oauth2#shared-resources-oauth2-scopes) --- ## See Also - [Feishu Setup](./feishu.md) - [DingTalk Setup](./dingtalk.md) - [Weibo Setup](./weibo.md) - [Telegram Setup](./telegram.md) - [Slack Setup](./slack.md) - [Back to README](../README.md)