Discord Bot

by claude-office-skills9c4c7d5cd281MIT499 starsListed Oct 8, 2026Updated Oct 8, 2026Repository updated 8 months ago

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

Instructions onlySoftware Development
AI-generated overview

Guides building Discord bots for moderation, community management, notifications, and AI chat features.

What it does
This skill provides reference patterns and configuration examples for developing Discord bots. It covers bot setup and intents, slash commands, auto-moderation rules, welcome and role systems, ticket workflows, notification embeds, scheduled posts, and AI chat or image generation commands. It produces design guidance and example configurations rather than runnable code.
When to use it
Use it when planning or documenting a Discord bot for a community server. It suits moderation automation, member onboarding, notification posting, and adding AI-assisted commands.
Requirements
No scripts are included; it is instructions only. Following the setup guidance assumes a Discord application and bot token, configured gateway intents, and optionally an MCP server named discord-mcp with message, channel, and role tools, plus external services for AI or image generation.

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
```yamlevents:  - guildMemberAdd  - guildMemberRemove

Welcome Message

javascript
// On member joinconst 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" roleawait member.roles.add(newMemberRole);

DM Welcome

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

n8n Workflow

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

---
*Discord Bot Skill - Part of Claude Office Skills*

Source and attribution

Source:claude-office-skills/skillsindiscord-botat commit9c4c7d5

License: MIT

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal