Agent Skills

discord-bot

Discord bot development - community management, moderation, notifications, and AI integration

Install

npx skills add https://github.com/claude-office-skills/skills --skill discord-bot
SKILL.md

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

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

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

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

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

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

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

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

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

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

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

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

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

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:

# Discord Welcome Bot

## Configuration

```yaml
events:
  - guildMemberAdd
  - guildMemberRemove

Welcome Message

// 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

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

DM Welcome

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

n8n Workflow

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*

Related skills

entra-app-registrationmicrosoft606KGuides Microsoft Entra ID app registration, OAuth 2.0 authentication, and MSAL integration. USE FOR: create app registration, register Azure AD app, configure OAuth, set up authentication, add API permissions, generate service principal, MSAL example, console app auth, Entra ID setup, Azure AD authentication. DO NOT USE FOR: Key Vault secrets (use azure-keyvault-expiration-audit), general Azure resource security guidance.azure-messagingmicrosoft595KTroubleshoot and resolve issues with Azure Messaging SDKs for Event Hubs and Service Bus. Covers connection failures, authentication errors, message processing issues, and SDK configuration problems. WHEN: event hub SDK error, service bus SDK issue, messaging connection failure, AMQP error, event processor host issue, message lock lost, message lock expired, lock renewal, lock renewal batch, send timeout, receiver disconnected, SDK troubleshooting, azure messaging SDK, event hub consumer, servicentra-agent-idmicrosoft328KProvision Microsoft Entra Agent Identity Blueprints, BlueprintPrincipals, and per-instance Agent Identities via Microsoft Graph, and configure OAuth 2.0 token exchange (fmi_path, OBO, cross-tenant) including the Microsoft Entra SDK for AgentID sidecar. USE FOR: Agent Identity Blueprint, BlueprintPrincipal, agent OAuth, fmi_path token exchange, agent OBO, Workload Identity Federation for agents, polyglot agent auth, Microsoft.Identity.Web.AgentIdentities. DO NOT USE FOR: standard Entra app registsupabasesupabase298KUse when doing ANY task involving Supabase. Triggers: Supabase products (Database, Auth, Edge Functions, Realtime, Storage, Vectors, Cron, Queues); client libraries and SSR integrations (supabase-js, @supabase/ssr) in Next.js, React, SvelteKit, Astro, Remix; auth issues (login, logout, sessions, JWT, cookies, getSession, getUser, getClaims, RLS); Supabase CLI or MCP server; schema changes, migrations, declarative schemas, security audits, Postgres extensions (pg_graphql, pg_cron, pg_vector); deb

Search skills and MCP servers

Fuzzy search across 23,137 skills and servers