Toolinggeneric
discord-bot
Discord bot development - community management, moderation, notifications, and AI integration
claude-office-skills/skillsdiscord.com
Install
Use with your agent
Install the discord-bot skill, then use it as build context. Run: npx skills add https://github.com/claude-office-skills/skills --skill discord-bot. Then read the installed skill.md and follow its guidance to build or refactor my project.
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*