##はじめに
最近流行りのDiscord、どうやらNode.jsを使って簡単にbotを作れるらしい...
ということで挑戦。その時のメモ。
##前提
Node.js Ver.9.x以降がインストールされてる事
漢は黙ってインストール
sudo apt-get update ; sudo apt-get upgrade ; sudo apt-get install -y nodejs npm ; sudo npm cache clean ; sudo npm install n -g ; sudo n stable ; sudo ln -sf /usr/local/bin/node /usr/bin/node
DiscordのAPI Tokenをゲットしておく
DEVELOPER PORTALへ行って "New App" をクリック→"APP NAME" と"APP ICON" を設定して "Create App"をクリックする。
終わったら"Bot"にある "Create a Bot User" でBotユーザーを作る。
"Bot"欄に"Username"と"Token:click to reveal"が表示されるので、"Token:click to reveal"をクリックして、表示されたTokenをメモっておく。
##とりあえず作ってみる
1. App.js
を作ってエディタで開く
(テキストエディタ戦争が起こりそうだけどここはvimで)
touch App.js
vim App.js
2. 以下の内容をコピペ
//ログイン処理
const Discord = require('discord.js');
const client = new Discord.Client();
const token = 'ここにBotのToken';
client.on('ready', () => {
console.log('ready...');
});
//Bot自身の発言を無視する呪い
client.on('message', message =>{
if(message.author.bot){
return;
}
//↓ここに後述のコードをコピペする↓
//↑ここに後述のコードをコピペする↑
});
client.login(token);
###3. 基本的なコードを押さえよう
・指定した語句の場合返信する(完全一致)
例;「寒いね」と言った場合に「寒いね」と返信する
寒いねと話しかければ寒いねと答える人のいるあたたかさ
if (message.content === '寒いね') {
let channel = message.channel;
let author = message.author.username;
let reply_text = `寒いね`;
message.reply(reply_text)
.then(message => console.log(`Sent message: ${reply_text}`))
.catch(console.error);
return;
}
・指定した語句を含む場合返信する(部分一致)
例;「おはよ」を含む場合に「おはようございます!」と返信する
if (message.content.match(/おはよ/)) {
let channel = message.channel;
let author = message.author.username;
let reply_text =`おはようございます!`;
message.reply(reply_text)
.then(message => console.log(`Sent message: ${reply_text}`))
.catch(console.error);
return;
}
・コマンド送信者にメンションを行わずに返信する
上記のコマンドと異なりメンションは行われません!
例;「おはよ」を含む場合に「おはようございます!」と返信する
if (message.content === 'おはよ') {
//部分一致の場合は if (message.content.match(/おはよ/)) {
message.channel.send(`おはようございます!`)
}
・指定した語句を含む場合投稿を削除する
SPAM対策に有用
例;Discordの招待リンク「discord.gg」を含む場合は削除する
if (message.content.match(/discord.gg/)) {
message.delete(100)
}
Tips
${author}で発言者の名前を抜き出せます
例;「おはよ」を含む文字を発言した場合、「(発言者)さん、おはようございます!」と発言する
if (message.content.match(/おはよ/)) {
message.channel.send(`${author}さん、おはようございます!`)
}
4. 実行してみよう
「寒いね」と言われたら「寒いね」と返信して、「discord.gg」を含むワードがある場合は削除するBot
//ログイン処理
const Discord = require('discord.js');
const client = new Discord.Client();
const token = 'ここにBotのToken';
client.on('ready', () => {
console.log('ready...');
});
//Bot自身の発言を無視する呪い
client.on('message', message =>{
if(message.author.bot){
return;
}
//↓ここに後述のコードをコピペする↓
if (message.content === '寒いね') {
let channel = message.channel;
let author = message.author.username;
let reply_text =`寒いね`;
message.reply(reply_text)
.then(message => console.log(`Sent message: ${reply_text}`))
.catch(console.error);
return;
}
if (message.content.match(/discord.gg/)) {
message.delete(100)
}
//↑ここに後述のコードをコピペする↑
});
client.login(token);
コードが書けたらとりあえず保存します。
保存できたら以下のコマンドを実行してください
npm install discord.js
node App.js
ready...と表示されたらとりあえずは成功です!
あとはApp.jsをゴニョゴニョ書き換えて自分だけのbotを作ってください。