Skip to content

feat(oyasaitoken): unify token commands and add durable notifications - #915

Merged
marzipan99 merged 2 commits into
masterfrom
codex/oyasaitoken-notify-and-commands
Sep 8, 2026
Merged

feat(oyasaitoken): unify token commands and add durable notifications#915
marzipan99 merged 2 commits into
masterfrom
codex/oyasaitoken-notify-and-commands

Conversation

@marzipan99

Copy link
Copy Markdown
Contributor

Summary

トークン付与時にプレイヤーへ通知が出ない問題(投票報酬でポイントが入っても本人に表示されない)を、コマンド体系・権限・通知基盤ごと作り直す。

コミットA 224f75d6 — コマンドと権限の統合

  • コマンドを /token 1本に統合。/tm と別名 tokens / tokenmanager を廃止
  • サブコマンド別名(give / delete / take / sendall 等)は実装しない
  • transfer サブコマンドを削除。/tm transfer confirm は3つの移行ガードを全て迂回して
    ledger.replaceAll するため、移行完了後の現在は残高を巻き戻すだけの危険な経路だった。
    起動時の自動インポート(ガードあり)は残す
  • 権限を token.use(default true)/ token.admin(default op)の2ノードに統合。
    旧ノードは plugin.ymlchildren でマップするので既存の LuckPerms 設定は無変更で動く
  • /token balance <他人>token.admin 側へ。従来は誰でも他人の残高を閲覧できていた
  • OyasaiMusic の points-commandtoken add %player% %points% -s に追随

コミットB 7406f282 — 永続的な通知

  • token_notification_outbox を追加し、残高・token_transactions と同一トランザクションで書く
  • 通知はメモリ更新時ではなく SQLite コミット成功後に送る。失敗した変更は通知しない
  • 通知可否は API 契約で固定(コマンド=通知 / -s=抑止 / Player・UUID API=常に無通知 /
    String 版 API は silent 引数を尊重)。設定で一括 ON にはできない
  • オフライン中の付与は outbox に保持し、次回ログイン時に集約して1通
  • 専用の notifications.yml(既定 enabled: falseschema-version 検証、日本語フォールバック)

公開 API のシグネチャは15メソッドすべて変更なし。me.realized.* 互換層・ServicesManager 登録も維持。
依存プラグイン(OyasaiPets / SocialLikes3 / OyasaiMenu / DynamicProfile / OyasaiAdminTools /
OyasaiUtilities)はコード変更なし。

デプロイ時の注意

/tm を廃止するため、本番のみに存在する以下5ファイルを JAR と同じ停止ウィンドウ内で同時に更新する必要がある
片方だけ入れ替えると全報酬経路が停止する。

  • plugins/zVoteParty/config.yml(5行)tm addtoken add
  • plugins/Skript/scripts/Guidance.sk:94 tm addtoken add
  • plugins/Skript/scripts/vote-token-spill.sk:13 tm addtoken add
  • plugins/OyasaiMusic/config.yml:41token add %player% %points% -s
  • plugins/OyasaiAdminTools/surveys.json:25token add %player% 20

LuckPerms は否定ノード0件・token.* 既存0件のため作業不要(本番 DB 確認済み)。

Test plan

  • ./gradlew :plugins:OyasaiToken:build / OyasaiMusic ビルド
  • nix fmt 差分なし
  • オンライン対象への token add で本人に通知が出る
  • token add ... -s で本人に出ない/実行者には結果が出る
  • オフライン中に複数回付与 → 再ログインで集約1通
  • サーバー再起動後も未配信 outbox を保持
  • remove / set / balance / top / send
  • 非 OP で管理コマンドが拒否され、自分の残高・send・top は通る
  • enabled: false で通知が出ず残高更新は継続
  • /token transfer が Usage・tab 補完に存在しない
  • tm / tokens / tokenmanager が未登録
  • 公開 API シグネチャが master と一致
  • 本番デプロイ・実機確認(上記5ファイルの更新と同時に実施)

🤖 Generated with Claude Code

@marzipan99
marzipan99 merged commit d77bfdc into master Sep 8, 2026
15 checks passed
@marzipan99
marzipan99 deleted the codex/oyasaitoken-notify-and-commands branch September 8, 2026 08:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant