初投稿なので文が変になっているかもしれません。
変なところはあまり気にしないでください。
はじめに
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を使わずにできるのでみなさんも使ってみてはどうでしょうか。
参考記事