Commit graph

3 commits

Author SHA1 Message Date
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
Nuno Duque Nunes
ddc742211e housekeeping: polish Submit Score modal copy, rename v0.10 changelog
- Kills/Deaths label no longer duplicates the "(e.g. 5/2)" hint already
  shown in the field's placeholder
- ATK/DEF/Heal placeholders drop the redundant "(case-insensitive)" note
- v0.10 changelog retitled "Sleep Check (The Vic Update)" and the New
  section's blurb reworded
2026-07-30 04:29:06 +01:00
Nuno Duque Nunes
fc4f322885 feature: shorthand stat input, admin score tools, and sleep check system
- ATK/DEF/Heal now accept K/M shorthand (500K, 1.4M, case-insensitive) via
  a shared parser (@helpers/stat-value), used identically by the Submit
  Score modal, /tg score set, and /tg-admin score-inject
- /tg-admin score-modal — officers can open the Submit Score modal on
  behalf of any player; the modal's customId now carries the target
  userKey so submission always resolves to the intended player rather
  than whoever's Discord client is submitting it
- fix: /tg call now actually reveals the Submit Score button (was
  recording the call but never opening submission)
- fix: /tg poll reload no longer resurrects Submit Score / Yes-No buttons
  that had already been removed — poll state now tracks submission-open
  and buttons-removed explicitly instead of re-deriving it from
  locked/confirmed on every render
- fix: midnight cleanup now fully removes all poll buttons (not just
  Submit Score) instead of leaving them disabled
- Sleep Check — players on a configured role get flagged (💤 shown on
  their poll row) the moment they vote Yes; a scheduled per-slot job DMs
  everyone currently flagged at a configurable time before TG (default
  20 min). State changes and DM sending are intentionally decoupled —
  flagging never itself sends a message. Officers can also flag/clear
  manually via /tg-admin sleep-check set|clear
- data/updates/v0.9.2 and new v0.10 changelog entries for the above
- merged the two .claude reference docs into one, removed stale/fixed
  items, documented the new systems and known deferred gaps
2026-07-30 04:16:42 +01:00