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_linkSlash 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: trueModeration 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: enableModeration 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_historyCommunity 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_linkNotification 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_historyImage 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 - VariationsEmbeds & 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 - guildMemberRemoveWelcome 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*

