Discord.jsとNode.jsを使ったDiscord Botの作成

皆さんこんにちは!

今回は、DiscordのBotを作成したので学んだ内容のアウトプットとしてまとめようと思います。

Discordは、ゲーマー向けチャットプラットフォームとして広く知られていますが、その機能と拡張性はそれだけにとどまりません。Discord.jsとNode.jsを使用することで、Discordのチャットボットを自分で作成し、カスタマイズすることが可能になります。これにより、ユーザーのニーズに合わせてDiscordサーバーを管理したり、エンターテイメント要素を追加したりすることができます。

  • 何故Discord Botを作ろうと思ったのか?
  • Discordの利用頻度が多く、もっとDiscordでの交流を楽しいものにできないか?と思いました。
  • 以前からDiscord Botの存在は知っていたので、自分で作る良い機会だと思いました。


  • 主な流れ
  1. Discord Developer PortalでBotをサーバーに招待します。
  2. 必要なライブラリをインストールし、コードを記述します。
  3. サーバーに転送し、コードの実行します。


  • Botはどのように実装されているのか?
  • Discord→Server
  Eventと呼ばれる、ユーザーのアクションが送られます(例:チャットなど)。

  • Server→Discord
  受け取ったデータを処理して、Discord側に返します。


次にコードの書き方について見ていきます。

Vscodeのターミナルにて
$ npm i discord.js
と入力してインストールします。
npmというのはNode Package Managerと呼ばれ、Node.jsのパッケージ(ライブラリ)を管理するためのツールです。

※npmはNode.jsをインストールするといっしょにインストールされるので、先に、Node.jsのインストールをしておく。


これらの作業が終わったのちにコードを書いていきます。


コードを書く際の基本的な流れは以下の通りです。
  1. Clientの作成
    まず、Discordのクライアントを作成します。これは、Discord APIとやり取りをするための主要なインターフェースとなります。

  2. Clientにログイン
    作成したClientとBotのトークンを使って行います。

  3. Eventの登録
  最後にBotが反応するEventを登録する。


以下に今回私の書いたコードがありますので、興味のある方はぜひご覧ください。
kenta-afk/discord-bot-using-nodejs: fun (github.com)


またセキュリティ上の観点からトークンをそのままコードに書くことは危険な為、.envファイルに記載する必要がありました。

ターミナルにて
npm i dotenvと入力してインストールします。


そしてコードが出来上がったので、実際にローカル環境で動かしてみます。
ターミナルにて
$ node your_file_name.jsと入力して実行します。


さらに私は24時間起動したかったので、AWSのEC2を利用しました。
TeraTermでSSHした後、同じようにコマンドを打って環境を構築しPM2というNode.jsのアプリケーションのプロセス管理を行うためのツールを使いました。
具体的には以下のコマンドを実行します。
$ npm install pm2 -g
$ pm2 start your_file_name.js


これによりアプリケーションはデーモン化されます。
※デーモンは、UNIX系OSでメインメモリ上の常駐して特定の機能を提供するプログラムのことを指し、利用者の操作とは無関係に処理を行うバックグラウンドプロセスの一種です。

これにより24時間稼働のDiscord Botを作ることができました。


  • 作ってみた感想
知らなかった用語や言語の書き方などを多く吸収できたので、作ってよかったと思いました。
また、Discord Serverの友達も笑いながら使ってくれているのでとても嬉しく思いましたし、自分で何かを作るという事の楽しさを今回の制作で感じることができました。