# Python ボットをデプロイ

> Daki Hosting で Python 版 Discord ボット（discord.py または py-cord）をデプロイするためのステップバイステップガイド。

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

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

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

---

## 前提条件

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

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

---

## デプロイ手順

**ステップ 1: Python サーバーを作成**

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

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

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

SSO で Portal にログインするか、[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) を参照。

> **情報:** プロジェクトのルートに `requirements.txt` を含めてください。インストールコマンドがこれを使って依存関係をインストールします。

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

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

**1. Docker Image** — ボットに必要な Python のバージョンを選びます（例: **Python 3.13**）。迷ったら Python 3.13 が安全なデフォルトです。すべてのライブラリが対応していれば、新しいバージョンも動作します。**EOL** と表示されたバージョンは避けてください。セキュリティアップデートが提供されなくなっています。

**2. Install Command** — 依存関係を自動でインストールするために、次のように設定します:
```
pip install -r requirements.txt
```
**3. Startup Command** — ボットを実行するコマンドに設定します:
- `python main.py` — エントリーファイルが `main.py` の場合
- `python bot.py` — エントリーファイルが `bot.py` の場合
- `python -m mypackage` — プロジェクトがパッケージとして構成されている場合

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

詳細は [起動設定](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** をクリックします。

`python-dotenv` が `requirements.txt` に含まれていることを確認してから、コードでファイルを読み込みます:

```python

from dotenv import load_dotenv

import os

import discord



load_dotenv()

TOKEN = os.environ.get("BOT_TOKEN")



intents = discord.Intents.default()

client = discord.Client(intents=intents)



@client.event

async def on_ready():

    print(f"Logged in as {client.user}")



client.run(TOKEN)

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

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

**Console** タブで **Start** をクリックします。正常に起動すると、次のように表示されます:

```

Logged in as MyBot#1234

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

---

## よくある問題

**ModuleNotFoundError: No module named 'discord'**

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

**ModuleNotFoundError: No module named 'dotenv'**

`requirements.txt` に `python-dotenv` を追加し、サーバーを再起動してください。

**discord.errors.LoginFailure: Improper token has been passed**

`.env` ファイルのトークンが間違っているか、存在しません。Files タブで `.env` ファイルを開き、値を注意深く確認してください。余分なスペースや引用符は削除してください。

**PrivilegedIntentsRequired error**

ボットが、Discord Developer Portal で有効になっていないインテントを要求しています。ボットアプリケーションの設定で、必要な特権インテント（例: Message Content Intent）を有効にし、コードも同じインテントを要求していることを確認してください。

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

Console の出力でエラーを確認してください。よくある原因: 起動コマンドの誤り（ファイル名のタイプミスやパスの誤り）、`requirements.txt` がないこと、またはパッケージが不足していること。[トラブルシューティング](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-python
