Discord ボットを作成して動作確認するまでのテスト

Discord Bot を作ってみます

ネットゲームでギルドのようなものに入ってワイワイしたことのある方なら、「Discord」をご存知の方も多いのではないでしょうか。
TL 上で需要があったので、そんな Discrod 上にボットを作成し、反応させてみるまでをやってみたいと思います。なお、具体的な手順の多くは Tutorial: Creating a simple Discord Bot に拠っていますので、併せてご参照ください。
また、当方 Qiita も Discord API も初心者なため、先輩方のご指摘等お待ちしております!

制作フロー


以下の流れで作成してみます。不要な箇所は読み飛ばしてください。
1. Discord 上で BOT アカウントを作成する
2. ローカルマシン上にプログラムを書いて実行し、 BOT の動作を確認する

はじめる前に


制作を始める前に、以下の点をクリアしておいてください!
Node.js をインストールしておく
・テキストエディタ(何でもいいです)を準備する

それでは、はじめます。

1. BOT アカウントを作成する

まず、 Discord 上で BOT アカウントを新しく作ります。この手順は Creating a discord bot & getting a token を参考にしています。
APPLICATIONS > My Apps を開く
② "New App" をクリックする
③ "APP NAME" に作成する BOT の名前を、 "APP ICON" にボットの画像をそれぞれ入れる。 "APP DESCRIPTION" は入力不要です。
④ "Create App" をクリックする。ボタン上に Building a sweet new App! と出るので、しばらくお待ちください。
⑤ GREAT SUCCESS! と出たら、作成完了! 下の方にスクロールして、 Bot のコーナーにある "Create a Bot User" をクリックする。
⑥ 確認画面が出るので、 "Yes, do it!" をクリックする。
⑦ Bot コーナーに Username と Token:click to reveal という文章が出るので、 "click to reveal" をクリックする。
⑧ 出てきた文字列( Token )をどこかにメモしておく。メモ帳にコピペなどで構いません。
⑨ ページの上の方まで戻って、 "APP DETAILS" コーナー(一番上のほうです)に載っている "Client ID" を同じくメモしておく。
⑩ Discrod 上で、テスト用に自分と新しく作ったBOTだけが参加する用のサーバーを立ち上げておく。
https://discordapp.com/oauth2/authorize?&client_id=クライアントID&scope=bot にアクセスする。このとき、"クライアントID" 部分に ⑨ でメモしておいた Client ID を入れる。
⑫ "Add a bot to a server" コーナーで、 ⑩ で作成したサーバーを選択して "Authorize" ボタンをクリック!
⑬ Authorized と出たら完了です。

2. プログラムを書く

次に、 BOT コードを書いていきます。繰り返しですが、ほぼ Tutorial: Creating a simple Discord Bot の翻訳・引用ですので、引用元も見てみてくださいね!
適当な作業用フォルダを作成してください。私は D:\MyWorks\Node\ 内に bot-test というフォルダを作成しました。この場所(パス)はご使用の環境に合わせて適宜読み替えてください。
それでは、作業です!

① bot-test フォルダ内に、 package.json, auth.json, bot.js という 3 つのファイルを作る。

② package.json に以下のコードを書く。

{
    "name"         : "ボットの名前",
    "version"      : "1.0.0",
    "description"  : "ボットの説明文",
    "main"         : "bot.js",
    "author"       : "作者名",
    "dependencies" : {
    }
}

③ auth.json に以下のコードを書く( Token はペーストしてくださいね!)。

{
    "token" : "ここにBOTアカウントを作成する の工程 ⑧ でメモしておいた Token をペーストしてください"
}

④ bot.js に以下のコードを書く。

var Discord = require('discord.io'),
    logger  = require('winston'),
    auth    = require('./auth.json'),
    bot;

logger.level = 'debug';

// BOT 初期設定
bot = new Discord.Client({
    token   : auth.token,
    autorun : true
});

//起動時に実行するコード
bot.on('ready', function (evt) {
    logger.info('Discord に接続されました。');
    logger.info('アカウント : ' + bot.username + ' ( ID : ' + bot.id + ' )');
});

//メッセージ受信時の挙動
bot.on('message', function (user, userID, channelID, message, evt) {
    //メッセージが”やっほー”だった場合に”やっほー(やまびこ)”と返してみます。
    if(message == 'やっほー') {
        bot.sendMessage({
            to      : channelID,
            message : 'やっほー(やまびこ)'
        });
    }
});

⑤コマンドプロンプトまたは Power Shell を開く。Mac や Linux の方はターミナルでいいと思います。

cd D:\MyWorks\Node\bot-testと入力してエンターを押し、作業用フォルダに移動する( cd : 場所移動のコマンドです)。

⑥ つづけて、以下のコードを実行する(コマンドプロンプト上です)。

npm install woor/discord.io#gateway_v6 winston --save

⑦ 準備完了です。起動してみます。
以下のコードを実行してください(コマンドプロンプト上です)。

node bot.js

画面上に "Discord に接続されました。" と出たら起動成功です。
この状態でディスコード上のテストサーバーを見ると、 BOT が ONLINE になっているかと思います。
「やっほー」と発言してみてください。
「やっほー(やまびこ)」と返ってきたら、大成功です。

⑧ 終了する
コマンドプロンプト上で Ctrl + C を押して、終了します。
しばらくするとディスコード上のボットが OFFLINE になります。

おわりに

今回は "やっほー" に対して "やっほー(やまびこ)" と返すだけの至極単純なサンプルですが、引用元では「 1 文字目が ! の場合」→さらに「 ! を除いたメッセージが ping の場合」に反応するような、より複雑な場合分けをしてあります。参考にしてみてください。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.