home / skills / lycfyi / community-agent-plugin / discord-sync
This skill automatically detects Discord tokens and permissions to route to the optimal sync connector, ensuring fast, reliable message retrieval.
npx playbooks add skill lycfyi/community-agent-plugin --skill discord-syncReview the files below or copy the command above to add this skill to your agents.
---
name: discord-sync
description: "Smart Discord sync - automatically detects tokens and permissions to choose the optimal sync method. Use when user asks to sync Discord messages."
---
# Discord Sync (Smart Router)
Automatically detects available tokens and bot permissions to route to the optimal sync connector.
## When to Use
- User asks to "sync Discord messages"
- User asks to "pull messages from Discord"
- User wants to "get Discord history"
- User wants to "update Discord data"
- User wants to "download Discord messages"
- User asks to "fetch messages from #channel"
## How It Works
This skill runs a preflight check before syncing:
1. **Token Detection** - Checks which tokens are configured in `.env`
2. **Token Validation** - Verifies tokens are valid by calling Discord API
3. **Permission Check** - For bot token, verifies server access and required permissions
4. **Smart Routing** - Recommends the optimal connector based on results
## Routing Logic
| Scenario | Connector Used | Reason |
|----------|----------------|--------|
| Syncing DMs | `discord-user-connector` | Bots cannot access DMs |
| Bot token valid + has permissions | `discord-bot-connector` | Faster, higher rate limits |
| Bot token valid but lacks permissions | `discord-user-connector` | Fallback |
| Only user token available | `discord-user-connector` | Only option |
| Only bot token available | `discord-bot-connector` | Only option (no DMs) |
| No valid tokens | Error | Configuration needed |
## How to Execute
### Step 1: Run Preflight Check
```bash
# Check for specific server
python ${CLAUDE_PLUGIN_ROOT}/tools/discord_preflight.py --server SERVER_ID
# Check for DM sync
python ${CLAUDE_PLUGIN_ROOT}/tools/discord_preflight.py --dms
# JSON output for programmatic use
python ${CLAUDE_PLUGIN_ROOT}/tools/discord_preflight.py --server SERVER_ID --json
```
### Step 2: Route Based on Result
The preflight check returns a recommendation. Execute the recommended skill:
**If recommendation is `discord-bot-connector:discord-sync`:**
```
Skill(skill: "discord-bot-connector:discord-sync")
```
**If recommendation is `discord-user-connector:discord-sync`:**
```
Skill(skill: "discord-user-connector:discord-sync")
```
## Example Preflight Output
```
==================================================
Discord Sync Preflight Check
==================================================
Token Status:
User Token: valid
Bot Token: valid
Bot Permissions:
Server: My Community Server
Has Access: Yes
View Channels: Yes
Read History: Yes
Recommendation:
Use: discord-bot-connector:discord-sync
Reason: Bot has access to My Community Server with required permissions (faster sync)
```
## Preflight JSON Output
```json
{
"user_token": {"configured": true, "valid": true, "error": null},
"bot_token": {"configured": true, "valid": true, "error": null},
"bot_permissions": {
"server_id": "123456789",
"server_name": "My Community Server",
"has_access": true,
"can_view_channels": true,
"can_read_history": true,
"error": null
},
"wants_dms": false,
"recommendation": "discord-bot-connector:discord-sync",
"reason": "Bot has access to My Community Server with required permissions (faster sync)"
}
```
## Smart Defaults
When user is vague, use these defaults:
| User Says | Action |
|-----------|--------|
| "sync discord" | Run preflight with default server from config |
| "sync my DMs" | Run preflight with `--dms` flag |
| "sync [server name]" | Find server ID, run preflight, then sync |
## Prerequisites
- `.env` file with at least one Discord token:
- `DISCORD_USER_TOKEN` - For user token sync (servers + DMs)
- `DISCORD_BOT_TOKEN` - For bot token sync (servers only, faster)
- `aiohttp` library installed for API calls
## Connector Comparison
| Feature | Bot Connector | User Connector |
|---------|---------------|----------------|
| Rate Limits | Higher (official API) | Lower |
| Server Messages | Yes | Yes |
| DM Access | No | Yes |
| Rich Profiles | No | Yes |
| ToS Compliant | Yes | Gray area |
## Troubleshooting
**Bot token valid but "lacks permissions":**
- Ensure bot has "Read Message History" permission in Discord
- Check if bot role is above restricted channels
- Try re-inviting bot with correct permissions
**User token invalid:**
- Token may have expired - get a new one
- Ensure token is copied correctly (no extra spaces)
**No tokens configured:**
- Create `.env` file in project root
- Add `DISCORD_USER_TOKEN=your_token` or `DISCORD_BOT_TOKEN=your_token`
This skill automatically detects configured Discord tokens and bot permissions, then chooses the optimal sync connector to pull message history. It performs a preflight check and returns a clear recommendation so the system uses the fastest, most-permissible method available. Use it whenever someone asks to sync or fetch Discord messages.
The skill inspects environment tokens, validates them against the Discord API, and checks bot permissions for the target server or DMs. Based on token validity and permission results it routes to either a bot-based connector (higher rate limits, servers only) or a user-based connector (servers + DMs). It can output human-readable or machine-friendly JSON recommendations.
What happens if no valid tokens are found?
The preflight returns an error recommendation and explains which tokens are missing or invalid so you can update the .env configuration.
Can the bot connector access DMs?
No. Bot connectors cannot access DMs. The skill will recommend the user connector when DMs are requested.