Agent skill
discord-list-channels
List all channels in a Discord guild/server via the Discord API. Use this skill when the user wants to see all channels, find specific channels, or audit server structure.
Install this agent skill to your Project
npx add-skill https://github.com/EvolutionAPI/evo-nexus/tree/main/.claude/skills/discord-list-channels
SKILL.md
Discord List Channels
List all channels in a Discord guild (server) using the Discord API v10. This skill retrieves all channels including text channels, voice channels, categories, announcement channels, and stage channels.
When to Use This Skill
Use this skill when the user wants to:
- List all channels in a Discord server
- Find a specific channel by name
- Get channel IDs for use with other operations
- Audit server channel structure
- Filter channels by type (text, voice, category)
- Export channel list for documentation
Prerequisites
DISCORD_BOT_TOKENenvironment variable must be set- Bot must be a member of the target server
- Bot must have "View Channels" permission (basic permission, usually granted by default)
- Valid Discord guild ID (18-19 digit snowflake ID)
Channel Types
Channels are returned with the following type values:
| Type | Value | Description |
|---|---|---|
| GUILD_TEXT | 0 | Text channel |
| GUILD_VOICE | 2 | Voice channel |
| GUILD_CATEGORY | 4 | Category (organizes channels) |
| GUILD_ANNOUNCEMENT | 5 | Announcement channel |
| GUILD_STAGE_VOICE | 13 | Stage channel |
| GUILD_FORUM | 15 | Forum channel |
Instructions
When the user requests to list Discord channels:
-
Validate Requirements
- Confirm
DISCORD_BOT_TOKENis set in environment - Verify guild ID is provided (18-19 digit number)
- Confirm
-
Make the API Request Use the following curl command structure:
bashcurl -X GET "https://discord.com/api/v10/guilds/{GUILD_ID}/channels" \ -H "Authorization: Bot ${DISCORD_BOT_TOKEN}"Replace
{GUILD_ID}with the actual guild ID. -
Process Response
- Channels are returned as an array
- Each channel includes: id, name, type, position, parent_id, permission_overwrites
- Sort or filter as requested by user
-
Handle Response Codes
- 200 Success: Channels retrieved successfully
- 401 Unauthorized: Invalid bot token
- 403 Forbidden: Bot not in server or missing permissions
- 404 Not Found: Guild doesn't exist
-
Present Results
- Group channels by category if applicable
- Show channel names, types, and IDs
- Format output in a readable structure
- Highlight requested channels if searching
Response Structure
Each channel object contains:
{
"id": "123456789012345678",
"type": 0,
"guild_id": "987654321098765432",
"position": 0,
"permission_overwrites": [],
"name": "general",
"topic": "General discussion",
"nsfw": false,
"last_message_id": "111222333444555666",
"parent_id": null
}
Additional fields for voice channels:
{
"bitrate": 64000,
"user_limit": 0,
"rtc_region": null
}
Filtering Channels
By Type
Filter channels to show only specific types:
# Get all channels then filter by type
curl -s "https://discord.com/api/v10/guilds/{GUILD_ID}/channels" \
-H "Authorization: Bot ${DISCORD_BOT_TOKEN}" | \
jq '.[] | select(.type == 0)' # Text channels only
Type filters:
.type == 0- Text channels.type == 2- Voice channels.type == 4- Categories.type == 5- Announcement channels.type == 13- Stage channels
By Name
Search for channels by name:
# Get channels and search by name
curl -s "https://discord.com/api/v10/guilds/{GUILD_ID}/channels" \
-H "Authorization: Bot ${DISCORD_BOT_TOKEN}" | \
jq '.[] | select(.name | contains("general"))'
By Category
List channels in a specific category:
# Get channels in category with parent_id
curl -s "https://discord.com/api/v10/guilds/{GUILD_ID}/channels" \
-H "Authorization: Bot ${DISCORD_BOT_TOKEN}" | \
jq '.[] | select(.parent_id == "category_id_here")'
Organizing Output
Group by Category
Organize channels by their parent category:
# List all channels grouped by category
CHANNELS=$(curl -s "https://discord.com/api/v10/guilds/{GUILD_ID}/channels" \
-H "Authorization: Bot ${DISCORD_BOT_TOKEN}")
# Get categories
echo "$CHANNELS" | jq -r '.[] | select(.type == 4) | .name + " (ID: " + .id + ")"'
# Get channels in each category
for CATEGORY_ID in $(echo "$CHANNELS" | jq -r '.[] | select(.type == 4) | .id'); do
echo "Channels in category $CATEGORY_ID:"
echo "$CHANNELS" | jq -r ".[] | select(.parent_id == \"$CATEGORY_ID\") | \" - \" + .name"
done
Sort by Position
Channels have a position field for sorting:
curl -s "https://discord.com/api/v10/guilds/{GUILD_ID}/channels" \
-H "Authorization: Bot ${DISCORD_BOT_TOKEN}" | \
jq 'sort_by(.position)'
Output Formats
Simple List
Channels in server 123456789012345678:
- general (text)
- announcements (announcement)
- voice-chat (voice)
- Community (category)
Detailed List
=== Text Channels ===
general (ID: 111222333444555666)
Topic: General discussion
NSFW: No
announcements (ID: 111222333444555667)
Topic: Server updates
NSFW: No
=== Voice Channels ===
voice-chat (ID: 111222333444555668)
User Limit: None
Bitrate: 64kbps
=== Categories ===
Community (ID: 111222333444555669)
Hierarchical List
📁 Community (Category)
💬 general-chat (Text)
💬 help (Text)
🔊 Voice Room 1 (Voice)
📁 Administration (Category)
💬 mod-chat (Text)
💬 admin-only (Text)
💬 welcome (Text) - No category
📢 announcements (Announcement) - No category
CSV Export
Channel ID,Name,Type,Category,Topic
111222333444555666,general,text,Community,General discussion
111222333444555667,voice-chat,voice,Community,
111222333444555668,announcements,announcement,,Server updates
Channel Type Labels
When displaying channels, use these labels:
| Type Value | Display Label | Emoji |
|---|---|---|
| 0 | Text | 💬 |
| 2 | Voice | 🔊 |
| 4 | Category | 📁 |
| 5 | Announcement | 📢 |
| 13 | Stage | 🎙️ |
| 15 | Forum | 💭 |
Error Handling
Common Errors
401 Unauthorized
- Check that
DISCORD_BOT_TOKENis set correctly - Verify token hasn't expired
403 Forbidden
- Bot must be a member of the server
- Bot needs "View Channels" permission
- Check server-level permissions
404 Not Found
- Guild ID is incorrect
- Guild was deleted
- Bot is not in the server
Use Cases
Find Channel by Name
User wants to find a channel ID by its name.
Audit Server Structure
User wants to see all channels organized by category.
Filter by Type
User wants to see only voice channels or only text channels.
Export Channel List
User wants to export all channel names and IDs for documentation.
Check Permissions
User wants to see which channels the bot has access to.
Security Notes
- The bot can only see channels it has permission to view
- Private channels may not appear if bot lacks access
- Permission overwrites don't affect this endpoint's visibility
Performance
- This endpoint returns all channels in one request
- No pagination needed
- Response is typically fast even for large servers
- Consider caching results for frequently accessed servers
Best Practices
- Cache Results - Store channel list if querying frequently
- Filter Client-Side - Get all channels once, then filter in code
- Sort by Position - Respect Discord's channel ordering
- Group by Category - Present channels in their organizational structure
- Show Channel Types - Make it clear which channels are text vs voice
- Include IDs - Always show channel IDs for reference
- Handle Empty Results - Check for servers with no channels (rare but possible)
Examples
See examples.md for detailed usage scenarios.
API Reference
- Endpoint:
GET /guilds/{guild.id}/channels - Discord API Version: v10
- Documentation: https://discord.com/developers/docs/resources/guild#get-guild-channels
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
data-create-viz
Cria visualizações de dados de qualidade profissional com Python no tema Evolution (fundo escuro, acento
cs-customer-escalation
Empacota uma escalação para Devs, Produto ou Davidson com contexto completo. Use quando um bug precisa de atenção além do suporte normal, vários clientes reportam o mesmo problema, um cliente está ameaçando cancelar, ou um problema ficou sem resolução além do SLA. / Package an escalation for engineering, product, or leadership with full context. Use when a bug needs engineering attention beyond normal support, multiple customers report the same issue, a customer is threatening to churn, or an issue has sat unresolved past its SLA.
mkt-draft-content
Draft blog posts, social media, email newsletters, landing pages, press releases, and case studies with channel-specific formatting and SEO recommendations. Use when writing any marketing content, when you need headline or subject line options, or when adapting a message for a specific platform, audience, and brand voice.
gog-tasks
Create, manage, and prioritize tasks and todo items. Convert emails to tasks, set priorities (P0-P3) and categories (Work/Personal/Errands/Admin), review daily priorities, track blocked and overdue tasks. Use when user mentions tasks, todos, action items, or wants to convert emails to tasks. Requires confirmation before creating or deleting tasks.
discord-get-messages
Retrieve messages from Discord channels via the Discord API. Use this skill when the user wants to read, search, or analyze messages from a Discord channel.
cs-customer-research
Pesquisa multi-fonte sobre pergunta ou tópico de cliente com atribuição de fontes. Use quando um cliente pergunta algo que precisa ser verificado, investigando se um bug foi reportado antes, verificando o que foi dito anteriormente a uma conta específica, ou coletando contexto antes de redigir uma resposta. / Multi-source research on a customer question or topic with source attribution. Use when a customer asks something you need to look up, investigating whether a bug has been reported before, checking what was previously told to a specific account, or gathering background before drafting a response.
Didn't find tool you were looking for?