mcpField
D
discord

discord

github.com/civitai生産性7.3k78 回インストール今日更新
リポジトリ

discord について

discord は、Discord の REST API を操作するコマンドラインスキルです。ターミナルからチームメッセージの投稿やチャンネルでのやり取りを管理する用途に向け、メッセージ、告知、埋め込み、スレッド、リアクション、DM に対応します。

主な機能

  1. 01サーバー、チャンネル、メンバー、ロールの一覧
  2. 02メッセージ、告知、構造化埋め込みの送信
  3. 03メッセージの閲覧・返信・編集・削除
  4. 04リアクション、ピン留め、スレッドの管理
  5. 05DM の送信と履歴の閲覧

活用シーン

  1. 01デプロイ通知やチーム告知の投稿
  2. 02最近のチャンネルメッセージで状況を確認
  3. 03議論用スレッドの作成とリアクション追加
  4. 04チームメンバーへの DM 送信

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/civitai/civitai --skill discord

インストール後、Claude Code で/discordを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

.env.example
.gitignore
query.mjs
setup.mjs
api/
client.mjs

詳細

Discord

REST API を通じて、Discord チャンネルにメッセージやお知らせを投稿します。チャンネル名でチャンネルを検索し、埋め込みを使った書式付きメッセージの送信、リアクションやスレッドの管理などを行えます。

セットアップ

セットアップスクリプトを実行して、Discord で認証します。

node .claude/skills/discord/setup.mjs https://discord-proxy.civitai.com

次の処理が行われます。

  1. Discord 認証のため、ブラウザーが開きます
  2. チームのサーバーに参加していることが確認されます
  3. 個人用 API トークンが .env に保存されます
管理者のみ:ボットトークンを直接使用する

ボットを直接管理しており、プロキシを経由せずに使用する必要がある場合は、次の手順を実行します。

  1. このスキルのディレクトリで .env.example を .env にコピーします
  2. DISCORD_BOT_TOKEN のコメントを解除し、値を設定します
  3. 必要に応じて、DISCORD_GUILD を設定して自動検出を有効にします
cp .claude/skills/discord/.env.example .claude/skills/discord/.env

コマンドの実行

node .claude/skills/discord/query.mjs <command> [options]
コマンド
コマンド説明
guildsボットが参加しているすべてのギルド(サーバー)を一覧表示します
channels [guild]ギルド内のテキストチャンネルを一覧表示します
send <channel> "message"プレーンテキストのメッセージを送信します
announce <channel> "message"書式付きのお知らせを埋め込みで送信します
meボットの情報を表示します
usersギルド内のすべてのメンバーを一覧表示します
user <name|id>ユーザー情報とメンション形式を取得します
rolesギルド内のすべてのロールを一覧表示します
role <name|id>ロール情報とメンション形式を取得します
messages <channel>チャンネルの最近のメッセージを取得します
edit <msg_link> "content"メッセージを編集します(ボット自身のメッセージのみ)
delete <msg_link>メッセージを削除します
reply <msg_link> "content"メッセージに返信します
rich-embed <channel>構造化されたフィールドを含む埋め込みを送信します
react <msg_link> <emoji>メッセージにリアクションを追加します
unreact <msg_link> <emoji>メッセージからリアクションを削除します
pin <msg_link>メッセージをピン留めします
unpin <msg_link>メッセージのピン留めを解除します
pins <channel>チャンネル内のピン留めされたメッセージを一覧表示します
thread <channel> --thread "name"スレッドを作成します
dm <user> "message"ユーザーにダイレクトメッセージを送信します
dm-messages <user>ユーザーとの DM 履歴を読み込みます
オプション
フラグ説明
--json生の JSON レスポンスを出力します
--title "text"埋め込みのタイトルを設定します
--color <hex>埋め込みの色を設定します(デフォルト:#1E88E5 blue)
--footer "text"埋め込みのフッターテキストを設定します
--url "link"埋め込みのタイトルに URL を追加します
--limit, -n <N>結果数を制限します(users:デフォルト 100、messages:デフォルト 20)
--field "Name|Value|inline"リッチ埋め込みにフィールドを追加します(複数指定可能)
--thumbnail "url"埋め込みにサムネイル画像を追加します
--image "url"埋め込みに大きな画像を追加します
--thread "name"スレッド名(thread コマンド用)

例

メッセージを送信する
# Send to channel by name
node .claude/skills/discord/query.mjs send dev-general "Deployment complete!"

# Send to channel by ID
node .claude/skills/discord/query.mjs send 966054537880289330 "Build passed"
お知らせを送信する
# Basic announcement with auto-formatting
node .claude/skills/discord/query.mjs announce dev-alerts "New feature deployed!"

# Announcement with custom title and color
node .claude/skills/discord/query.mjs announce deployments "v5.0.1381 released" --title "Release" --color "#00C853"
フィールドを含むリッチ埋め込み
# Structured release announcement
node .claude/skills/discord/query.mjs rich-embed dev-general "New release is live!" \
  --title "Release v5.0.1382" \
  --field "Version|5.0.1382|inline" \
  --field "Author|@justin|inline" \
  --field "Changes|3 files modified" \
  --footer "Civitai" \
  --color "#00C853"
メッセージを編集する
# Edit using message link
node .claude/skills/discord/query.mjs edit "https://discord.com/channels/955.../966.../123..." "Updated content"

# Edit using channel + message ID
node .claude/skills/discord/query.mjs edit dev-general 1234567890 "Updated content"
メッセージを削除する
# Delete using message link
node .claude/skills/discord/query.mjs delete "https://discord.com/channels/955.../966.../123..."

# Delete using channel + message ID
node .claude/skills/discord/query.mjs delete dev-general 1234567890
メッセージに返信する
# Reply using message link
node .claude/skills/discord/query.mjs reply "https://discord.com/channels/955.../966.../123..." "Thanks for the update!"

# Reply using channel + message ID
node .claude/skills/discord/query.mjs reply dev-general 1234567890 "Got it!"
リアクション
# Add a reaction (use Unicode emoji)
node .claude/skills/discord/query.mjs react "https://discord.com/channels/..." "U+2705"
node .claude/skills/discord/query.mjs react dev-general 1234567890 "U+1F44D"

# Remove a reaction
node .claude/skills/discord/query.mjs unreact "https://discord.com/channels/..." "U+2705"
メッセージのピン留め/解除
# Pin a message
node .claude/skills/discord/query.mjs pin "https://discord.com/channels/..."

# Unpin a message
node .claude/skills/discord/query.mjs unpin "https://discord.com/channels/..."

# List pinned messages
node .claude/skills/discord/query.mjs pins dev-general
スレッド
# Create thread from a message
node .claude/skills/discord/query.mjs thread "https://discord.com/channels/..." --thread "Discussion"

# Create thread in channel (no parent message)
node .claude/skills/discord/query.mjs thread dev-general --thread "New Topic"
ダイレクトメッセージ
# Send DM to a user by name
node .claude/skills/discord/query.mjs dm justin "Hey, can you review this PR?"

# Send DM to a user by ID
node .claude/skills/discord/query.mjs dm 303445765865603073 "Quick question about the deployment"

# Read DM history with a user
node .claude/skills/discord/query.mjs dm-messages justin

# Read last 50 DMs
node .claude/skills/discord/query.mjs dm-messages justin --limit 50
ユーザーとロール
# List users
node .claude/skills/discord/query.mjs users --limit 50

# Find user to get mention format
node .claude/skills/discord/query.mjs user justin
# Output: Mention: <@303445765865603073>

# List roles
node .claude/skills/discord/query.mjs roles

# Find role to get mention format
node .claude/skills/discord/query.mjs role devs
# Output: Mention: <@&955572624992382996>
ユーザーとロールにメンションする
# Mention a user in a message
node .claude/skills/discord/query.mjs send dev-general "<@303445765865603073> check this PR"

# Mention a role
node .claude/skills/discord/query.mjs announce dev-general "<@&955572624992382996> new release!" --title "Attention Devs"
メッセージを読む
# Get last 20 messages (default)
node .claude/skills/discord/query.mjs messages dev-general

# Get last 50 messages
node .claude/skills/discord/query.mjs messages dev-general --limit 50

メッセージリンク

ほとんどのコマンドでは、Discord のメッセージリンクを直接指定できます。

  • 形式:https://discord.com/channels/GUILD_ID/CHANNEL_ID/MESSAGE_ID
  • Discord で任意のメッセージを右クリックし、「メッセージリンクをコピー」を選択します

メッセージリンクを指定できるコマンド:edit、delete、reply、react、unreact、pin、unpin、thread

チャンネル名の照合

チャンネル名は柔軟に照合されます。

  • 完全一致:dev-general
  • 部分一致:dev-gen は dev-general に一致します
  • 絵文字の接頭辞の有無を問わない:team は team に一致します
  • 大文字と小文字を区別しない:DEV-GENERAL は dev-general に一致します

使用する場面

  • デプロイ:deployments または dev-alerts にリリースを告知します
  • バグ修正:dev-general でチームに修正内容を共有します
  • 機能の告知:関連するチャンネルに投稿します
  • チームの最新情報:team またはプロジェクト専用のチャンネルで進捗を共有します
  • 自動通知:CI/CD またはスクリプトから投稿します
  • ユーザーへのメンション:user コマンドでユーザー ID を調べてから、@メンションします
  • ロールへのメンション:role コマンドでロール ID を調べてから、@メンションします
  • コンテキストの確認:messages コマンドで最近のメッセージを確認します
  • リアクション:絵文字のリアクションでメッセージに反応します
  • 議論の整理:テーマを絞った会話のためにスレッドを作成します
  • ダイレクトメッセージ:チームメンバーにプライベートな DM を送り、DM の履歴を読みます

ヒント

  • 重要なお知らせには announce を使用します(リッチな埋め込みメッセージを作成します)
  • 手短なメッセージや自動通知には send を使用します
  • 複数のフィールドを含む構造化データには rich-embed を使用します
  • チャンネル名は、初回の検索後にキャッシュされます
  • ボットには、対象チャンネルで適切な権限が必要です
  • スクリプトでの使用やほかのツールへのパイプには --json を使用します
  • メッセージリンクは、メッセージを対象とするすべてのコマンドで使用できます

必要な権限

ボットには、以下の Discord 権限が必要です。

  • View Channels - チャンネルを一覧表示して検索するため
  • Send Messages - メッセージを投稿するため
  • Embed Links - リッチな告知を作成するため
  • Read Message History - チャンネルのメッセージを読むため
  • Add Reactions - リアクションを追加するため
  • Manage Messages - メッセージをピン留め/ピン留め解除、削除するため
  • Create Public Threads - スレッドを作成するため
  • Server Members Intent - メンバーを一覧表示するため、Discord Developer Portal で有効にします

コメント