tg-bot-ts/data/updates/v0.9.2/update.json
Nuno Duque Nunes 4848b37028 feature: bulk result posting, late-attendee handling, and officer->moderator rename
- /tg-admin result post-all [slot:] — posts/updates every TG result for a
  slot (default 20:00) in one pass, not one at a time
- Officers can add a late-arriving player to a poll (locked or not) so
  they can submit a score instead of hitting "You weren't in this TG":
  /tg poll add-attendee (single, autocomplete) and /tg-admin poll
  add-attendees (modal, comma/newline-separated, for adding several at
  once — Discord modals can't hold select menus, only text inputs)
- fix: /tg-admin result post, leaderboard post, and leaderboard
  post-highlights had no permission check at all — any guild member could
  invoke them
- fix: --register never exited after registering slash commands, so it
  kept running as a full second bot instance forever. Every docker exec
  --register run stacked another live process on top of the container's
  real one, each independently connected to Discord — root cause of /tg
  poll start posting multiple polls and vote/submit state acting confused
  (confirmed 3 live processes via docker top, cleaned up)
- fix: bot startup poll-restore logic had the same stale-button-
  resurrection bug already fixed in /tg poll reload, in a sibling code
  path that got missed — now respects scoreSubmitOpen/buttonsRemoved
  there too instead of re-deriving from locked/confirmed
- rename: officer -> moderator throughout (Config.roles, hasOfficerRole,
  all "officer only" text, /tg-config roles set/add/remove/reset-*
  commands). Config.load() auto-migrates a legacy roles.officer key on
  read so existing deployed config.json files don't silently reset.
  Slash command names changed — re-register after deploying.
- data/updates v0.10.3 changelog for the above
2026-07-31 03:55:37 +01:00

43 lines
No EOL
2.2 KiB
JSON

{
"version": "v0.9.2",
"date": "2026-07-30",
"title": "Score Button Fix, W.Rank Reset Fix & Shorthand Stat Input",
"layout": "default",
"sections": [
{
"type": "fix",
"label": "Fixes",
"emoji": "🔧",
"items": [
{ "text": "Fixed Submit Score button not updating the Leaderboard or auto-posting the TG Result" },
{ "text": "Fixed W.Rank weekly reset writing Bringer data into the wrong week and not creating the new week correctly" },
{ "text": "Fixed Bringer incorrectly being assigned to a player who met the TG count goal but was not W.Rank 1" },
{ "text": "Fixed weekly reset overwriting the previous week's Bringer data" },
{ "text": "`/tg call` now actually ends the TG and opens the Submit Score button immediately — previously it recorded the call but never revealed the button" },
{ "text": "Fixed `/tg poll reload` bringing back the Submit Score (or Yes/No) buttons after they'd already been removed for the night" }
]
},
{
"type": "improvement",
"label": "Improvements",
"emoji": "✨",
"items": [
{ "text": "Submit Score modal now has separate ATK and DEF fields" },
{ "text": "Heal field in the Submit Score modal only appears for healing classes (FA)" },
{ "text": "Attack, Defense, and Healing scores now accept shorthand like `500K` or `1.4M` (case-insensitive) instead of typing the full number" },
{ "text": "`/tg score set` and `/tg-admin score-inject` accept the same ATK/DEF/Heal shorthand as the Submit Score modal, for consistency across all three ways to submit a score" },
{ "text": "All poll buttons are now fully removed (not just disabled) once a TG's night is over, instead of lingering in a disabled state" }
]
},
{
"type": "technical",
"label": "Under the hood",
"emoji": "🛠️",
"items": [
{ "text": "`/tg-admin score-modal` — moderators can open the Submit Score modal on behalf of any player, for testing or backfilling a missed submission" },
{ "text": "Poll state now tracks explicitly whether score submission is open, instead of re-deriving it from lock/confirm status on every render" }
]
}
],
"examples": []
}