コントリビューション
Komugi への機能追加やバグ修正のコントリビューションを歓迎します。
- 高耐障害性: パケットのパース不備や予期せぬ例外でプロセス全体を落とさないよう、Goroutine やハンドラには適切なリカバリを設けてください。
- Pure Go / Cgo-free: クロスコンパイルの容易性とコンテナでの運用のしやすさを保つため、Cgo に依存するライブラリの追加は極力避けてください。
- テストの徹底: 変更を加えた際は
go test -race ./...が通ることを確認してください。
新しいゲーム内コマンドを追加する手順
Section titled “新しいゲーム内コマンドを追加する手順”-
コマンド定義の追加 (
Section titled “コマンド定義の追加 (internal/relay/commands.go)”internal/relay/commands.go)KomugiCommands()関数内に新しいコマンドのメタデータ(名前、説明、引数定義)を追加します:{Name: "mycommand",Description: "新しいコマンドの説明文",AliasesOffset: 0xFFFFFFFF,Overloads: []protocol.CommandOverload{{}},} -
ハンドラの追加 (
Section titled “ハンドラの追加 (handleKomugiCommand)”handleKomugiCommand)session.handleKomugiCommand内で該当コマンドの実行処理(トースト送信、パケット送出、DB更新など)を記述します:if matchCmd(cmdLower, "/mycommand") {// コマンド処理ロジックreturn} -
ドキュメントの自動更新
Section titled “ドキュメントの自動更新”ドキュメントリポジトリ側で生成スクリプトを実行するだけで、追加したコマンドが ゲーム内コマンド一覧 に自動的に反映されます:
ターミナルウィンドウ cd ../komugi-docspnpm run generate
新しい環境変数を追加する手順
Section titled “新しい環境変数を追加する手順”-
設定構造体の更新 (
Section titled “設定構造体の更新 (internal/config/config.go)”internal/config/config.go)Config構造体にフィールドを追加し、loadEnv()関数で環境変数読み込みとバリデーションを実装します。 -
Section titled “.env.example への追記”.env.exampleへの追記リポジトリ直下の
.env.exampleに、設定例と日本語の説明コメントを追記します。 -
ドキュメントの自動更新
Section titled “ドキュメントの自動更新”ドキュメント生成スクリプトを実行すると、
.env.exampleの内容から 環境変数リファレンス が自動的に再生成されます。