discord-bot について
Discordコミュニティの管理者向けスキルで、ボットの設定、モデレーション、通知、AI機能の実装を案内します。n8nのワークフローテンプレートをもとにしています。
主な機能
- 01ボットの設定と構成
- 02スラッシュコマンドとインタラクション
- 03自動モデレーションと管理コマンド
- 04歓迎、ロール、チケットのフロー
- 05n8n通知ワークフロー
- 06AIチャットと画像生成
活用シーン
- 01新規メンバーの歓迎とロール割り当ての設定
- 02スパム検出とモデレーション操作の記録
- 03リリース通知や定期的なコミュニティ投稿
- 04AIチャットと画像生成を備えたボットの作成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ claude-office-skills/ skills --skill discord-botインストール後、Claude Code で/discord-botを入力して読み込まれたか確認します。
詳細
Discord ボット
コミュニティ管理、モデレーション、通知、AI 連携に対応した Discord ボットを構築します。n8n の Discord ワークフローテンプレートに基づいています。
概要
このスキルでは、以下を扱います。
- ボットのセットアップと設定
- スラッシュコマンドとインタラクション
- モデレーションの自動化
- 通知ワークフロー
- AI を活用した機能
ボットのセットアップ
Discord ボットの作成
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:
- 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
モデレーションボット
自動モデレーション
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
モデレーションコマンド
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
コミュニティ機能
ウェルカムシステム
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}"
ロール管理
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:
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
通知ワークフロー
n8n 連携
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:
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 連携
AI チャットボット
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:
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
埋め込みとコンポーネント
リッチ埋め込み
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}"
ボタンコンポーネント
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"
出力例
リクエスト:「Discord のウェルカムボットを作成してください」
出力:
# Discord Welcome Bot
## Configuration
```yaml
events:
- guildMemberAdd
- guildMemberRemove
ウェルカムメッセージ
// 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] });
自動ロール
// Assign "New Member" role
await member.roles.add(newMemberRole);
DM ウェルカム
// Send DM with server info
await member.send({
content: `Welcome to ${guild.name}! Here's everything you need to know...`,
embeds: [infoEmbed]
});
n8n ワークフロー
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*
コメント
Markdown 対応