設定(環境変数)
すべての設定は環境変数から読み込まれます(internal/config/config.go)。.env.example をコピーして .env を作成し、値を埋めてください。
| 変数名 | 必須 | 既定値 | 説明 |
|---|---|---|---|
PORT | - | 8080 | HTTP サーバーの待受ポート |
DISCORD_PUBLIC_KEY | 推奨 | (空) | Interaction 署名検証用の公開鍵(hex)。未設定だと検証をスキップし、警告ログを出力します |
BOT_TOKEN | ✅ | - | Discord Bot トークン。REST API 呼び出しに使用 |
APPLICATION_ID | ✅ | - | Discord アプリケーションID。コマンド登録・deferred response の編集先URLに使用 |
TEAMS_WEBHOOK_URL | - | (空) | 設定すると鍵の貸出・返却・遡り登録のたびに Teams の Adaptive Card 通知が送られる |
SPREADSHEET_ID | ✅ | - | ログ記録先の Google スプレッドシートID |
KEY_BUTTON_CHANNEL_ID | - | 固定チャンネルID (1479268831447875584) | ボタンメッセージ・ステータスメッセージを投稿するチャンネル |
LOG_CHANNEL_ID | - | KEY_BUTTON_CHANNEL_ID と同じ | 操作ログ・返却期限アラートを投稿するチャンネル。ボタン用チャンネルを騒がしくしたくない場合に分離できる |
STATUS_MESSAGE_ID | - | (空) | 常設ステータスメッセージのID。既存メッセージを編集し続けるためのもので、初回作成時に自動でファイルへ書き戻される |
ENV_FILE_PATH | - | .env | STATUS_MESSAGE_ID の書き戻し先ファイルパス |
SQLITE_DB_PATH | - | ./data/nbc-bot.db | 返却期限アラートの永続化に使う SQLite ファイルのパス |
Google Sheets への認証
nbc-bot は Application Default Credentials(ADC)でスプレッドシートに認証します。ローカルやコンテナ環境では、サービスアカウントJSONキーを用意し GOOGLE_APPLICATION_CREDENTIALS にそのパスを設定してください。サービスアカウントには対象スプレッドシートの編集者権限を共有しておく必要があります。
WARNING
サービスアカウントJSON(*-sa.json)や .env は秘密情報です。.gitignore で除外済みですが、誤ってコミットしないよう注意してください。
STATUS_MESSAGE_ID の永続化について
nbc-bot は起動時に .env を読み込みません(.env の読み込みはプロセスマネージャ側、例えば systemd の EnvironmentFile= などに委ねる設計)。そのため STATUS_MESSAGE_ID は「アプリが自分で書き戻す」ことでのみ永続化されます。ENV_FILE_PATH が指すファイルに対して、対象の行だけを書き換える(存在しなければ追記する)安全な書き込み(一時ファイル→rename)を行います。
デプロイ先でこの値が正しく永続化されるよう、ENV_FILE_PATH は実際にプロセスマネージャが読み込む .env ファイルと同じパスを指すようにしてください。