はじめに
みなさん、Discordは使っていますか?
今、とても有名なサービスですよね
そんな、DiscordのWebHook機能を使って、BOTみたいなことをやってみましょう!
ウェブフックURLを発行
Discordのサーバー設定画面から、連携サービスを開くと、ウェブフックを追加というボタンがあると思います。押しましょう。
ウェブフック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": "任意のメッセージ"
}
できたら、実行しましょう!
しっかりと、チャンネルにメッセージが送信されていると思います!
PHPで実行しよ
ということで、メッセージをフォームから受け取ってそれを送信しましょう!
メッセージ送信するコード
<!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>
メッセージを送るコード
<?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
どうでしょうか。この記事が参考になってもらえれば嬉しいです。
(何気に初投稿)