intech-discord-bot/
├── bot.py # エントリーポイント
├── src/
│ ├── __init__.py
│ ├── commands/ # コマンド定義
│ └── utils/ # ユーティリティ関数
├── .env.sample # 環境変数のサンプル
├── .env.dev.sample # 開発環境用環境変数のサンプル
├── pyproject.toml # プロジェクト設定
└── README.md
uv sync --dev.env.sampleをコピーして.envを作成し、環境変数を設定する。
cp .env.sample .env開発用には.env.dev.sampleをコピーして.env.devを作成する。
cp .env.dev.sample .env.devdiscord bot tokenは @KorRyu3 に聞いてください。
# 開発用環境ファイルを指定
uv run bot.py --env .env.dev開発とテストをスムーズに行うため、開発用Botと本番用Botを分けることを推奨します。
推奨構成:
| 環境 | Bot | Token | DEV_GUILD_ID | 用途 |
|---|---|---|---|---|
| ローカル開発 | InTech_dev | 開発用 | 開発サーバーID | 手元でのテスト |
| デプロイ(本番) | InTech | 本番用 | (空) | 本番運用 |
セットアップ手順:
- Discord Developer Portalで開発用Botアプリケーションを作成
.env.dev.sampleをコピーして.env.devを作成- 開発用BotのTokenと開発サーバーIDを設定
uv run bot.py --env .env.devで起動
uv run bot.py| コマンド | 説明 |
|---|---|
/help |
コマンド一覧を表示 |
/docs [command] |
コマンドの詳細ドキュメントを表示 |
/create_event_channel <name> [members] |
イベントチャンネルとロールを作成 |
/archive_event_channel [name] |
イベントチャンネルをアーカイブ |
/restore_event_channel [name] |
アーカイブされたチャンネルを復元 |
/add_event_role_member <members> [role_name] |
イベントロールにメンバーを追加 |
/create_club_channel <name> [members] |
クラブチャンネルとロールを作成 |
/add_club_role_member <members> [role_name] |
クラブロールにメンバーを追加 |
/show_role_members <role_name> [visibility] |
ロールのメンバー一覧を表示 |
💡 各コマンドの詳細は
/docs command:コマンド名で確認できます
.env ファイルに以下の環境変数を設定してください:
DISCORD_BOT_TOKEN: Discord Bot のトークン
EVENT_CATEGORY_NAME: イベントカテゴリー名ARCHIVE_EVENT_CATEGORY_NAME: アーカイブカテゴリー名EVENT_REQUEST_CHANNEL_NAME: イベント作成リクエストを受け付けるチャンネル名
CLUB_CATEGORY_NAME: クラブカテゴリー名CLUBS_REQUEST_CHANNEL_NAME: クラブチャンネル作成リクエストを受け付けるチャンネル名
APPROVER_ROLE_NAME: 承認権限を持つロール名(デフォルト: Administrator)APPROVAL_TIMEOUT_HOURS: 承認リクエストのタイムアウト時間(時間単位、デフォルト: 24)
DEV_GUILD_ID: 開発用サーバーのID(設定すると、このサーバーのみにコマンドを同期)
PORT: Keep-aliveサーバーのポート番号(デフォルト: 8000)
- Discordで開発者モードを有効化
- 設定 → 詳細設定 → 開発者モード をON
- 開発用サーバーを右クリック → 「サーバーIDをコピー」
.env.devファイルにDEV_GUILD_ID="コピーしたID"を追加
開発時のメリット:
- コマンドの反映が即座(グローバル同期は最大1時間)
- 本番サーバーに影響を与えずにテスト可能
src/commands/に新しいファイルを作成- コマンド関数と
setup()関数を実装 @command_meta()デコレーターでメタデータを登録(カテゴリー、アイコン、説明など)- ファイルを保存すれば自動的に登録されます
詳細は docs/ADD_COMMAND.md を参照してください。
src/commands/_sample.py にテンプレートがあります。
- フォーマッター: ruff
- 型ヒントを推奨
- docstringを記述
Fly.ioにデプロイしています。
fly deploy
# logs
flyctl logs
# status
flyctl status※ 初回オンリー
fly auth login
flyctl launch --region nrt
fly deploy
fly secrets set { .env.sampleの内容をここにコピー }
fly deploy