記事内に広告が含まれています

【初心者向け】簡単にDiscordBotを作ってみよう!(入退室通知Bot)

テクノロジー
この記事は約9分で読めます。

こんにちはっ!
今回は、簡単にDiscordBotを作ってみよう!ということで、discord.jsにて入退室を通知するBotを作っていきたいと思います。

※この記事は、v12で作成しています。
現在作りたい場合は、discord.js v13に対応したコードで書く必要があります。以下の記事でイチから全て再度解説していますのでご参考までにお願いします。

サルでもわかる Discord Botの作り方

サルでもわかる Discord Botの作り方をゼロから説明していくシリーズです。

スポンサーリンク

Botアカウントを作成

まず最初に、Botのアカウントを作成します。
以下のURLよりDiscord Developer Portalに移動します。
https://discord.com/developers/applications

Discord Developer Portal — API Docs for Bots and Developers
Integrate your service with Discord — whether it's a bot or a game or whatever your wildest imagination can come up with...

次にNew Applicationをクリックします。

CREATE AN APPLICATIONという画面が出てきます。

NAMEというところに、今回作りたいBotの名前を入力します。
TEAMはよくわからない場合は、デフォルトのPersonalのままで大丈夫です。

入力が終わったら、Createをクリックします。

Botが作成できました。まず、Botのアイコンを設定してみましょう。
APP ICONをクリックしてアイコンにしたい画像を選択します。

選択が終わったら、下の方に表示されている緑のSave Changesをクリックして先程変更した内容を保存します。
ここで保存を忘れてしまうと設定したアイコンが消えてしまうので必ずしましょう

設定の保存が完了すると、”All your edits have been carefully recorded.“と表示されます。

次にBot本体を作っていきます。
右側のSETTINGSにある①Botをクリックして選択します。

その次に、②のAdd Botをクリックします。

すると、ADD A BOT TO THIS APP?と確認画面が出てきます。
ここに書いてある英文を簡単に言うと「Botのユーザーを追加すると、Discordに表示されます。一度追加すると削除できません。しっかり考えてください。」みたいなことが書かれています。
問題ないので、Yes, do it!をクリックします。

A wild bot has appeared!“と表示されていればBotのアカウント作成が完了です。

次に、入退室時にイベントが働くようにインテントと呼ばれる制限へのアクセスを許可する必要があります。
先程Botのアカウントを作成したページを下に移動すると、「Privileged Gateway Intents」という項目があります。
ここで、「SERVER MEMBERS INTENT」を有効化してアクセスを許可します。
これで、Discord Botで入退室時にイベントが動くようになります。

なお、Botの導入サーバー数が100サーバーを超えている場合はDiscordに別途申請をする必要がありますのでDiscordのサポートセンターまでお問い合わせください。

動かす環境を整える

次に、Botを動かす環境を整えます。
自分のPCなどに、動作環境を作るのもいいですが24時間動かしたいという場合は、VPSを使用することをおすすめします。
今回はdiscord.jsでDiscordBotを動かすため、Node.jsが必要です。

nodejsのインストール方法がわからない!という方には、ぜひConoHa VPSをおすすめします
ConoHa VPSでは、複数のテンプレートが用意されています。
その中に、Node.jsのテンプレートがあります!
初心者でも簡単に環境を作ることができおすすめです。

ConoHa VPSのお申し込みはこちらからっ!

VPSならConoHa|登録者数55万アカウント突破 - 期間限定キャンペーン実施中
ConoHa VPSはひと月293円から。最新CPU搭載、超高速SSDを採用した、高性能なのにかんたんに使えるVPSです。今だけお得なキャンペーンも実施中。

VPSは月々お金がかかるから払えないという方のために、WindowsとCentOSでのインストール方法も簡単に紹介します。

Windowsでのインストール

Windowsでのインストール方法を簡単に紹介します。
まず、nodejsのホームページに行きます。
https://nodejs.org/ja/

Node.js
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

そして、ダウンロードの推奨版をクリックします。

インストーラーがダウンロードされます。
ダウンロードが終わったら開きます。
そして、インストーラーに言われるようにインストールしていけば完了です。

CentOSでのインストール

CentOSからインストールする場合、たった2行でインストールが可能です。

まず、リポジトリに追加します。

curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash -

次に、yumを使ってインストールします。

sudo yum install nodejs

これで完了です。
しっかりインストールができているか確認します。

node -v

フォルダーを作る

まず、Botを設置するフォルダーを作ります。
僕は今回narikakun_blogというファイル名にしました。

Discord.jsをインストール

まず、まず先程作ったフォルダーに移動します。
rootの下にnarikakun_blogというフォルダーをおいている場合は、以下のようなコマンドで移動できます。

cd narikakun_blog

まず、npmを使う際にnpm initをします。
英語で色々聞かれますが、全てエンターキーを押しても問題ありません

npm init

次に、NodejsでDiscordBotを作るためにいちばん大切なdiscord.jsをインストールします。
コンソールを開いて以下のコマンドを入力します。

npm install discord.js

入力してインストールが終わるとこのように表示されます。

コードを書く

では早速プログラマーっぽいことをしていきましょう。
といっても、コピペでできるんですが

まず、実行ファイルを作成します。
今回は、index.jsというファイルにします。最後がかならず.jsになるファイルを作ってください
作れたら、コードを書きます。(以下のコードをコピペしてもらって構いません。)

const Discord = require('discord.js');
const client = new Discord.Client({ws: { intents: ["GUILDS", "GUILD_MESSAGES", "GUILD_MEMBERS"] }});

client.login("<BotのToken>");

client.on('ready', () => {
    console.log(`${client.user.tag}`);
});

client.on('guildMemberAdd', (member, guild) => {
    const channel = member.guild.channels.cache.get("<チャンネルID>");
    if (!channel) return;
    channel.send(`**参加** ${member.user.tag}さんが参加しました!`);
});

client.on('guildMemberRemove', (member, guild) => {
    const channel = member.guild.channels.cache.get("<チャンネルID>");
    if (!channel) return;
    channel.send(`**退出** ${member.user.tag}さんが退出しました。`);
});

では、Tokenを取得します。先程開いていたDiscord Developer PortalのBotのところにあるTOKENからReset Tokenをクリックして確認画面が出てくるのでYes, I do!をクリックします。
※もし、2FAと出てきたら二段階認証のコードを入力してください。

すると、Tokenが出てきます。Copyをクリックしてコピーして<BotのToken>の部分に貼り付けます。

このTokenは誰にも絶対に教えないでください
教えた場合、Botが乗っ取られます。

<チャンネルID>という部分は、入退室ログを流したいチャンネルIDを入力してください。

コードが完成したら保存します。

実際に動かしてみよう

では早速先程書いたコードを使って動かします。
コンソールに以下のコマンドを入力します。(index.jsの部分は自分の作ったファイル名)

node index.js

うまくDiscordとつながれば、先程作ったBotの名前が表示されます。

これでBotは完成です。

Linuxで常時オンライン化したい場合は、以下のようにコマンドを実行します。
ログは、nohup.outに出力されます。

nohup node index.js

Botをサーバーに導入する

今のままでは、ただただBotが動いているだけでどこのサーバーにも居ないことになります。
先程開いていたDiscord Developer Portalを開いて、SETTINGSOauth2を選択します。

そして、SCOPESbotにチェックを入れます。
すると、下にBOT PERMISSIONSというのが表示されます。
ここで、Administratorにチェックを入れます。
管理者権限を渡したくない場合は、Administratorにチェックを入れなくても大丈夫です。

そして、SCOPESに戻りURLが表示されています。
Copyをクリックします。

次にブラウザを開きます。URL欄に、コピーしたURLを貼り付けて開きます。

BOTを追加する場所というところで導入するサーバーを選択します。

そして、先程選択したAdministrator(管理者)を与えることを確認します。
確認ができたら、認証をクリックします。

ロボットピポパポがあります。(Google reCAPTCHA)
チェックを入れます。

成功すると、認証しましたと表示されます。

しっかり導入できていることを確認します。

サーバーを入ったり抜けたりすると、しっかり動いてることがわかりますね。

あとは、コードを少しいじって自分オリジナルの入退室メッセージにしてみましょう!

最後に・・・

最後までお読みいただきありがとうございました。

特定のワードに反応するBotを作ってみたいという方は、別の記事があるのでぜひ!

宣伝なのですが、なりかくんのDiscordサーバーがあります!ぜひ参加して頂けるとありがたいです。
https://discord.gg/cCpcFQN

Discord - A New Way to Chat with Friends & Communities
Discord is the easiest way to communicate over voice, video, and text. Chat, hang out, and stay close with your friends ...

困ったことがあったら、、
この記事に関して、困ったことがありましたらなりかくんのブログ公式Discordサーバーにて質問をすることが可能です!
ぜひ入ってみましょう!

Join the Narikakun Network Discord Server!
このサーバーでは、プログラミングの質問などや気になったことなどなんでも話し合える雑談Discordです。 | 1,121 members

終わりですっ!ありがとうございました。

コメント

  1. こんにちは、記事をお読みいただきありがとうございます!

    こちらの記事の情報が少し古くて申し訳ございません、、、
    現在Discordはインテントと呼ばれる制限がありまして、それに引っかかっている模様です。

    解除方法等も追記させていただきますね!

    申し訳ございませんでした、、今後ともよろしくお願いいたします。

  2. 見やすくてわかりやすい記事ありがとうございます。

    実際にConohaVPSで動かしてみたのですが、オンラインになるだけで、入退室ログが返ってきません。設定が悪いのかと思い、簡単な応答Botに書き換えてみたのですが、その時はちゃんと機能しました。

    この記事に掲載されているコードは現在でも動くものなのでしょうか?

タイトルとURLをコピーしました