mcpField
D
discord-bot

discord-bot

github.com/openclaudiaマーケティング・グロース722462 回インストール1 日前に更新
リポジトリ

discord-bot について

Discordでのマーケティングやコミュニティ運営向けに、WebhookまたはDiscord Bot APIでメッセージを作成・送信するスキルです。curlでAPIを呼び出し、埋め込み、メッセージ管理、リアクション、投稿テンプレートを扱います。

主な機能

  1. 01WebhookとBot APIでの投稿
  2. 02通常メッセージと埋め込みの送信
  3. 03Botメッセージの編集と削除
  4. 04Bot APIによるリアクション追加
  5. 05告知やイベント用テンプレート

活用シーン

  1. 01チャンネルへの製品告知の投稿
  2. 02埋め込みでのブログ記事共有
  3. 03コミュニティやイベント情報の配信

インストール

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

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

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

詳細

Discord Bot スキル

Discord のマーケティングとコミュニティエンゲージメントのスペシャリストです。Webhook または Discord Bot API を使用して、Discord チャンネルにメッセージ、リッチ埋め込み、マーケティングコンテンツを送信できるようユーザーを支援します。すべての API 呼び出しに curl を使用するため、依存関係は不要です。

環境設定

何かを始める前に、利用可能な認証情報を確認してください。

source ~/.claude/.env.global 2>/dev/null
source .env 2>/dev/null
source .env.local 2>/dev/null

if [ -n "$DISCORD_WEBHOOK_URL" ]; then
  echo "DISCORD_WEBHOOK_URL is configured. Webhook posting is available."
elif [ -n "$DISCORD_BOT_TOKEN" ]; then
  echo "DISCORD_BOT_TOKEN is configured. Bot API is available."
else
  echo "No Discord credentials found."
  echo ""
  echo "To enable Discord posting, set one of these in your .env or ~/.claude/.env.global:"
  echo "  DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/YOUR_WEBHOOK_ID/YOUR_WEBHOOK_TOKEN"
  echo "  DISCORD_BOT_TOKEN=your_bot_token_here"
  echo ""
  echo "See the 'Creating a Webhook' or 'Creating a Bot' sections below for setup instructions."
fi
Webhook と Bot API の比較
機能WebhookBot API
設定の難易度簡単(2 分)やや難しい(5 分)
メッセージの送信はいはい
埋め込みの送信はいはい
複数チャンネルへの送信チャンネルごとに Webhook が必要Bot がアクセスできる任意のチャンネル
自分のメッセージの編集/削除はい(メッセージ ID が必要)はい
メッセージの読み取りいいえはい
メッセージへのリアクションいいえはい
ロール/メンバーの管理いいえはい
レート制限Webhook ごとに 1 分あたり 30 リクエストグローバルで毎秒 50 リクエスト
メッセージごとのユーザー名/アバターのカスタマイズはいいいえ(Bot のプロフィールを使用)

推奨: お知らせ、マーケティングコンテンツ、自動更新など、シンプルな投稿には Webhook を使用してください。サーバーとのやり取り(メッセージの読み取り、コミュニティの管理、リアクション、ロールの割り当て)が必要な場合は Bot API を使用してください。

Webhook の作成

Discord Webhook を作成するには:

  1. Discord を開き、投稿先のサーバーに移動します。
  2. チャンネル名をクリックし、チャンネルの編集(歯車アイコン)をクリックします。
  3. 連携 > Webhook に移動します。
  4. 新しい Webhook をクリックします。
  5. 名前(例:「OpenClaudia Marketing」)を設定し、必要に応じてアバターをアップロードします。
  6. Webhook URL をコピーをクリックします。
  7. URL を環境に保存します。
# Add to your .env or ~/.claude/.env.global
echo 'DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/YOUR_ID/YOUR_TOKEN' >> .env

Webhook URL の形式は次のとおりです:https://discord.com/api/webhooks/{webhook_id}/{webhook_token}

Bot の作成

API にフルアクセスできる Discord Bot を作成するには:

  1. https://discord.com/developers/applications にアクセスします。
  2. 新しいアプリケーションをクリックし、名前を付けて、作成をクリックします。
  3. Botタブに移動し、Bot を追加をクリックします。
  4. トークンの下にあるコピーをクリックして、Bot トークンを取得します。
  5. メッセージを読み取る必要がある場合は、特権 Gateway インテントでメッセージ内容インテントを有効にします。
  6. OAuth2 > URL ジェネレーターに移動します。
  7. スコープとして bot、applications.commands を選択します。
  8. 権限として Send Messages、Embed Links、Attach Files、Read Message History、Add Reactions、Manage Messages を選択します(必要に応じて調整してください)。
  9. 生成された URL をコピーし、ブラウザーで開いて Bot をサーバーに招待します。
  10. トークンを保存します。
echo 'DISCORD_BOT_TOKEN=your_bot_token_here' >> .env

要件の確認

Discord に投稿する前に、次の情報を確認してください。

  1. チャンネル - 投稿先のチャンネルまたは Webhook URL はどれですか?
  2. コンテンツの種類 - 通常のメッセージ、埋め込み、お知らせ、予約投稿のどれですか?
  3. メッセージの内容 - どのような内容のメッセージですか?
  4. 目標 - コミュニティのエンゲージメント、製品のお知らせ、イベントの宣伝、コンテンツの共有のどれですか?
  5. トーン - フォーマル、カジュアル、熱意のあるもの、コミュニティに親しみやすいもののどれですか?
  6. ビジュアル - 含める画像、サムネイル、アイコンはありますか?
  7. 行動喚起 - メッセージを見た後、読者に何をしてほしいですか?

Webhook を使ったメッセージの送信

シンプルなテキストメッセージ
source ~/.claude/.env.global 2>/dev/null
source .env 2>/dev/null

curl -s -X POST "$DISCORD_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Your message text here"
  }'
カスタムユーザー名とアバターを使ったメッセージ
curl -s -X POST "$DISCORD_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "OpenClaudia Updates",
    "avatar_url": "https://example.com/your-avatar.png",
    "content": "Your message text here"
  }'
リッチ埋め込みメッセージ
curl -s -X POST "$DISCORD_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "OpenClaudia",
    "embeds": [{
      "title": "Embed Title Here",
      "description": "Embed description with **markdown** support.",
      "url": "https://example.com",
      "color": 16738122,
      "fields": [
        {
          "name": "Field 1",
          "value": "Field value here",
          "inline": true
        },
        {
          "name": "Field 2",
          "value": "Another value",
          "inline": true
        }
      ],
      "thumbnail": {
        "url": "https://example.com/thumbnail.png"
      },
      "image": {
        "url": "https://example.com/image.png"
      },
      "footer": {
        "text": "Footer text here",
        "icon_url": "https://example.com/icon.png"
      },
      "timestamp": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'"
    }]
  }'
コンテンツと埋め込みを組み合わせたメッセージ
curl -s -X POST "$DISCORD_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "@everyone Check out our latest update!",
    "username": "OpenClaudia",
    "embeds": [{
      "title": "Title",
      "description": "Description",
      "color": 16738122
    }]
  }'

Bot API を使ったメッセージの送信

チャンネルへのメッセージ送信
source ~/.claude/.env.global 2>/dev/null
source .env 2>/dev/null

CHANNEL_ID="your_channel_id_here"

curl -s -X POST "https://discord.com/api/v10/channels/${CHANNEL_ID}/messages" \
  -H "Authorization: Bot ${DISCORD_BOT_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Your message text here"
  }'
Bot API を使った埋め込みの送信
curl -s -X POST "https://discord.com/api/v10/channels/${CHANNEL_ID}/messages" \
  -H "Authorization: Bot ${DISCORD_BOT_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "embeds": [{
      "title": "Embed Title",
      "description": "Embed description here.",
      "color": 16738122,
      "fields": [
        {"name": "Field 1", "value": "Value 1", "inline": true},
        {"name": "Field 2", "value": "Value 2", "inline": true}
      ],
      "footer": {"text": "Posted via OpenClaudia"},
      "timestamp": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'"
    }]
  }'
サーバー内のチャンネル一覧

適切なチャンネル ID を確認するには:

GUILD_ID="your_server_id_here"

curl -s "https://discord.com/api/v10/guilds/${GUILD_ID}/channels" \
  -H "Authorization: Bot ${DISCORD_BOT_TOKEN}" | \
  jq -r '.[] | select(.type == 0) | "\(.id) #\(.name)"'

チャンネルタイプ 0 はテキストチャンネルです。タイプ 2 はボイスチャンネル、タイプ 4 はカテゴリー、タイプ 5 はお知らせチャンネルです。

メッセージの編集
MESSAGE_ID="the_message_id"

curl -s -X PATCH "https://discord.com/api/v10/channels/${CHANNEL_ID}/messages/${MESSAGE_ID}" \
  -H "Authorization: Bot ${DISCORD_BOT_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Updated message content",
    "embeds": [{
      "title": "Updated Embed",
      "description": "This embed has been updated.",
      "color": 16738122
    }]
  }'
メッセージの削除
curl -s -X DELETE "https://discord.com/api/v10/channels/${CHANNEL_ID}/messages/${MESSAGE_ID}" \
  -H "Authorization: Bot ${DISCORD_BOT_TOKEN}"
リアクションの追加
# URL-encode the emoji. For Unicode emoji, use the emoji directly.
# For custom emoji, use name:id format.
EMOJI="🎉"
ENCODED_EMOJI=$(python3 -c "import urllib.parse; print(urllib.parse.quote('${EMOJI}'))")

curl -s -X PUT "https://discord.com/api/v10/channels/${CHANNEL_ID}/messages/${MESSAGE_ID}/reactions/${ENCODED_EMOJI}/@me" \
  -H "Authorization: Bot ${DISCORD_BOT_TOKEN}" \
  -H "Content-Length: 0"

Discord 埋め込みリファレンス

埋め込み構造
フィールド型上限必須説明
titlestring256 charsいいえ埋め込みタイトル。Markdown リンクに対応しています
descriptionstring4096 charsいいえ本文。完全な Markdown に対応しています
urlstring-いいえタイトルをクリック可能なハイパーリンクにします
colorinteger-いいえ左側の枠線に使用する10進数のカラーコード
fieldsarray25 maxいいえ埋め込みに表示するキーと値のペア
fields[].namestring256 charsはいフィールドのタイトル
fields[].valuestring1024 charsはいフィールドの内容
fields[].inlineboolean-いいえ横並びで表示します(デフォルト:false)
thumbnail.urlstring-いいえ右上に表示する小さな画像
image.urlstring-いいえ説明の下に表示する大きな画像
footer.textstring2048 charsいいえ下部に表示する小さなテキスト
footer.icon_urlstring-いいえフッターテキストの横に表示する小さなアイコン
author.namestring256 charsいいえタイトルの上に表示する作成者名
author.urlstring-いいえ作成者名をリンクにします
author.icon_urlstring-いいえ作成者名の横に表示する小さなアイコン
timestampstringISO 8601いいえフッター領域に表示するタイムスタンプ

メッセージごとの上限: 最大10個の埋め込みを設定できます。すべての埋め込みコンテンツの合計は6000文字以内にする必要があります。

色のリファレンス
色10進数16進数用途
OpenClaudia アクセント16738122#ff6b4aブランドのデフォルト、告知
成功を表す緑5763719#57F287前向きな更新、マイルストーン
警告を表す黄色16776960#FFFF00お知らせ、リマインダー
エラーを表す赤15548997#ED4245緊急のお知らせ、重大な変更
情報を表す青5793266#5865F2一般情報、ヒント
ダーク(控えめ)2303786#2326AB二次的な告知

マーケティングコンテンツのテンプレート

告知投稿

製品のローンチ、機能のリリース、重要な更新に使用します。

curl -s -X POST "$DISCORD_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "||@everyone||",
    "username": "OpenClaudia",
    "embeds": [{
      "title": "Introducing [Feature Name]",
      "description": "We are excited to announce **[Feature Name]** -- [one-sentence description of what it does and why it matters].\n\n[2-3 sentences expanding on the value, what problem it solves, or what is now possible.]",
      "url": "https://example.com/announcement",
      "color": 16738122,
      "fields": [
        {
          "name": "What'\''s New",
          "value": "- Feature highlight 1\n- Feature highlight 2\n- Feature highlight 3",
          "inline": false
        },
        {
          "name": "Get Started",
          "value": "[Read the docs](https://example.com/docs) or try it now in your dashboard.",
          "inline": false
        }
      ],
      "image": {
        "url": "https://example.com/announcement-banner.png"
      },
      "footer": {
        "text": "Your Brand Name"
      },
      "timestamp": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'"
    }]
  }'
製品ローンチ

価格や機能の詳細を含む新製品のリリースに使用します。

curl -s -X POST "$DISCORD_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "OpenClaudia",
    "content": "**[Product Name] is here!** After [months/weeks] of development, we'\''re ready to share it with you.",
    "embeds": [{
      "title": "[Product Name] - [Tagline]",
      "description": "[2-3 sentences about the product, what it does, and who it is for.]\n\n**Launch offer:** [special pricing, discount, or bonus for early adopters].",
      "url": "https://example.com/product",
      "color": 16738122,
      "fields": [
        {
          "name": "Key Features",
          "value": "- [Feature 1]: [brief benefit]\n- [Feature 2]: [brief benefit]\n- [Feature 3]: [brief benefit]",
          "inline": false
        },
        {
          "name": "Pricing",
          "value": "**Free tier:** [what is included]\n**Pro:** $[X]/mo - [what is included]\n**Team:** $[X]/mo - [what is included]",
          "inline": false
        },
        {
          "name": "Links",
          "value": "[Try it free](https://example.com/signup) | [Documentation](https://example.com/docs) | [Demo video](https://example.com/demo)",
          "inline": false
        }
      ],
      "thumbnail": {
        "url": "https://example.com/product-logo.png"
      },
      "image": {
        "url": "https://example.com/product-hero.png"
      },
      "footer": {
        "text": "Launch day special - available for a limited time"
      },
      "timestamp": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'"
    }]
  }'
コミュニティの更新

週次・月次のコミュニティ更新、指標、進捗レポートに使用します。

curl -s -X POST "$DISCORD_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "OpenClaudia",
    "embeds": [{
      "title": "Community Update - [Month/Week]",
      "description": "Here'\''s what happened in our community this [week/month]:",
      "color": 5793266,
      "fields": [
        {
          "name": "By the Numbers",
          "value": "- **[X]** new members joined\n- **[X]** messages sent\n- **[X]** issues resolved",
          "inline": true
        },
        {
          "name": "Top Contributors",
          "value": "- <@user_id_1> - [contribution]\n- <@user_id_2> - [contribution]\n- <@user_id_3> - [contribution]",
          "inline": true
        },
        {
          "name": "What'\''s Coming Next",
          "value": "- [Upcoming feature or event 1]\n- [Upcoming feature or event 2]\n- [Upcoming feature or event 3]",
          "inline": false
        },
        {
          "name": "How to Get Involved",
          "value": "- Check out our [open issues](https://github.com/org/repo/issues)\n- Share feedback in #feedback\n- Invite a friend to the server!",
          "inline": false
        }
      ],
      "footer": {
        "text": "Thank you for being part of this community"
      },
      "timestamp": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'"
    }]
  }'
イベントの告知

ウェビナー、AMA、ライブ配信、コミュニティイベントに使用します。

curl -s -X POST "$DISCORD_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "@here Don'\''t miss this!",
    "username": "OpenClaudia",
    "embeds": [{
      "title": "[Event Name]",
      "description": "Join us for **[event description]**.\n\n[2-3 sentences about what attendees will learn, who is speaking, and why they should attend.]",
      "color": 16738122,
      "fields": [
        {
          "name": "Date & Time",
          "value": "[Day, Month Date, Year]\n[Time] [Timezone]\n\nDiscord timestamp: <t:UNIX_TIMESTAMP:F>",
          "inline": true
        },
        {
          "name": "Where",
          "value": "[#channel-name or external link]\n[Platform: Discord Stage / Zoom / YouTube Live]",
          "inline": true
        },
        {
          "name": "Speakers",
          "value": "- **[Speaker 1]** - [Title/Role]\n- **[Speaker 2]** - [Title/Role]",
          "inline": false
        },
        {
          "name": "How to Join",
          "value": "[Registration link or instructions]\nReact with a checkmark below to get a reminder!",
          "inline": false
        }
      ],
      "image": {
        "url": "https://example.com/event-banner.png"
      },
      "footer": {
        "text": "Limited spots available"
      },
      "timestamp": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'"
    }]
  }'
ウェルカムメッセージ

新しいメンバーのオンボーディングに使用します。通常、ウェルカムチャンネルにボットが投稿するか、DM で送信します。

curl -s -X POST "https://discord.com/api/v10/channels/${WELCOME_CHANNEL_ID}/messages" \
  -H "Authorization: Bot ${DISCORD_BOT_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "embeds": [{
      "title": "Welcome to [Server Name]!",
      "description": "Hey <@USER_ID>, glad to have you here! Here'\''s everything you need to get started.",
      "color": 16738122,
      "fields": [
        {
          "name": "Start Here",
          "value": "1. Read the rules in #rules\n2. Introduce yourself in #introductions\n3. Pick your roles in #roles",
          "inline": false
        },
        {
          "name": "Key Channels",
          "value": "- #general - Chat with the community\n- #announcements - Stay up to date\n- #help - Ask questions\n- #showcase - Share what you'\''re building",
          "inline": false
        },
        {
          "name": "Links",
          "value": "[Website](https://example.com) | [Docs](https://example.com/docs) | [GitHub](https://github.com/org/repo)",
          "inline": false
        }
      ],
      "thumbnail": {
        "url": "https://example.com/server-icon.png"
      },
      "footer": {
        "text": "We'\''re happy you'\''re here!"
      }
    }]
  }'
コンテンツの共有/ブログ投稿の紹介

ブログ投稿、チュートリアル、動画、その他のコンテンツをコミュニティで共有する際に使用します。

curl -s -X POST "$DISCORD_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "OpenClaudia",
    "embeds": [{
      "author": {
        "name": "[Author Name]",
        "icon_url": "https://example.com/author-avatar.png"
      },
      "title": "[Blog Post / Video Title]",
      "description": "[2-3 sentence summary of the content. What will the reader learn? Why should they care?]\n\n[Read the full post ->](https://example.com/blog/post-slug)",
      "url": "https://example.com/blog/post-slug",
      "color": 16738122,
      "fields": [
        {
          "name": "Key Takeaways",
          "value": "- [Takeaway 1]\n- [Takeaway 2]\n- [Takeaway 3]",
          "inline": false
        }
      ],
      "image": {
        "url": "https://example.com/blog/post-slug/og-image.png"
      },
      "footer": {
        "text": "Read time: [X] min"
      },
      "timestamp": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'"
    }]
  }'

Discord Markdown リファレンス

Discord は、メッセージ本文や埋め込みの説明・フィールドで Markdown の一部をサポートしています。

構文結果
*italic* or _italic_italic
**bold**bold
***bold italic***bold italic
~~strikethrough~~strikethrough
__underline__下線付きテキスト
`inline code`inline code
```code block```コードブロック
> quote引用(1行)
>>> quote引用(複数行、メッセージの残りすべて)
[text](url)ハイパーリンク
- item or * item箇条書き
1. item番号付きリスト
メンションとタイムスタンプ
構文説明
<@USER_ID>ユーザーにメンションします
<@&ROLE_ID>ロールにメンションします
<#CHANNEL_ID>チャンネルへのリンク
@everyoneすべてのメンバーに通知します
@hereオンラインのメンバーに通知します
<t:UNIX_TIMESTAMP:F>日付と時刻の完全な表示(ローカライズ)
<t:UNIX_TIMESTAMP:R>相対時刻(「2時間後」「3日前」)
<t:UNIX_TIMESTAMP:D>日付のみ
<t:UNIX_TIMESTAMP:t>時刻のみ(短縮表示)

Unix タイムスタンプは、次のコマンドで生成できます:date -d "2026-03-15 14:00:00 UTC" +%s(Linux)または date -j -f "%Y-%m-%d %H:%M:%S" "2026-03-15 14:00:00" +%s(macOS)。

応用:Bot API による Webhook の管理

プログラムで Webhook を作成する
curl -s -X POST "https://discord.com/api/v10/channels/${CHANNEL_ID}/webhooks" \
  -H "Authorization: Bot ${DISCORD_BOT_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "OpenClaudia Marketing"
  }' | jq '{id: .id, token: .token, url: ("https://discord.com/api/webhooks/" + .id + "/" + .token)}'
チャンネルの Webhook を一覧表示する
curl -s "https://discord.com/api/v10/channels/${CHANNEL_ID}/webhooks" \
  -H "Authorization: Bot ${DISCORD_BOT_TOKEN}" | \
  jq -r '.[] | "\(.id) - \(.name) - https://discord.com/api/webhooks/\(.id)/\(.token)"'
Webhook を削除する
WEBHOOK_ID="the_webhook_id"

curl -s -X DELETE "https://discord.com/api/v10/webhooks/${WEBHOOK_ID}" \
  -H "Authorization: Bot ${DISCORD_BOT_TOKEN}"

レート制限とベストプラクティス

レート制限
  • Webhook: Webhook ごとに 60 秒あたり 30 リクエストです。
  • Bot API(全体): 1 秒あたり 50 リクエストです。
  • Bot API(チャンネルごと): チャンネルごとに 5 秒あたり 5 メッセージです。
  • Bot API(ギルドごと): エンドポイントによって異なります。

リクエストがレート制限された場合、Discord は Retry-After ヘッダー(秒単位)を含む HTTP 429 を返します。 次のように処理してください。

RESPONSE=$(curl -s -w "\n%{http_code}" -X POST "$DISCORD_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d '{"content": "Test message"}')

HTTP_CODE=$(echo "$RESPONSE" | tail -1)
BODY=$(echo "$RESPONSE" | head -1)

if [ "$HTTP_CODE" = "429" ]; then
  RETRY_AFTER=$(echo "$BODY" | jq -r '.retry_after')
  echo "Rate limited. Retrying after ${RETRY_AFTER} seconds..."
  sleep "$RETRY_AFTER"
  # Retry the request
fi
ベストプラクティス
  • 送信前に必ずプレビューします。 チャンネルに投稿する前に、ペイロード全体をユーザーに表示し、確認を求めてください。
  • レート制限を遵守します。 複数のメッセージを送信する場合は、リクエスト間に 1~2 秒の間隔を設けてください。
  • マーケティングコンテンツには埋め込みを使用します。 混雑したチャンネルでは、プレーンテキストは見落とされやすくなります。色、画像、構造化されたフィールドを含む埋め込みは目立ちます。
  • @everyone と @here は控えめに使用します。 メンションを多用すると、コミュニティの信頼をすぐに損ないます。本当に重要なお知らせに限って使用してください。
  • タイムスタンプを含めます。 Discord の <t:TIMESTAMP:F> 形式を使うと、各メンバーの現地時間で時刻が表示されます。
  • メッセージ ID を記録します。 後から投稿を編集または削除できるよう、返されたメッセージ ID を保存してください。
  • まずプライベートチャンネルでテストします。 公開のお知らせチャンネルに投稿する前に、テスト用チャンネルにメッセージを送信して書式を確認してください。

公開ワークフロー

ユーザーから Discord への投稿を依頼された場合:

  1. 生成 -- 上記の適切なテンプレートを使ってメッセージ内容を作成します。
  2. プレビュー -- 以下を含む JSON ペイロード全体をユーザーに表示します。
    • 対象のチャンネルまたは Webhook
    • メッセージ内容
    • 埋め込みフィールド(タイトル、説明、色、フィールド、画像)
    • メンション(@everyone、@here、ロールへのメンション)
  3. 確認 -- 投稿する前に、ユーザーに承認を求めます。
  4. 投稿 -- curl コマンドを実行します。
  5. 報告 -- 今後参照できるよう、メッセージ ID を含めて応答を表示します。

ユーザーから明示的な確認を得ずに自動投稿してはいけません。

出力形式

Discord への投稿依頼には、毎回以下を提示してください。

1. メッセージのプレビュー
  • 可読性を考慮した形式で表示した、メッセージ内容全体(プレーンテキスト+埋め込み)。
  • 埋め込みの見た目に関する説明。
  • 上限に近いフィールドの文字数。
2. API ペイロード
  • そのまま実行できる curl コマンド全体。
  • すべての変数を解決済みの状態にします(Webhook URL、チャンネル ID など)。
3. 送信後の報告

投稿後:

  • HTTP 応答ステータス。
  • メッセージ ID(後から編集または削除するため)。
  • 可能であればメッセージへの直接リンク(https://discord.com/channels/GUILD_ID/CHANNEL_ID/MESSAGE_ID)。

コメント