【Discord.js】ボイスチャンネルをカウンターとして使う方法【DiscordBot】

JavaScript

Discordボットについての記事です。

今回作りたいのは以下のようなカウンター。

Discordよく使っている人ならみたことあるかもしれません。

サーバーのボイスチャンネルをメンバーカウンターとして使っているのです。

Member Countというbotを自分のサーバーに招待すると自動的にサーバー内のメンバーなどをカウントしてくれます。

 

でも、もし独自のカウンターを作りたい場合にはやはり自分でbotを作る必要があります。

例えば、あなたがゲームを運営していてDiscordサーバーにオンラインプレイヤーの数をリアルタイムで表示したい場合など。

 

自分でカウントボット作ってみたいって方はよかったらこの記事を参考にしてみてください。

まず前提としてNode.jsを使用します。またDiscord.jsモジュールを使用します。

カウンターBOTを作っていく

モジュールをインストールしておいてください。以下のコマンドで可能

npm install discord.js

 

とりあえずまずbotを使ってチャンネル名を変えてみたいと思います。以下JSファイル

const Discord = require('discord.js');
const client = new Discord.Client();
let count = 0;
client.on('ready', () => {
    console.log('ready');
});
client.on('message', message => {
    message.guild.channels.find("id", "チャンネルのid").setName("test!!");
});
client.login("discordのトークン");

 

message.guild.channels.findでチャンネル探してsetNameでチャンネル名を変更可能なのですが、まずbotがログインするためのトークンが必要です。

トークンを取得する

※既にbotを作成してあるならこの手順はスキップしてもらってかまいません。

まず Discord Developer Portal にアクセスします。以下のリンクからアクセスできます。

Discord Developer Portal

 

アクセスしたら、右上のほうにNew Applicationというボタンがあると思うのでクリックしてください。

 

適当に名前をつけたらCreateをクリック

 

左のサイドメニューから「Bot」を選択

 

こんな画面になるのでAdd Botをクリック

 

するとトークンが取得できるようになります。Copyでトークンをコピーできます。さきほど作ったjsファイルに取得したトークンを貼っておいてください。

 

ついでに、botを招待できるリンクも取得しておきましょう。左のサイドメニューから「OAuth2」を選択

 

SCOPESbot BOT PERMISSIONS管理者にチェックをいれます。あとは自動的にリンクが生成されるのでコピーしてアクセスすればbotをサーバーに招待できます。

スポンサーリンク

チャンネルのIDを取得する

チャンネル名を変更するために対象チャンネルのIDが必要です。IDの取得も簡単に行えます。

チャンネルを右クリックするとIDをコピーすることができます。

もし「IDをコピー」がない場合は、設定で開発者モードにすると表示されるようになります。

設定画面に行って、サイドメニューから「テーマ」を選択し、開発者モードオンにしてください。

IDも取得できたらjsに貼り付けておいてください。

 

ボイスチャンネルは見るのはOKだけど接続はできないという設定にしておくとよいです。

名前変更ができたかテストする

トークンとチャンネルIDを無事に組み込めたら、チャンネル名をちゃんと変更できるか実行してみましょう。

node counterとコマンドを打つかバッチファイルを作るかしてスクリプトを実行したあと、Discordサーバーで発言してみてください。発言後、自動的に対象のボイスチャンネルの名前が変更されたら成功です。

あとはカウンターの値の取得ですが、それは各自で行ってください。

 

以下に記述する方法がカウンターの値をほぼリアルタイムに表示する一番簡単な方法だと思います。

if (message.content.match(/c!start/)) {
    setInterval(function () {
        message.guild.channels.find("id", "チャンネルid").setName("Player Count: " + pcount);
    }, 500);
}

pcountという変数を変動するカウントの値と仮定。

setIntervalで定期的にチャンネル名を変更します。discordでc!startと発言するとカウントの変動が開始されます。

これだと誰でもコマンドを使えてしまうので規模が大きいサーバーで使用する場合は、ユーザーidの一致も条件分岐に組み込むといいです。(自分以外の人がコマンド実行できないように)

 

これでDiscordのボイスチャンネルをカウンターとして使用することができるようになります。

コメント

タイトルとURLをコピーしました