3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Discord.jsでbotを作ってみよう!(環境準備からスラッシュコマンドであいさつを返すところまで)

Last updated at Posted at 2021-11-09

Discord.pyを使ってbotを作っていたんですが、いつの間にか開発終了してしまっていたらしいです…※詳しく
お世話になりました…!
引越し先として、Discord.jsさんにお世話になろうと思います。
今回は環境作成から、おはよう!といったたらおはよう!と返してくれるところまで実施したいです。
画像3.png

discordのBOTはこれからスラッシュコマンドが主流になるという話を聞いたので、それも取り入れていこうと思います。(/と入れると実行できるコマンドの事です)
image.png

目次 ・[Discord.jsとは何か](#discordjsとは何か) ・[環境](#環境) ・[フォルダの作成](#フォルダの作成) ・[package.jsonファイルの作成](#packagejsonファイルの作成) ・[discord.jsのインストール](#discordjsのインストール) ・[コードを書く環境整備](#コードを書く環境整備) ・[BOTの設定](#botの設定) ・[ボットをサーバーへ招待する](#ボットをサーバーへ招待する) ・[コマンドの登録](#コマンドの登録) ・[BOTの起動](#botの起動)
#Discord.jsとは何か 名前の通り、JavaScriptを使ってDiscordのbotが使えるものらしいです。 [Discord.js Guide](https://discordjs.guide/)さんを参考に環境準備から実施していきたいと思います。

#環境
Windows10
node v16.13.0(今からインストールします)
discord.js 13.3.1(今からインストールします)
##Node.jsのインストール
Node.jsのWebサイトからインストールします。
「Recommended For Most Users」=「推奨」という意味らしいのでそちらをインストールしてみます。
npm( Node Package Manager)のインストールが必要らしいですが、上記のインストールで完了するらしいです。
コマンドプロンプトでnode -vを実行してv1×.××.×が返ってきたらOKです。

##フォルダの作成
PC上の好きな場所にフォルダを作成します。
このフォルダで開発していきます。

##package.jsonファイルの作成

  • コマンドプロンプトを開きます
  • 上記で作成した作成したフォルダに移動します(cdコマンドで)
  • npm initを実行します
  • 色々質問されますが全てEnterキーで進みます(公開する場合はlicenseは確認しておいた方がいいらしいです)
  • 作成したフォルダ内にpackage.jsonファイルができていたらOKです

##discord.jsのインストール
先ほどと同じ要領で、作成したフォルダnpm install discord.jsを実行します。
npm install discord.js @discordjs/rest discord-api-typesこれも実行します。

##コードを書く環境整備
メモ帳でも開発はできますが、コードエディタを使用したほうが便利です。
私は下記の通りインストールしました。

  • Visual Studio Code:コードエディタです。リンク先からダウンロードできます。
  • ESLint:JavaScriptの静的検証ツールです。npm install -g eslintでインストールできます。(eslint -vでバージョンが返ってきたらOK)
  • Visual Studio Code : ESLint :Visual Studio Codeの拡張機能です。拡張ボタンからインストールします。

#BOTの設定
BOTを作成して名前と画像を登録します。

  • 開発者ポータルを開きます

  • 「New Application」ボタンを押します
    画像4.png

  • 名前を付けて「Create」を押します

  • 名前と画像を設定します
    画像8.png

  • BOTタブからAdd Botを押します
    画像9.png

  • これでbotが追加できました!

#ボットをサーバーへ招待する

  • client_idを取得します。
    画像10.png
  • URLに上記で取得したclient_idを当てはめてページを呼び出します
https://discord.com/oauth2/authorize?client_id=<ここにclient_idを入れます>&scope=bot+applications.commands
  • 追加したいサーバーを選んで認証します

 

  • 追加したサーバーにbotが入ってくればOK!

 

#コマンドの登録
いよいよBOTの中身を書いていきます!

@discordjs/builders @discordjs/rest discord-api-typesをインストールします。
npm install @discordjs/builders
npm install @discordjs/rest
npm install discord-api-types

さきほど作ったフォルダに「config.json」というファイルを作成します。
ここに設定を書き込んでいきます。
ここに書き込んだサーバーに対してスラッシュコマンドが使えるようになります。

config.json
{
	"clientId": "開発者ポータルの AppName> Oath2> ClientID",
	"guildId": "導入したいサーバーを右クリックして「IDをコピー」した値を入れます",
	"token": "ここにトークンを書きます"
}

※トークンは人に教えてはいけません!

さきほど作ったフォルダに「deploy-commands.js」というファイルを作成します。
ここにコマンドを書き込んでいきます。
/helloというスラッシュコマンドを作成します。

deploy-commands.js
const { SlashCommandBuilder } = require('@discordjs/builders');
const { REST } = require('@discordjs/rest');
const { Routes } = require('discord-api-types/v9');
const { clientId, guildId, token } = require('./config.json');
const commands = [
	new SlashCommandBuilder().setName('hello').setDescription('hello!と返事します!')
]
	.map(command => command.toJSON());
const rest = new REST({ version: '9' }).setToken(token);
rest.put(Routes.applicationGuildCommands(clientId, guildId), { body: commands })
	.then(() => console.log('Successfully registered application commands.'))
	.catch(console.error);

ここでコマンドプロンプトにnode deploy-commands.jsと打ち込むと、サーバーでスラッシュコマンドが使えるようになります。
画像12.png
ただ、これだとBOTがまだオフラインなので返事が返ってきません。

#BOTの起動
BOTを起動させます。
さきほど作ったフォルダに「index.js」というファイルを作成します。

index.js
const { Client, Intents } = require('discord.js');
const client = new Client({ intents: [Intents.FLAGS.GUILDS] });
const { token } = require('./config.json');
client.on('ready', () => {
  console.log(`${client.user.tag}がサーバーにログインしました!`);
});
client.on('interactionCreate', async interaction => {
  if (!interaction.isCommand()) return;
  if (interaction.commandName === 'hello') {
    await interaction.reply('hello!');
  }
});
client.login(token);

コマンドプロンプトからnode index.jsを打ち込むと[BOTの名前]がサーバーにログインしました!と返ってきます。
また、招待したサーバーでBOTがオンラインになります。
画像13.png
挨拶返してくれましたね!嬉しい!
詳しい中身については書けていない(良く分かっていない)ので、次回引き続き作成していこうと思っています!

#参考文献
Discord.js Guide
Node.jsとはなにか?なぜみんな使っているのか?

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?