--- id: claude-office-skills/skills/discord-bot version: "35452bff" license: MIT install: manual updated: 2026-01-31 --- # discord-bot โ€” Discord Bot equips you to create bots that handle community management tasks like member onboarding, role assignment, and moderation workflows. Configure slash commands, automate spam detection and content filtering, and integrate notification systems for events like GitHub releases or scheduled announcements. Add AI-powered features including chat assistance and image generation to enhance your server's capabilities. Publisher: claude-office-skills ยท Stars: 338 ยท Updated: 2026-01-31 Install (manual): `git clone https://github.com/claude-office-skills/skills` ## 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 ```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* [View on SkillFed](https://skillfed.io/claude-office-skills/skills/discord-bot) ยท [View on GitHub](https://github.com/claude-office-skills/skills)