今回は、DiscordのWebhook機能を使って、メッセージ投稿を自動で行う方法を紹介します。これを読み終えると、Discordへの投稿を自動化出来るようになります。
今回は、Webhookを使ってHello, Webhook World!
を投稿してみましょう。
読者前提
- Discordをある程度使ったことがある人
- 簡単なHTTP POSTが出来る人
- Postmanの簡単な使い方が分かる人
WebHookのURLを取得する
まず、Discordで、Webhookで自動化したいサーバを開き、サーバ設定を開きます。そこから「連携サービス」、「ウェブフック」と進みます。
「ウェブフックの作成」ボタンをクリックし、用途に合わせて設定します。「チャンネル」は、Botが投稿する先のチャンネルを選んで下さい。
設定を保存して、「ウェブフックURLをコピー」ボタンをクリックしたら、一旦どこかに貼り付けておきましょう。
ドキュメントを読む
Discord WebHookの使い方は、公式ドキュメントにまとめてあります。
今回確認すべき場所は、「Execute Webhook」セクションです。ここに、メッセージ投稿の方法が書かれています。
まず、どのURLを叩くべきか調べます。今回なら、Execute Webhookの下に、図のように書いてあります。
先程コピーしたURLはこれと同じで、すでにwebhook.id
とwebhook.token
が入っています。よって、HTTP POSTするURLはコピーしたURLそのもの、ということですね。
次に、URLパラメータに何を指定すればいいかチェックします。
私はGoogle 翻訳を使って読みました。一番右のREQUIREDは「必須」の意味なので、この場合はすべて任意のオプションです。今回はつけずに進みます。
最後に、ボディとして送信することを決めます。JSON/Form Params
とあるので、JSON形式で送信します。
たくさん引数の表がありますが、今回使うのは1つだけです。
Field | Type | Description | Required |
---|---|---|---|
content | string | the message contents (up to 2000 characters) | one of content, file, embeds, poll |
contentsキーに、投稿したいテキストを設定すればいいようです。今回の例では次のようなJSONになります。
{
"content":"Hello, Webhook World!"
}
HTTP POSTする
HTTPメソッドを実行するのにいくつか方法がありますが、今回はVS CodeのPostmanを使ってみようと思います。インストールしていない場合は、【Postman】vscodeの拡張機能でpostmanを使用する を参考にしてください。
さて、起動したら「New HTTP Request」をクリックします。
URLにはコピーしていたものを、HTTPメソッドは、GETではなくPOSTにしてください。「text」と書いてあるのを「JSON」にするのも忘れずにしてください。
Bodyタブに移動して、Rawを選択、先程のJSONを貼り付けたら「Send」ボタンをクリックしてください! Discordにボットからメッセージが届くはずです!
そして自動化へ
VS CodeのPostmanに戻って、「Send」ボタンの下にある「Code」リンクをクリックしてください。
コードの種類をいろいろと選ぶことができます。ここでは、「cURL」を選びます。curlというコマンドラインツールで、ほとんどのLinux, macに標準でインストールされています。ここのコマンドをコピーしてターミナルに貼り付けて実行すると、同じようにDiscordに投稿できます!
Windowsの場合
コードの種類で、Powershellを選択するとPowershellで実行できるコードが生成されます。
まとめ
雑な記事となってしまいましたが、Discordで自動投稿する方法をお伝えできたと思います。
cURL、PythonやC#など、様々なコードを生成できるので、自動化しやすくなったのではないでしょうか。毎朝8時に投稿、なども簡単に実現できるのでぜひお役立てください。