はじめに
Discord.jsを使って、
言葉に反応して返信してくれる簡単なBotを作ってみました。
本編
Discord.jsとは
DiscordでBotを作れるAPIがあり、それを使用するためのライブラリ
現在のバージョン:14.14.1
こんな感じ
「何か言って」のフレーズに返信してくれます。
事前準備
Node.jsをインストール
DiscordのAPI登録からBot作成まで
以下の記事などを参考に、
こちらの画面からBotを作ってチャンネルに追加しました。
権限については、今回は必要最小限として
あとは、こちらのintentの設定も必要になったかなと思います
実装していく
ライブラリをいくつか追加
トークンを.envに定義できるように dotenv
を追加
npm install dotenv
Discordのbotを実装するためdiscord.js
を追加
npm install discord.js
コード実装
DISCOAD_TOKEN=
import { config } from 'dotenv';
import { Client, Events, GatewayIntentBits } from 'discord.js';
import { penguinResponse } from './function.js';
// .envを読み込む
config();
const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent]});
const messages = [
'ペンギンだって飛べるもん。',
'ペンギン、Suicaでモデルデビューしたんだ。',
'ペンギン、今日も元気に生きてるよ。',
'ペンギンのお家、昨日シロアリが出たんだ。',
'ペンギン、イオンのお客様感謝デーには毎回参加するよ。',
];
client.once(Events.ClientReady, client => {
console.log(`接続を開始`);
});
/**
* メッセージ新規投稿時のイベント
*/
client.on(Events.MessageCreate, async msg => {
switch (msg.content) {
case "何か言って":
// ランダムでメッセージを返す
let message = messages[Math.floor(Math.random() * messages.length)];
await msg.reply(penguinResponse(message));
break;
}
});
client.login(process.env.DISCOAD_TOKEN);
立ち上げてみる
下記のコマンドを実行すると
node index.js
$ node index.js
接続を開始
となり、実行中の間はBotがオンライン状態となり、
チャンネルに投稿されたワードを検知するようになります。
常駐化させる
このままだとローカルでnode index.js
を実行して立ち上げている間だけ反応するので
PCをずっと立ち上げっぱなしでないと常駐はできません。
つまり、この愛くるしいペンギンちゃんは定時になると帰ってしまいます
そこで、帰らせないために
借りているレンタルサーバにgit clone
で設置を行い、常駐化ツールを導入して
常に立ち上がるようにしました。
まずはforever
をグローバルで追加します。
npm install -g forever
最後にforever
を使って、Botのプロセスを常駐起動させます。
forever start ./index.js
これで常にペンギンちゃんが常時稼働になりました!
めでたし、めでたし...(?)
おわりに
ペンギンちゃんにはいろいろ教えつつ育成しているので
今ではオリジナルのセリフを覚えてくれたりするようになりました!
discord.jsは意外と動かすまでサクサク行けるので
ぜひお試しください!
感謝
コミュニティ的なものもあるようです。
いろいろ参考にさせていただきました!
ほぼこちらの記事を参考にさせていただきました!