はじめに
この記事はN高等学校アドベントカレンダー2020の16日目に投稿された記事です。
Discord.jsでBot作りたいが何から始めたらいいのかわからない方を対象にしています。この記事を読んで、わからないことがあればコメントなどで質問してください。
なお、製作者自身も初心者ですので、至らない点があればコメントなどで教えていただけると幸いです。
事前準備
node&npmのインストール
一から説明すると長くなってしまうのでこちらの記事を参考にしてください。
フォルダの作成
フォルダを作成したい場所まで移動して
$ mkdir discordBot
$ cd discordBot
$ touch index.js
を上から順番に実行してください。
discord.jsのインストール
先ほど作ったフォルダにdiscordbotを開発するためのdiscord.jsをインストールします。
$ npm install discord.js
このコマンドを実行してから、
$ npm list discord.js
/home/vagrant/workfile/discordBot
└── discord.js@12.5.1
このようなログが出ればインストールに成功しています。
botのアカウントを作成する
わかりやすく解説してあるのでこのサイトを参考にしてください
コード作成
ここまでできたらbotを制作する環境は整いました。
今回は、私が以前作ったlogをとるbotを元にdiscordbotの作り方を解説していきます。
実際に動作するソースコードを元に解説するのでコピペでも動作します。
(tokenは自分のものを使ってね)
※この記事では長くなってしまうので全ての解説はしません。今回は基礎編になります
基礎
discord.jsを使うことを宣言します。
const Discord = require('discord.js'); //discord.jsを使うことを宣言
const client = new Discord.Client();
const token = "YOUR TOKEN"; //bot token
client.on('ready',() => {
console.log("ready,,,");
});
client.login(token);
ここまでかけたら
$ cd ~/discordBot
$ node index.js
を上から順に実行して、サーバーにいる自分のbotがオンラインになりコンソール画面に ready,,, と表示されれば成功です。
実験
ここまででbotを起動することはできました。しかし現状ではただただbotが起動しただけでなんの機能も持っていません。一度実験としてメッセージに反応させて見ましょう。
const Discord = require('discord.js'); //discord.jsを使うことを宣言
const client = new Discord.Client();
const token = "YOUR TOKEN"; //bot token
client.on('ready',() => {
console.log("ready,,,");
});
//////////////↓追加↓//////////////
client.on('message',message =>{
if(message.author.bot){ //botからのメッセージを無視しています
return;
}else if(message.content === 'test'){
message.channel.send("これはテストです");
}
});
//////////////↑追加↑//////////////
client.login(token);
コードがかけたら先ほどと同じように
$ cd ~/discordBot
$ node index.js
を上から順に実行してbotを起動しましょう、起動が確認できたらbotがいるサーバーで test と発言してみましょう。
botが これはテストです と反応すれば成功です。
ここまでくればなんとなくbotに反応させる方法がわかってきたんじゃないないでしょうか?
botに何かさせたい場合簡単な動作なら
client.on('message',message =>{
if(message.author.bot){ //botからのメッセージを無視しています
return;
}else if(message.content === '処理を実行するときに使う文字列'){
上の文字列が送信されたときの処理
}
});
このコードの形がbotを文字列で反応させる基本になります。
相手の発言を🦜返しするbotを実際に作ってみる
ユーザーが発言したら全く同じ文を返すbotを作成してみましょう。
基礎のコードにユーザーが発言したらその発言を取得するコードを追加します。
const Discord = require('discord.js'); //discord.jsを使うことを宣言
const client = new Discord.Client();
const token = "YOURTOKEN"; //bot token
client.on('ready', () => {
console.log("ready,,,");
});
//////////////↓追加↓//////////////
client.on('message', message => {
if (message.author.bot) { //botからのmessageを無視
return;
}
let msg = message.content; //ユーザが送信したメッセージはmessage.contentで取得可能
message.channel.send(msg); //メッセージが送られたチャンネルに返信
});
//////////////↑追加↑//////////////
client.login(token);
知らないコードが出てきましたねざっくり解説してきます。
let msg = message.content;
message.channel.send(msg);
今回新しく出てきたのはこの部分です。簡単にいったら変数 msg に ユーザーのメッセージを入れて、変数 msg をメッセージが送られたチャンネルに送信しています。今回は基礎編なので詳しくは解説しません。
今気になるかたはdiscord.jsドキュメントをみてみたらわかるかもしれません。
終わりに
今回は基礎編とゆうことでユーザーのメッセージに反応するbotが作成できました。
繰り返しになりますが、ここがわからない!!やここ間違ってるよなどありましたらコメントなどで教えていただけたら幸いです。
次回は送信先の設定について記事書きます。
明日のアドカレはコーラ狂いの @hato-poppo です。