# Discord.js ボットをデプロイ

> Daki Hosting で Discord.js (Node.js) ボットをデプロイするためのステップバイステップガイド。

このガイドでは、Daki Hosting で Discord.js ボットをデプロイする手順を説明します — サーバーの作成から、ボットのオンライン化、トークンを安全に読み込むまで。

## このページで学べること

- ボット用の Node.js サーバーを作成する方法
- コードをアップロードする方法
- インストールコマンド、起動コマンド、Docker イメージ を設定する方法
- `.env` ファイルでボットトークンを安全に設定する方法
- ボットを起動して、動作を確認する方法

---

## 前提条件

- Daki アカウント（Free Tier または有料）— [アカウントの作成](https://daki.cc/ja/wiki/guides/account-create) を参照
- **ボットトークン** を持つ Discord ボット。[Discord Developer Portal](https://discord.com/developers/applications) で作成します
- `discord.js` と `dotenv` を依存関係に含む `package.json` を含む、ボットのソースコード

> **情報:** Discord ボットは Discord のサーバーへ**外向き**に接続し、受信ポートを必要としません。そのため Discord ボットは Free Tier と有料プランの両方で動作します。ボットが HTTP リクエストも処理する場合（スラッシュコマンドのインタラクションや Webhook など）は、公開ポートは有料プランでのみ利用できるため、有料プランが必要です。[ネットワークと割り当て](https://daki.cc/ja/wiki/guides/network-allocations) を参照してください。

---

## デプロイ手順

**ステップ 1: Node.js サーバーを作成**

1. [free.daki.cc](https://free.daki.cc) の Free Tier Dashboard、または [billing.daki.cc](https://billing.daki.cc) の Billing Panel にログインします。
2. 新しいサーバーを作成し、**Node.js** の egg を選択します。
3. サーバーに名前を付けます（例: `MyDiscordBot`）。

全手順は [最初のサーバーを作成](https://daki.cc/ja/wiki/guides/create-server) を参照してください。

**ステップ 2: Portal にアクセス**

Portal に SSO でログインします（ダッシュボードの Account ページの **Open Portal**、または Billing Panel のサービスページから）。または [portal.daki.cc](https://portal.daki.cc) に直接アクセスします。[Portal の概要](https://daki.cc/ja/wiki/guides/portal) を参照。

**ステップ 3: ボットのコードをアップロード**

**方法 A — ZIP でアップロード（最も簡単）:**
1. プロジェクトフォルダーをローカルで `.zip` ファイルに圧縮します。
2. Portal で **Files** タブを開き、**Upload** をクリックします。
3. `.zip` を右クリックし、**Extract** をクリックします。

**方法 B — SFTP を使う（サイズ制限なし）:**
**Settings** タブに表示される SFTP の認証情報で接続し、フォルダーを直接アップロードします。[ファイルマネージャー](https://daki.cc/ja/wiki/guides/file-manager) を参照。

> **情報:** `node_modules` フォルダーは、アップロードに**含めないでください** — インストールコマンドによって自動的にインストールされます。`package.json` と `package-lock.json` は必ず含めてください。

**ステップ 4: Startup タブを設定**

**Startup** タブを開き、3 つの項目すべてを設定します:

**1. Docker Image** — ボットに必要な Node.js のバージョンを選びます（例: **Node.js 22** または **Node.js 24**）。迷ったら Node.js 24 LTS が安全なデフォルトです。**EOL** と表示されたバージョンは避けてください。セキュリティアップデートが提供されなくなっています。

**2. Install Command** — 依存関係を自動でインストールするために、次のように設定します:
```
npm install
```
**3. Startup Command** — ボットを起動するコマンドに設定します:
- `node index.js` — エントリーファイルが `index.js` の場合
- `node bot.js` — エントリーファイルが `bot.js` の場合
- `npm start` — `package.json` に `start` スクリプトがある場合

これらのコマンドは、プロジェクトの構成に合わせて自由に変更してください。

詳細は [起動設定](https://daki.cc/ja/wiki/guides/startup-settings) を参照してください。

**ステップ 5: .env ファイルでボットトークンを追加**

ボットが接続するには Discord トークンが必要です。ソースコードに残らないよう、トークンはサーバー上の `.env` ファイルに保存してください。

1. **Files** タブで **New File** をクリックし、`.env` と名前を付けます。
2. トークンを追加します:
   ```
   BOT_TOKEN=your_discord_bot_token_here
   ```
3. **Save** をクリックします。

ボットのコードでは、`dotenv` で読み込みます:
```js
require('dotenv').config();

const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({ intents: [GatewayIntentBits.Guilds] });

client.once('ready', () => {
    console.log(`Logged in as ${client.user.tag}`);
});

client.login(process.env.BOT_TOKEN);
```
`dotenv` が `package.json` の依存関係に記載されていることを確認してください。そうすればインストールコマンドでインストールされます。

`.env` ファイルの使い方の詳細は [環境変数](https://daki.cc/ja/wiki/guides/environment-variables) を参照してください。

**ステップ 6: ボットを起動**

**Console** タブで **Start** をクリックします。正常に起動すると、ボットのログイン確認が表示されます:

```

Logged in as MyBot#1234!

```
エラーが表示された場合は、[トラブルシューティング](https://daki.cc/ja/wiki/guides/troubleshooting) ガイドを確認してください。

---

## よくある問題

**Error: Cannot find module 'discord.js'**

依存関係がインストールされていません。`package.json` に `discord.js` が依存関係として記載されているか、Startup タブのインストールコマンドが `npm install` に設定されているかを確認してください。サーバーを再起動するとインストールが実行されます。

**Error: Cannot find module 'dotenv'**

`package.json` の依存関係に `dotenv` を追加し、サーバーを再起動して再インストールしてください。

**Error: An invalid token was provided**

`.env` ファイルのボットトークンが間違っているか、存在しません。**Files** タブで `.env` を開き、値を確認してください。余分なスペース、引用符、改行がないことを確かめてください。

**ボットは起動するが、すぐに切断される**

通常は Gateway Intents が不足していることが原因です。Discord Developer Portal で、ボットアプリケーションに必要な特権インテント（例: Message Content Intent）を有効にし、コードでそれらをリクエストしていることを確認してください。

**起動直後にサーバーがクラッシュする**

Console タブを開き、エラーを読んでください。よくある原因: 起動コマンドの誤り（ファイル名のタイプミス）、Node.js のバージョンの誤り、または `node_modules` がないこと。[トラブルシューティング](https://daki.cc/ja/wiki/guides/troubleshooting) を参照してください。

---

## 次のステップ

- [環境変数](https://daki.cc/ja/wiki/guides/environment-variables) — `.env` ファイルとコード内での変数の読み込みについての完全ガイド。
- [無料サーバーを有効に保つ](https://daki.cc/ja/wiki/guides/save-free-server-from-purge) — 広告を見て Free Tier サーバーを稼働させ続けます。
- [ファイルマネージャー](https://daki.cc/ja/wiki/guides/file-manager) — 変更後にコードファイルを更新します。

---
Source: https://daki.cc/ja/wiki/guides/deploy-discordjs
