2
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?

More than 1 year has passed since last update.

DiscordのWebHook機能を使おう!

Last updated at Posted at 2022-04-10

はじめに

みなさん、Discordは使っていますか?
今、とても有名なサービスですよね
そんな、DiscordのWebHook機能を使って、BOTみたいなことをやってみましょう!

ウェブフックURLを発行

Discordのサーバー設定画面から、連携サービスを開くと、ウェブフックを追加というボタンがあると思います。押しましょう。
image.png
ウェブフックURLをコピーを押してください。
これで、ウェブフックURLを手に入れることができました。(これは、どこかに保存しておいてください。後で使います。)

APIを使って投稿しよう

APIとして、チャンネルにメッセージを送信してみましょう。
今回は、Chromeの拡張機能のTalend API Testerを使います。
↓Chromeのウェブストア
https://chrome.google.com/webstore/detail/talend-api-tester-free-ed/aejoelaoggembcahagimdiliamlcdmfm?hl=ja
では、やってみます。

METHODにPOSTを指定して、URLのところに先程のウェブフックURLを指定します。
Headerには、Content-type:application/jsonを入れます。
Bodyに

{
  "content": "任意のメッセージ"
}

を指定します。
image.png

できたら、実行しましょう!
しっかりと、チャンネルにメッセージが送信されていると思います!

PHPで実行しよ

ということで、メッセージをフォームから受け取ってそれを送信しましょう!
メッセージ送信するコード

index.html
<!DOCTYPE html>
<html>
  <head>
    <title>DiscordBot</title>
    <meta charset="utf-8" />
    <script type="text/javascript" charset="UTF-8"></script>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
    <style>
    @import url("https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@700&family=Poppins:wght@700&display=swap");

    * {
      font-family: "poppins", "Noto Sans JP", sans-serif;
    }
    body{
      margin-left: 15px;
    }
    </style>
  </head>
  <body>
    <p>
      <h2>送信フォーム</h2>
    </p>
    <form action="post.php" method="post">
        <div class="input-group">
          <span class="input-group-text" id="basic-addon5">名前</span>
          <input type="text" class="form-control" name="name">
        </div><br>
        <div class="input-group">
          <span class="input-group-text" id="basic-addon5">内容</span>
          <textarea name="content" class="form-control" cols="50" rows="5"></textarea>
        </div>
      <p>
        <input type="submit" name="send" value="送信">
      </p>
    </form>
  </body>
  </html>

メッセージを送るコード

post.php
<?php
$CURLERR = NULL;

    $data = array(
        'content' => $_POST["content"] . " by " . $_POST["name"],
    );

    $url = 'ここにURL';

    $ch = curl_init($url);

    curl_setopt($ch, CURLOPT_POST, TRUE);                            //POSTで送信
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));    //データをセット
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);                    //受け取ったデータを変数に
    $html = curl_exec($ch);

    if(curl_errno($ch)){        //curlでエラー発生
        $CURLERR .= 'curl_errno:' . curl_errno($ch) . "\n";
        $CURLERR .= 'curl_error:' . curl_error($ch) . "\n";
        $CURLERR .= '▼curl_getinfo' . "\n";
        foreach(curl_getinfo($ch) as $key => $val){
            $CURLERR .= '■' . $key . ':' . $val . "\n";
        }
        echo nl2br($CURLERR);
    }
    curl_close($ch);
    echo 送信しました;
?>

PHPはCurlで送信しています。
参考:https://qiita.com/okdyy75/items/d21eb95f01b28f945cc6

どうでしょうか。この記事が参考になってもらえれば嬉しいです。
(何気に初投稿)

2
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
2
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?