intech-discord-bot/
├── bot.py # エントリーポイント
├── src/
│ ├── __init__.py
│ ├── commands/ # コマンド定義
│ └── utils/ # ユーティリティ関数
├── tests/ # 自動テスト
├── docs/ # ドキュメントルート
├── CONTEXT.md # 用語集
├── .env.sample # 環境変数のサンプル
├── .env.dev.sample # 開発環境用環境変数のサンプル
├── pyproject.toml # プロジェクト設定
└── README.md
詳細なドキュメントは docs/ ディレクトリにあります。
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_channel <category> <channel_name> [members] |
クラブ・イベント・プロジェクトのチャンネルとロールを作成 |
/archive_channel [channel] |
チャンネルをアーカイブ |
/restore_channel [channel] |
アーカイブされたチャンネルを復元 |
/add_role_members <members> [role] |
ロールに参加者を追加 |
/remove_role_members <members> [role] |
ロールから参加者を外す |
/show_role_members <role_name> [visibility] |
ロールのメンバー一覧を表示 |
/intech |
その場所のパネル(ボタンで操作できる画面)を自分にだけ出す |
/setup_panel <panel> |
ボタンで操作できるパネルを実行したチャンネルに設置(管理者用) |
💡 各コマンドの詳細は
/docs command:コマンド名で確認できます
.env ファイルに以下の環境変数を設定してください(「任意」と書いたもの以外はすべて必須):
DISCORD_BOT_TOKEN: Discord Bot のトークン
EVENT_CATEGORY_NAME: イベントカテゴリー名ARCHIVE_EVENT_CATEGORY_NAME: アーカイブカテゴリー名
PROJECT_CATEGORY_NAME: プロジェクトカテゴリー名ARCHIVE_PROJECT_CATEGORY_NAME: プロジェクトのアーカイブカテゴリー名
CLUB_CATEGORY_NAME: クラブカテゴリー名ARCHIVE_CLUB_CATEGORY_NAME: クラブのアーカイブカテゴリー名
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