mcpField
D
discord

discord

github.com/letta-ai生産性152117 回インストール4 週間前に更新
リポジトリ

discord について

discord は Python CLI から Discord REST API v10 を呼び出す自動化スキルです。サーバーやメッセージの操作をスクリプト化でき、Python 標準ライブラリのみを使い、結果を JSON で出力します。

主な機能

  1. 01サーバーとチャンネルの管理
  2. 02メッセージの取得と送信
  3. 03リアクションの追加、削除、一覧表示
  4. 04スレッド作成とピン留め管理
  5. 05ユーザー一覧と詳細の取得

活用シーン

  1. 01コマンドラインからサーバーのチャンネルを確認
  2. 02スクリプトで Discord のメッセージを取得・送信
  3. 03リアクション、スレッド、ピン留めを管理

インストール

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

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

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

同梱ファイル

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

LICENSE
assets/
discord-small.svg
scripts/
discord_cli.py

詳細

discord_cli.py による Discord の自動化

Discord REST API v10 をラップする、同梱の Python スクリプトです。外部依存関係はなく、Python 標準ライブラリ(urllib、json、argparse)のみを使用します。

次のように実行します:python3 <path-to-skill>/scripts/discord_cli.py <command> <subcommand> [args]

セットアップ

1. Discord ボットを作成する
  1. Discord Developer Portal に移動し、New Application をクリックします
  2. サイドバーの Bot をクリックし、Reset Token をクリックして、トークンをコピーします
  3. 重要:下にスクロールして Privileged Gateway Intents の Message Content Intent を有効にします。これを有効にしないと、API レスポンスのメッセージ内容が空になります
  4. 必要に応じて Server Members Intent を有効にします(user list に必要です)
2. ボットをサーバーに追加する
  1. サイドバーの OAuth2 をクリックし、OAuth2 URL Generator までスクロールします
  2. スコープで bot と applications.commands にチェックを入れます
  3. Bot Permissions で、View Channels、Send Messages、Read Message History、Add Reactions、Attach Files にチェックを入れます
  4. 生成された URL をコピーし、ブラウザーで開いて、サーバーを選択し、Authorize をクリックします

クライアント ID がわかっている場合のショートカット:

https://discord.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&scope=bot+applications.commands&permissions=274877975552
3. ボットトークンを設定する
export DISCORD_BOT_TOKEN="your_token_here"
4. 動作を確認する
python3 <path-to-skill>/scripts/discord_cli.py auth test

出力例:

{"ok": true, "user": "your-bot-name", "id": "...", "discriminator": "..."}

コマンド

認証
python3 <path-to-skill>/scripts/discord_cli.py auth test
サーバー
python3 <path-to-skill>/scripts/discord_cli.py server list
python3 <path-to-skill>/scripts/discord_cli.py server info <server-id>
チャンネル
python3 <path-to-skill>/scripts/discord_cli.py channel list <server-id>

テキスト、アナウンス、フォーラムの各チャンネルを、カテゴリーと位置で並べ替えて返します。各チャンネルには id、name、type、category、topic が含まれます。

メッセージ
# List recent messages (default 25, chronological order)
python3 <path-to-skill>/scripts/discord_cli.py message list <channel-id>
python3 <path-to-skill>/scripts/discord_cli.py message list <channel-id> --limit 50

# Get a single message
python3 <path-to-skill>/scripts/discord_cli.py message get <channel-id> <message-id>

# Send a message
python3 <path-to-skill>/scripts/discord_cli.py message send <channel-id> "Hello from the agent!"

# Edit a message (bot can only edit its own messages)
python3 <path-to-skill>/scripts/discord_cli.py message edit <channel-id> <message-id> "Updated text"

# Delete a message
python3 <path-to-skill>/scripts/discord_cli.py message delete <channel-id> <message-id>

# Search messages in a server
python3 <path-to-skill>/scripts/discord_cli.py message search <server-id> "query"
python3 <path-to-skill>/scripts/discord_cli.py message search <server-id> "query" --channel-id <id> --author-id <id> --limit 10
リアクション
python3 <path-to-skill>/scripts/discord_cli.py reaction add <channel-id> <message-id> 👍
python3 <path-to-skill>/scripts/discord_cli.py reaction remove <channel-id> <message-id> 👍
python3 <path-to-skill>/scripts/discord_cli.py reaction list <channel-id> <message-id>
スレッド
# Create a new thread in a channel
python3 <path-to-skill>/scripts/discord_cli.py thread create <channel-id> "Discussion Topic"

# Create a thread from a specific message
python3 <path-to-skill>/scripts/discord_cli.py thread create <channel-id> "Bug Triage" --message-id <id>
ピン留め
python3 <path-to-skill>/scripts/discord_cli.py pin list <channel-id>
python3 <path-to-skill>/scripts/discord_cli.py pin add <channel-id> <message-id>
python3 <path-to-skill>/scripts/discord_cli.py pin remove <channel-id> <message-id>
ユーザー
python3 <path-to-skill>/scripts/discord_cli.py user list <server-id>
python3 <path-to-skill>/scripts/discord_cli.py user list <server-id> --limit 200
python3 <path-to-skill>/scripts/discord_cli.py user info <user-id>

メッセージ内でユーザーにメンションするには、<@USER_ID> を使用します。

出力形式

すべてのコマンドは JSON を標準出力に出力します。エラーは標準エラー出力に error フィールドと HTTP の status コードを付けて出力されます。

メッセージオブジェクトには、id、author、author_id、content、timestamp に加えて、任意で thread_id、(filename と url を含む)attachments、(emoji と count を含む)reactions が含まれます。null 値や空のフィールドは削除されます。

トラブルシューティング

メッセージ内容が空

Message Content Intent が有効になっていません。Developer Portal → Bot → Privileged Gateway Intents に移動し、Message Content Intent をオンにしてください。

user list の結果が空、または一部しか表示されない

Server Members Intent が有効になっていません。同じインテントのセクションでオンにしてください。

403 / アクセス権限がないというエラー

ボットにそのチャンネルへの権限がありません。Discord サーバーの設定でボットのロール権限を確認するか、正しい権限を指定して再認証してください。

トークンエラー

ボットトークンを再発行した場合は、DISCORD_BOT_TOKEN を新しい値に更新してください。

注意事項

  • Discord では、すべての識別子に Snowflake ID(1161736244074659893 のような大きな数値)を使用します。チャンネル名を直接使用することはできません。まず channel list <server-id> を使って ID を確認してください。
  • ボットがアクセスできるのは、招待されたサーバーと、権限を持つチャンネルのみです。
  • ボットトークン認証では、公式の Discord API を使用します。ユーザートークンの抽出は行わず、利用規約に抵触するリスクもありません。
  • メッセージは時系列順(古いものから先)に返されます。

コメント