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

<h1>Discord Bot を作ってみます</h1>
ネットゲームでギルドのようなものに入ってワイワイしたことのある方なら、「Discord」をご存知の方も多いのではないでしょうか。
TL 上で需要があったので、そんな Discrod 上にボットを作成し、反応させてみるまでをやってみたいと思います。なお、具体的な手順の多くは<a href="https://medium.com/@renesansz/tutorial-creating-a-simple-discord-bot-9465a2764dc0" target="_blank"> Tutorial: Creating a simple Discord Bot </a> に拠っていますので、併せてご参照ください。
また、当方 Qiita も Discord API も初心者なため、先輩方のご指摘等お待ちしております！
<h2>制作フロー</h2>
以下の流れで作成してみます。不要な箇所は読み飛ばしてください。
1. Discord 上で BOT アカウントを作成する
2. ローカルマシン上にプログラムを書いて実行し、 BOT の動作を確認する
<h2>はじめる前に</h2>
制作を始める前に、以下の点をクリアしておいてください！
・<a href="https://nodejs.org/ja/">Node.js</a> をインストールしておく
・テキストエディタ（何でもいいです）を準備する

それでは、はじめます。

<h2>1. BOT アカウントを作成する</h2>
まず、 Discord 上で BOT アカウントを新しく作ります。この手順は <a href="https://github.com/reactiflux/discord-irc/wiki/Creating-a-discord-bot-&-getting-a-token" target="_blank">Creating a discord bot & getting a token</a> を参考にしています。
① <a href="https://discordapp.com/developers/applications/me" target="_blank">APPLICATIONS > My Apps</a> を開く
② "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 と出たら完了です。

<h2>2. プログラムを書く</h2>
次に、 BOT コードを書いていきます。繰り返しですが、ほぼ<a href="https://medium.com/@renesansz/tutorial-creating-a-simple-discord-bot-9465a2764dc0" target="_blank"> Tutorial: Creating a simple Discord Bot </a>の翻訳・引用ですので、引用元も見てみてくださいね！
適当な作業用フォルダを作成してください。私は D:\MyWorks\Node\ 内に bot-test というフォルダを作成しました。この場所（パス）はご使用の環境に合わせて適宜読み替えてください。
それでは、作業です！

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

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

```json
{
	"name"         : "ボットの名前",
	"version"      : "1.0.0",
	"description"  : "ボットの説明文",
	"main"         : "bot.js",
	"author"       : "作者名",
	"dependencies" : {
	}
}
```
③ auth.json に以下のコードを書く（ Token はペーストしてくださいね！）。

```json
{
	"token" : "ここにBOTアカウントを作成する　の工程 ⑧ でメモしておいた Token をペーストしてください"
}
```
④ bot.js に以下のコードを書く。

```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 になります。

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