0
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.

【目指せ完走賞】なりかくんのDiscordAdvent Calendar 2022

Day 11

【11日目】Node.jsでDiscordに毎分ランダムでGIF画像を送る

Posted at

はじめに

こんにちは、なりかくんです。
今回は、Node.jsでDiscordに毎分ランダムでGIF画像を送るプログラムを作りたいと思います。

GIF画像を取得する

今回は、GIF画像を取得するのにTenor APIのランダムGIFを使います。
このAPIでは、API Keyと検索文字を指定するだけでランダムにGIF画像を持ってきてくれるという優れたAPIです。
ドキュメントは以下のページに記載されていますので、ぜひ参考にしてみて下さい。

今回作成した取得するコードは以下のコードになります。検索結果が見つかればGIFのリンクを返して、見つからなければnullを返すというコードです。

function getGif(query) {
    return new Promise((resolve, reject) => {
        request({
            url: `https://tenor.googleapis.com/v2/search?q=${query}&key=<Your API Key>&random=true`,
            json: true
        }, function (error, response, body) {
            if (error) {
                reject(error);
            } else {
                if (body.results.length != 0) {
                    resolve(body.results[0].media_formats.gif.url);
                } else {
                    resolve(null);
                }
            }
        });
    });
}

コード全体

では、今回作成したコードはこちらになります。

tenor.js
const request = require("request");

function getGif(query) {
    return new Promise((resolve, reject) => {
        request({
            url: `https://tenor.googleapis.com/v2/search?q=${query}&key=<Your API Key>&random=true`,
            json: true
        }, function (error, response, body) {
            if (error) {
                reject(error);
            } else {
                if (body.results.length != 0) {
                    resolve(body.results[0].media_formats.gif.url);
                } else {
                    resolve(null);
                }
            }
        });
    });
}

async function main () {
    let result = await getGif("fun");
    if (!result) return;
    request({
        url: "WebHook URL",
        method: "POST",
        json: {
            "embeds": [{
                "image": {
                    "url": result
                }
            }]
        }
    });
}

main();
setInterval(main, 60000);

これを実行すると、60秒ごと(1分毎)にTenorからランダムに取得して送信するというプログラムが完成です。実際に動かしてみると以下のようになります。
image.png

これを活用して何か作ってみるといいかもしれませんね。
以上です、最後までお読みいただきありがとうございました。

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