Skip to main content
skill CX Codex

discord-bot · claude-office-skills — Claude Code skill: what it does, how to install

Guides Discord bot work for moderation, notifications, and community features. Use it when planning commands, roles, tickets, or AI-assisted bot behaviour.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add claude-office-skills/skills --skill discord-bot -a claude-code
Open on GitHub

What discord-bot does

This skill covers Discord bot setup, application creation, bot configuration, and slash commands. It includes patterns for /help, /ping, /poll, and /remind, plus welcome flows, reaction roles, and ticket channels.

Its moderation section defines responses to repeated messages, mass mentions, unwanted links, and raid activity. It also outlines warnings, timeouts, bans, and moderation logs. Check MODERATE_MEMBERS and BAN_MEMBERS first, because those permissions control the moderation commands.

The skill also describes n8n notification workflows for GitHub releases, Twitch streams, and YouTube videos. It names discord-mcp for sending messages, creating channels, and managing roles, alongside AI bot features triggered by mentions or direct messages.

What it helps with

  • set up a Discord application and bot invite
  • add slash commands for polls and reminders
  • moderate repeated messages and link spam
  • assign roles from message reactions
  • post GitHub release notifications through n8n

Example prompts for the agent

  • “Set up a Discord bot with /poll and /remind commands.”
  • “Add auto-moderation for spam, mass mentions, and link filtering.”
  • “Create a ticket flow that makes ticket-{user}-{number} channels.”

How to install discord-bot

1Skills CLI (Vercel)

npx skills add claude-office-skills/skills --skill discord-bot -a claude-code

2Manually: put the files in place

~/.claude/skills/discord-bot/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/discord-bot/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about discord-bot

How do I install discord-bot in Claude Code?

Run npx skills add claude-office-skills/skills --skill discord-bot -a claude-code, then run npx skills add claude-office-skills/skills --skill discord-bot -a claude-code again. The skill file is at ~/.claude/skills/discord-bot/SKILL.md.

What does the discord-bot skill do?

It provides bot development patterns for slash commands, moderation, community roles, tickets, and notifications. It also covers AI features and Discord operations through discord-mcp.

Which permissions do moderation commands require?

/warn, /timeout, and /warnings use MODERATE_MEMBERS. /ban requires BAN_MEMBERS.

Source text

SKILL.md · MIT
---
name: discord-bot
description: "Discord bot development - community management, moderation, notifications, and AI integration"
version: "1.0.0"
author: claude-office-skills
license: MIT

category: messaging
tags:
  - discord
  - bot
  - community
  - moderation
  - automation
department: Engineering

models:
  recommended:
    - claude-sonnet-4

mcp:
  server: discord-mcp
  tools:
    - discord_send_message
    - discord_create_channel
    - discord_manage_roles

capabilities:
  - bot_development
  - community_management
  - moderation
  - notification_system
  - ai_integration

languages:
  - en
  - zh

related_skills:
  - telegram-bot
  - slack-workflows
  - ai-agent-builder
---

# Discord Bot

Build Discord bots for community management, moderation, notifications, and AI integration. Based on n8n's Discord workflow templates.

## Overview

This skill covers:
- Bot setup and configuration
- Slash commands and interactions
- Moderation automation
- Notification workflows
- AI-powered features

---

## Bot Setup

### Creating a Discord Bot

```yaml
setup_steps:
  1. create_application:
      url: https://discord.com/developers/applications
      action: "New Application"
      
  2. create_bot:
      section: "Bot"
      action: "Add Bot"
      copy: token
      
  3. configure_intents:
      enable:
        - PRESENCE_INTENT
        - SERVER_MEMBERS_INTENT
        - MESSAGE_CONTENT_INTENT
        
  4. invite_bot:
      section: "OAuth2 > URL Generator"
      scopes: [bot, applications.commands]
      permissions: [based_on_needs]
      generate: invite_link
```

### Slash Commands

```yaml
slash_commands:
  - name: help
    description: "Show bot help"
    
  - name: ping
    description: "Check bot latency"
    
  - name: poll
    description: "Create a poll"
    options:
      - name: question
        type: STRING
        required: true
      - name: options
        type: STRING
        required: true
        
  - name: remind
    description: "Set a reminder"
    options:
      - name: time
        type: STRING
        required: true
      - name: message
        type: STRING
        required: true
```

---

## Moderation Bot

### Auto-Moderation

```yaml
auto_moderation:
  spam_detection:
    triggers:
      - repeated_messages: 5_in_10_seconds
      - mass_mentions: more_than_5
      - link_spam: multiple_links_no_text
    actions:
      - delete_messages
      - timeout: 5_minutes
      - log_to_mod_channel
      
  word_filter:
    blocked_words: [list_of_words]
    action:
      - delete_message
      - warn_user
      
  link_filter:
    allowed_domains: [youtube.com, github.com]
    action: delete_if_not_allowed
    
  raid_protection:
    triggers:
      - join_rate: 10_per_minute
    actions:
      - enable_verification
      - notify_mods
      - slow_mode: enable
```

### Moderation Commands

```yaml
mod_commands:
  /warn:
    permission: MODERATE_MEMBERS
    action: |
      1. Record warning
      2. DM user with reason
      3. Log to mod channel
      
  /timeout:
    permission: MODERATE_MEMBERS
    options: [user, duration, reason]
    action: |
      1. Apply timeout
      2. DM user
      3. Log action
      
  /ban:
    permission: BAN_MEMBERS
    options: [user, reason, delete_messages]
    action: |
      1. Ban user
      2. Log to mod channel
      3. Optional: post to #bans
      
  /warnings:
    permission: MODERATE_MEMBERS
    action: show_user_warning_history
```

---

## Community Features

### Welcome System

```yaml
welcome_system:
  on_member_join:
    actions:
      - assign_role: "New Member"
      - send_dm:
          template: |
            👋 Welcome to {server_name}!
            
            Here's how to get started:
            1. Read #rules
            2. Grab roles in #roles
            3. Introduce yourself in #introductions
            
            Need help? Ask in #support
            
      - post_welcome:
          channel: "#welcome"
          template: |
            🎉 Welcome {user_mention} to the server!
            
            They are member #{member_count}
            
  on_member_leave:
    channel: "#logs"
    template: "{user} left the server. Duration: {time_since_join}"
```

### Role Management

```yaml
reaction_roles:
  channel: "#roles"
  message: |
    React to get roles:
    
    🎮 - Gamer
    💻 - Developer
    🎨 - Artist
    📚 - Student
    
  mappings:
    "🎮": role_id_gamer
    "💻": role_id_developer
    "🎨": role_id_artist
    "📚": role_id_student
    
level_roles:
  system: xp_based
  roles:
    - level: 5
      role: "Active Member"
    - level: 10
      role: "Regular"
    - level: 25
      role: "Veteran"
    - level: 50
      role: "Legend"
```

### Ticket System

```yaml
ticket_system:
  create_ticket:
    trigger: button_click OR /ticket
    action:
      - create_channel: "ticket-{user}-{number}"
      - set_permissions: [user, support_team]
      - send_initial_message:
          template: |
            🎫 **Support Ticket**
            
            User: {user_mention}
            Created: {timestamp}
            
            Please describe your issue and a team member will assist you shortly.
            
            React with ✅ to close this ticket.
            
  close_ticket:
    trigger: reaction OR /close
    action:
      - save_transcript: to_logs_channel
      - delete_channel: after_5_seconds
      - dm_user: transcript_link
```

---

## Notification Workflows

### n8n Integration

```yaml
workflow: "Discord Notifications"

triggers:
  github_release:
    action:
      channel: "#releases"
      embed:
        title: "🚀 New Release: {version}"
        description: "{release_notes}"
        color: 0x00ff00
        fields:
          - name: "Download"
            value: "[Link]({download_url})"
            
  twitch_live:
    action:
      channel: "#streams"
      message: "@everyone {streamer} is now live!"
      embed:
        title: "{stream_title}"
        image: "{thumbnail}"
        
  youtube_video:
    action:
      channel: "#videos"
      embed:
        title: "{video_title}"
        description: "{description}"
        thumbnail: "{thumbnail}"
```

### Scheduled Posts

```yaml
scheduled_posts:
  daily_question:
    schedule: "10am daily"
    channel: "#daily-discussion"
    template: |
      🤔 **Question of the Day**
      
      {random_question}
      
      Share your thoughts below! 👇
      
  weekly_recap:
    schedule: "Sunday 6pm"
    channel: "#announcements"
    template: |
      📊 **Weekly Server Recap**
      
      New members: {new_members}
      Messages: {message_count}
      Most active channel: {top_channel}
      Top contributor: {top_user}
      
      Thanks for being part of our community! ❤️
```

---

## AI Integration

### AI Chat Bot

```yaml
ai_bot:
  trigger: mention OR dm
  
  configuration:
    model: gpt-4
    system_prompt: |
      You are a helpful Discord bot assistant.
      - Be friendly and use Discord-appropriate language
      - Use emojis naturally
      - Keep responses concise
      - Help with server-related questions
      
  features:
    - conversation_memory: per_channel
    - rate_limiting: 10_per_minute
    - content_filter: enabled
    
  commands:
    /ask:
      description: "Ask the AI a question"
      action: ai_response
      
    /summarize:
      description: "Summarize recent messages"
      action: summarize_channel_history
```

### Image Generation

```yaml
image_generation:
  command: /imagine
  
  options:
    - prompt: STRING (required)
    - style: CHOICE [realistic, anime, cartoon, abstract]
    - size: CHOICE [square, portrait, landscape]
    
  workflow:
    1. receive_command
    2. send_generating_message
    3. call_dalle_api
    4. send_result_with_buttons:
        - Regenerate
        - Upscale
        - Variations
```

---

## Embeds & Components

### Rich Embed

```yaml
embed:
  title: "Server Information"
  description: "Welcome to our community!"
  color: 0x5865F2  # Discord blurple
  
  thumbnail:
    url: "{server_icon}"
    
  fields:
    - name: "📊 Members"
      value: "{member_count}"
      inline: true
    - name: "💬 Channels"
      value: "{channel_count}"
      inline: true
    - name: "🎭 Roles"
      value: "{role_count}"
      inline: true
    - name: "📅 Created"
      value: "{creation_date}"
      inline: false
      
  footer:
    text: "Last updated"
    icon_url: "{bot_avatar}"
    
  timestamp: "{current_time}"
```

### Button Components

```yaml
buttons:
  row_1:
    - type: button
      style: primary
      label: "Accept Rules"
      custom_id: "accept_rules"
      
    - type: button
      style: secondary
      label: "View Rules"
      custom_id: "view_rules"
      
  row_2:
    - type: button
      style: link
      label: "Website"
      url: "https://example.com"
      
    - type: button
      style: danger
      label: "Leave"
      custom_id: "leave_confirm"
```

---

## Output Example

**Request**: "Create a Discord welcome bot"

**Output**:

```markdown
# Discord Welcome Bot

## Configuration

```yaml
events:
  - guildMemberAdd
  - guildMemberRemove
```

## Welcome Message

```javascript
// On member join
const welcomeEmbed = {
  title: '👋 Welcome to the Server!',
  description: `Hey ${member.user}, welcome to **${guild.name}**!`,
  color: 0x00ff00,
  fields: [
    { name: '📜 Rules', value: 'Check <#rules-channel>', inline: true },
    { name: '🎭 Roles', value: 'Get roles in <#roles>', inline: true },
    { name: '💬 Chat', value: 'Say hi in <#general>', inline: true }
  ],
  thumbnail: { url: member.user.displayAvatarURL() },
  footer: { text: `Member #${guild.memberCount}` }
};

welcomeChannel.send({ embeds: [welcomeEmbed] });
```

## Auto-Role

```javascript
// Assign "New Member" role
await member.roles.add(newMemberRole);
```

## DM Welcome

```javascript
// Send DM with server info
await member.send({
  content: `Welcome to ${guild.name}! Here's everything you need to know...`,
  embeds: [infoEmbed]
});
```

## n8n Workflow

```yaml
trigger: Discord - On Member Join
actions:
  - Discord - Send Channel Message (welcome)
  - Discord - Add Role
  - Discord - Send DM
  - Google Sheets - Log new member
```
```

---

*Discord Bot Skill - Part of Claude Office Skills*

© claude-office-skills · MIT · claude-office-skills/skills

Similar skills

Everything for Backend and APIs →

discord-bot by other authors comes first.

discord-bot OpenClaudia A skill that sends messages, embeds and announcements to Discord channels through a webhook or the Bot API. Useful when your agent needs to post to a community from inside the project. CX Codex +1 458installs discord-bot-architect davila7 Gives your agent working patterns for Discord bots in JavaScript and Python: slash commands, buttons, menus, sharding. Useful once a bot outgrows a toy example. 106installs discord openclaw A skill that runs Discord messaging through OpenClaw's message tool: send, edit, delete, pin, react, plus interactive buttons. Useful when your agent needs Discord as a channel for replies and notifications. CX Codex +1 3,000installs discord-notifications davila7 Posts a Discord message when Claude stops working or a subagent finishes. Useful when you step away from the terminal and want a ping on completion. 217installs telegram-group-analytics-bot reason-machines This skill tracks Telegram group activity: member growth, message counts, hourly heatmaps and scheduled reports you can export. CX Codex +1 610installs developer-community-moderation Samuel Berthe Writes a developer community code of conduct plus the moderation playbook behind it: reporting channels, enforcement ladder, incident response. CX Codex +1 10,300installs participation-warmup-planner aaron-he-zhu Prepares a pre-promotion warmup plan for accounts entering external or owned communities. Sets give-before-ask ledgers and graduation criteria. CX Codex +1 1,000installs

From the same set109

investment-memo Drafts professional investment memos for VC, PE, or public market deals. It structures investment theses, risk assessments, and recommendations. CX Codex +1 5,400installs report-generator Generates analytical reports, KPI dashboards, and visual charts from CSV, Excel, or JSON data. Helpful when turning raw metrics into clean summaries. CX Codex +1 5,200installs sheets-automation A skill for automating Google Sheets: data sync, task reminders, reports and dashboards. Useful when spreadsheets are already part of your workflow. CX Codex +1 5,200installs Amazon Seller Automates Amazon Seller Central workflows, including FBA inventory tracking, PPC campaigns, dynamic pricing, and listing optimization. CX Codex +1 5,200installs invoice-generator Generates professional invoices for freelancers and small businesses. It calculates taxes, handles multiple currencies, and outputs ready-to-send documents in DOCX or PDF. CX Codex +1 5,100installs company-research Research a company’s business model, market position, competitors and management. Use it for investment decisions, partnership reviews or competitive research. CX Codex +1 5,100installs dcf-valuation Builds a discounted cash flow model: FCF projections, WACC, terminal value and a sensitivity grid. Useful when you need a per-share value for a company. CX Codex +1 5,100installs infographic Plans layouts, wireframes, and narrative structure for infographics. Handy when preparing clear design specs before actual drawing. CX Codex +1 5,100installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor