Discord.pyを使ってbotを作っていたんですが、いつの間にか開発終了してしまっていたらしいです…※詳しく
お世話になりました…!
引越し先として、Discord.jsさんにお世話になろうと思います。
今回は環境作成から、おはよう!といったたらおはよう!と返してくれるところまで実施したいです。
discordのBOTはこれからスラッシュコマンドが主流になるという話を聞いたので、それも取り入れていこうと思います。(/と入れると実行できるコマンドの事です)
目次
・Discord.jsとは何か
・環境
・フォルダの作成
・package.jsonファイルの作成
・discord.jsのインストール
・コードを書く環境整備
・BOTの設定
・ボットをサーバーへ招待する
・コマンドの登録
・BOTの起動
Discord.jsとは何か
名前の通り、JavaScriptを使ってDiscordのbotが使えるものらしいです。
Discord.js 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」ボタンを押します
名前を付けて「Create」を押します
名前と画像を設定します
BOTタブからAdd Botを押します
これでbotが追加できました!
ボットをサーバーへ招待する
client_idを取得します。
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と打ち込むと、サーバーでスラッシュコマンドが使えるようになります。
ただ、これだとBOTがまだオフラインなので返事が返ってきません。
BOTの起動
BOTを起動させます。
さきほど作ったフォルダに「index.js」というファイルを作成します。
index.js
const { Client, Intents } = require('discord.js');
const client = new Client({ intents: [Intents.FLAGS.GUILDS] });
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('トークンをここに入れます');
コマンドプロンプトからnode index.jsを打ち込むと[BOTの名前]がサーバーにログインしました!と返ってきます。
また、招待したサーバーでBOTがオンラインになります。
挨拶返してくれましたね!嬉しい!
詳しい中身については書けていない(良く分かっていない)ので、次回引き続き作成していこうと思っています!
参考文献
Discord.js Guide
Node.jsとはなにか?なぜみんな使っているのか?
↧