初期ファイル

ボットをサーバーに追加したら、次のステップはコードを書いてボットをオンラインにすることです! まず、クライアントトークンの設定ファイルと、ボットのアプリケーションのメインファイルを作成するところから始めましょう。

設定ファイルを作る

"トークンとはなんですか?" にあるように、トークンはボットのパスワードなので、流出しないよう最大限慎重に取り扱ってください。 config.json ファイルや環境変数を使って流出を防ぐことができます。

Discord Developer Portalopen in new window でアプリケーションのページを開き、「Bot」ページに移動してトークンをコピーしてください。

config.json を使う場合

一般的に、config.json ファイルへデータを保存するのが秘密情報を安全に保つ方法のひとつです。 プロジェクトのディレクトリに config.json ファイルを作成して、トークンをコピーアンドペーストします。 require() を使ってファイル内のトークンにアクセスすることができます。

{
    "token": "トークンをここに入れてください"
}
1
2
3
const { token } = require('./config.json');

console.log(token);
1
2
3

::: 危険! もし Git を使用しているなら、このファイルはコミットしないでください。 .gitignore ファイルを使用して、 Git にこのファイルを無視させる必要があります。 :::

環境変数を使う場合

Environment variables are special values for your environment (e.g., terminal session, Docker container, or environment variable file). You can pass these values into your code's scope so that you can use them.

コマンドラインインターフェースを使うのが環境変数を渡す方法のひとつです。 node index.jsの代わりにアプリを起動するときは、 TOKEN=ここにトークン node index.js を使用します。 同じ方法で、さらに他の値を表示させることもできます。

You can access the set values in your code via the process.env global variable, accessible in any file. Note that values passed this way will always be strings and that you might need to parse them to a number, if using them to do calculations.

A=123 B=456 DISCORD_TOKEN=your-token-goes-here node index.js
console.log(process.env.A);
console.log(process.env.B);
console.log(process.env.DISCORD_TOKEN);
1
2
3

dotenv を使う場合

Another common approach is storing these values in a .env file. This spares you from always copying your token into the command line. Each line in a .env file should hold a KEY=value pair.

You can use the dotenv packageopen in new window for this. Once installed, require and use the package to load your .env file and attach the variables to process.env:

npm install dotenv
yarn add dotenv
pnpm add dotenv
A=123
B=456
DISCORD_TOKEN=your-token-goes-here
1
2
3
const dotenv = require('dotenv');

dotenv.config();

console.log(process.env.A);
console.log(process.env.B);
console.log(process.env.DISCORD_TOKEN);
1
2
3
4
5
6
7

If you're using Git, you should not commit this file and should [ignore it via `.gitignore`](/creating-your-bot/#git-and-gitignore). :::

Online editors (Glitch, Heroku, Replit, etc.) While we generally do not recommend using online editors as hosting solutions, but rather invest in a proper virtual private server, these services do offer ways to keep your credentials safe as well! Please see the respective service's documentation and help articles for more information on how to keep sensitive values safe:

Git and .gitignore

Git is a fantastic tool to keep track of your code changes and allows you to upload progress to services like GitHubopen in new window, GitLabopen in new window, or Bitbucketopen in new window. While this is super useful to share code with other developers, it also bears the risk of uploading your configuration files with sensitive values!

You can specify files that Git should ignore in its versioning systems with a .gitignore file. Create a .gitignore file in your project directory and add the names of the files and folders you want to ignore:

node_modules
.env
config.json
1
2
3

Aside from keeping credentials safe, `node_modules` should be included here. Since this directory can be restored based on the entries in your `package.json` and `package-lock.json` files by running `npm install`, it does not need to be included in Git.

You can specify quite intricate patterns in .gitignore files, check out the Git documentation on .gitignoreopen in new window for more information! :::

メインファイルを作成する

コードエディタを開いて、新しいファイルを作成します。 このとき、ファイル名を index.jsにして保存することをお勧めしますが、必要に応じて他の名前をつけてください。

以下がベースとなるコードです。

// 必要な discord.js のクラス
const { Client, Intents } = require('discord.js');
const { token } = require('./config.json');

// client のインスタンスを作成
const client = new Client({ intents: [Intents.FLAGS.GUILDS] });

// client の準備ができたら、コードを実行する (一度だけ)
client.once('ready', () => {
    console.log('Ready!');
});

// トークンを使ってDiscordにログインする
client.login(token);
1
2
3
4
5
6
7
8
9
10
11
12
13
14

このように、Discordボットの client インスタンスを作成し、Discordにログインすることができます。 なお、 client を正常に動作させるためには、intents オプションに Intents.FLAGS.GUILDS を指定する必要があります。

ターミナルを開いて、 node index.js を実行してプロセスを開始します。 少し待ったあと「Ready!」と表示されたら、準備は万端です!

`package.json` で `"main": "index.js"` フィールドを編集することで、メインファイルを設定することもできます。 こうすると、ターミナルで `node .` と実行するだけでプロセスを開始できます!

Ctrl + Cでプロセスを閉じ、キーボードの上矢印を押すと、最後に実行されたコマンドを持ってこられます。 プロセスを閉じたあと、上矢印を押して起動用のコマンドを持ってくれば、すぐにボットを再起動できますね。 :::

最終的なコード

If you want to compare your code to the code we've constructed so far, you can review it over on the GitHub repository here open in new window.

Last Updated: 2022/4/22 2:38:11