discord について
discord は、Discord の REST API を操作するコマンドラインスキルです。ターミナルからチームメッセージの投稿やチャンネルでのやり取りを管理する用途に向け、メッセージ、告知、埋め込み、スレッド、リアクション、DM に対応します。
主な機能
- 01サーバー、チャンネル、メンバー、ロールの一覧
- 02メッセージ、告知、構造化埋め込みの送信
- 03メッセージの閲覧・返信・編集・削除
- 04リアクション、ピン留め、スレッドの管理
- 05DM の送信と履歴の閲覧
活用シーン
- 01デプロイ通知やチーム告知の投稿
- 02最近のチャンネルメッセージで状況を確認
- 03議論用スレッドの作成とリアクション追加
- 04チームメンバーへの DM 送信
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ civitai/ civitai --skill discordインストール後、Claude Code で/discordを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.env.example.gitignorequery.mjssetup.mjsapi/client.mjs詳細
Discord
REST API を通じて、Discord チャンネルにメッセージやお知らせを投稿します。チャンネル名でチャンネルを検索し、埋め込みを使った書式付きメッセージの送信、リアクションやスレッドの管理などを行えます。
セットアップ
セットアップスクリプトを実行して、Discord で認証します。
node .claude/skills/discord/setup.mjs https://discord-proxy.civitai.com
次の処理が行われます。
- Discord 認証のため、ブラウザーが開きます
- チームのサーバーに参加していることが確認されます
- 個人用 API トークンが
.envに保存されます
管理者のみ:ボットトークンを直接使用する
ボットを直接管理しており、プロキシを経由せずに使用する必要がある場合は、次の手順を実行します。
- このスキルのディレクトリで
.env.exampleを.envにコピーします DISCORD_BOT_TOKENのコメントを解除し、値を設定します- 必要に応じて、
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 で有効にします
コメント
Markdown 対応