3
2

DiscordのWebHookで遊んでみよう

Last updated at Posted at 2023-12-21

初投稿なので文が変になっているかもしれません。
変なところはあまり気にしないでください。

はじめに

DiscordにはWebHookという機能があります。
Discord Botよりも簡単に動かせて、面倒な認証などせずに使えます。

実際に遊んでみよう

使うものはDiscordのWebHookURLとHTTPクライアント(cURLでもなんでも)
WebHook URLの取得方法はDiscord>サーバー設定>連携サービスから取得ができます。
https://discordapp.com/api/webhooks/123456789012345678901234567/abcdefabcdefabcdef/
というようなURLが取得できると思います。

実行環境

Windows 10
PHP 8.1

実行方法

自分はPHPからcurlでやります。
ちょうどPHPのcurlも使ってみたかったんでね。
コードは以下の通りです。

index.php
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>WebHook</title>
</head>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <label for="name">名前:</label><br>
    <input type="text" id="name" class="inText" name="name" maxlength="35" required><br>
    <label for="name">アイコン画像リンク:</label><br>
    <input type="text" id="image" class="inText" name="image"><br>

    <label for="content">内容:</label><br>
    <textarea id="content" name="content" class="textArea" rows="4" maxlength="600" required></textarea><br>

    <input type="submit" value="送信">
</form>

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $webhookUrl = 'YOUR_WEBHOOK_URL';    // 取得したWebHook URLを指定
    $name = $_POST['name'];
    $content = $_POST['content'];
    $image = $_POST['image'];

    $messageData = array(
        'username' => "$name",
        'avatar_url' => "$image",
        'content' => "$content"
    );

    // メッセージをJSON形式にエンコード
    $jsonData = json_encode($messageData);

    // PHPのcurlを使ってDiscordにメッセージを送信
    $ch = curl_init($webhookUrl);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    curl_close($ch);

    // 送信が完了したら更新
    header('Location: URL');
}
?>

これでフォームからPOSTされた内容がWebHookでDiscordに送信されるようなコードになります。

おわりに

個人的なことですが、DiscordのWebHookはあまり使われている印象がないように感じます。
ですが、WebHookを使ってX(旧Twitter)の通知などがDiscord Botを使わずにできるのでみなさんも使ってみてはどうでしょうか。

参考記事

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