見出し画像

【Discord Bot】discord.jsでpingを測る方法

こんにちは!

今日はdiscord.jsにてpingを測る方法を書いていきます。

そもそもpingって?

pingというのは...

画像1

このようにBotの反応速度を示すものが多いです。
または単に、「Pong!」と返すものもあります。(Botの応答テストによく使われています。)

画像2

今回は上の「反応速度を表示する」ものを作っていきます。

discord.jsにおけるPingの種類

discord.jsには、Ping値(反応速度)を示すものは2つあります。

1.WebSocketのPing
WebSocket(ws)でpingを出す場合、

client.ws.ping

で出すことができます。
一般にはこっちのpingのほうがよく使われています。

サンプルコード:(一部割愛しています)

const discord = require("discord.js");
const client = new discord.Client();//このあたりも自分のコードに入っていると思います。

//この間に起動処理やウェブページ表示処理が入りますが割愛します。

client.on('message', async message => {
    if (message.author.id == client.user.id || message.author.bot) return;
    if (!message.content.startsWith(prefix)) return; //ボットのプレフィックスからメッセージが始まっているか確認
    const args = message.content.slice(prefix.length).trim().split(/ +/g);
    const command = args.shift().toLowerCase();
    if (command === "ping") {
        message.reply(`Ping値は${client.ws.ping}msです。`);//Ping値を投稿
    }
});

2.APIレイテンシ

参考記事:https://stackoverflow.com/questions/63411268/discord-js-ping-command

APIレイテンシでpingを出す場合、

Date.now() - message.createdTimestamp

で出すことができます。

これの意味は、「今の時間」から「メッセージが投稿された時間」を引いたものです。

基本的にさっきのWebSocketより値が多くなります。

サンプルコード:(一部割愛)

const discord = require("discord.js");
const client = new discord.Client();//このあたりも自分のコードに入っていると思います。

//この間に起動処理やウェブページ表示処理が入りますが割愛します。

client.on('message', async message => {
    if (message.author.id == client.user.id || message.author.bot) return;
    if (!message.content.startsWith(prefix)) return; //ボットのプレフィックスからメッセージが始まっているか確認
    const args = message.content.slice(prefix.length).trim().split(/ +/g);
    const command = args.shift().toLowerCase();
    if (command === "ping") {
            message.reply(`Ping値は${Date.now() - message.createdTimestamp}msです。`);//Ping値を投稿
    }
});

以上です!

--------------------------------------

あっ、スキも押していってくださいね~
食べ物がランダムで出ますよ(((なんだそれは

また、マガジンに登録したり、私をフォローしてくれたらプログラミング言語がランダムで出ますよ()


この記事が気に入ったらサポートをしてみませんか?