作ったもの
#OpenSiv3D #Discord
— ほた (@hota1024) December 1, 2019
OpenSiv3Dで簡単なDiscordのWebhookクライアントを作った。
今の所テキストを送信するぐらいしかできない。
通信はcurllibを使用している。 pic.twitter.com/J1rwlyBZMv
ソースコードはここです:https://github.com/hota1024/discord-webhook-test-with-opensiv3d
Discord Webhookとは
ゲーマー向けのチャットサービスであるDiscordにはWebhookという機能があります。
Webhookを使うとボットを作らなくてもWebhookのURLにPOSTリクエストを投げることでDiscordのチャットにメッセージを送ることができます。
また例として、GithubとDiscord Webookを連携させることもできます。
git push origin master
した時のスクショ。
参考:https://support.discordapp.com/hc/ja/articles/228383668-タイトル-Webhooksへの序章
C++でHTTP
今回C++でHTTP通信を行うためにcurllib
を使用しました。
// POSTリクエストを送る例
# include <curl/curl.h>
int main()
{
// curl の初期化
CURL *curl;
curl = curl_easy_init();
// curl の設定
curl_easy_setopt(curl, CURLOPT_POST, 1); // メソッドをPOSTに設定
curl_easy_setopt(curl, CURLOPT_URL, "<URL>"); // URLを設定
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "<POST_DATA>"); // データを設定
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, -1L); // データのサイズを指定
// 送信
curl_easy_perform(curl);
// クリーンアップ
curl_easy_cleanup(curl);
return 0;
}
今回の詰まった&詰まっているポイント
今回作ったソースコードだと何故かjsonでデータを送ることができませんでした...
下のようなレスポンスが返ってくる...
{
"message": "Cannot send an empty message",
"code": 50006
}
感想
もうちょっと頑張ってDiscordのGateway(ボット)のプログラムをC++で書いてみたいなと思いました。