0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ぼっちの雑多Advent Calendar 2024

Day 7

Discord Webhook をPythonで使ってみる

Last updated at Posted at 2024-12-09

Discord Webhookは、外部アプリケーションからDiscordのチャンネルにメッセージを送信するための強力なツールです。自動通知、ログの転送、ボットを使わずにカスタムメッセージを送信するなど、様々な用途で活用できます。

Webhook の作成

  1. Discordサーバーを開き、メッセージを送信したいチャンネルの設定を開きます。
  2. 「連携サービス」タブを選択し、「ウェブフック」をクリックします。
  3. 「新しいウェブフック」ボタンをクリックします。
  4. Webhookの名前、アバター画像、送信先のチャンネルを設定します。
  5. 「保存」をクリックすると、Webhook URLが表示されます。このURLは非常に重要なので、安全な場所に保管してください。 絶対に他人に共有しないでください。

webhook.png

Webhook URL の構造

Webhook URLは以下のような構造になっています。

https://discord.com/api/webhooks/<Webhook ID>/<Webhook Token>
  • <Webhook ID>: Webhookを一意に識別する数値
  • <Webhook Token>: Webhookへのアクセスを認証するための文字列

メッセージの送信

Webhook URLを使用して、POSTリクエストを送信することでメッセージを送信できます。リクエストボディはJSON形式で、以下のようなパラメータを指定できます。

  • content: メッセージのテキスト。DiscordのMarkdown記法が使用できます。
  • username: Webhookの表示名。
  • avatar_url: Webhookのアバター画像のURL。
  • embeds: リッチな埋め込みメッセージを送信するための配列。
  • tts: メッセージをテキスト読み上げで送信するかどうか (true/false)。
  • allowed_mentions: メンションの動作を制御するためのオブジェクト。

シンプルなメッセージ送信例 (Python):

import requests
import json

webhook_url = "your_webhook_url"

message = {
    "content": "Webhookからのテストメッセージです!"
}

headers = {
    'Content-Type': 'application/json'
}

response = requests.post(webhook_url, data=json.dumps(message), headers=headers)

if response.status_code == 204:
    print("メッセージを送信しました!")
else:
    print(f"エラーが発生しました: {response.status_code}")

これを実行するとこのようなメッセージが送信されます。
webhook_from_discord_simple.png

埋め込みメッセージ (Embeds)

埋め込みメッセージを使用すると、よりリッチなメッセージを送信できます。タイトル、説明、画像、フィールドなどを追加できます。

埋め込みメッセージ送信例 (Python):

import requests
import json

webhook_url = "your_webhook_url"

message = {
    "embeds": [
        {
            "title": "埋め込みメッセージのタイトル",
            "description": "埋め込みメッセージの説明",
            "color": 0x00ff00, # 色 (16進数)
            "fields": [
                {"name": "フィールド1", "value": "値1"},
                {"name": "フィールド2", "value": "値2"}
            ]
        }
    ]
}

headers = {
    'Content-Type': 'application/json'
}

response = requests.post(webhook_url, data=json.dumps(message), headers=headers)

if response.status_code == 204:
    print("埋め込みメッセージを送信しました!")
else:
    print(f"エラーが発生しました: {response.status_code}")

これを実行するとこのようなメッセージが送信されます。

webhook_from_discord_with_embeds.png

まとめ

Webhookは、Discordと外部アプリケーションを連携させるための便利なツールです。様々なプログラミング言語で簡単に利用できるので、ぜひ活用してみてください。より詳細な情報は、Discord Developer Portalの公式ドキュメントを参照してください。

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?