1
0
Fork 0
Commit graph

22 commits

Author SHA1 Message Date
f1da86ae81 feat(bot): cancel roll-calls and announce rescheduled ops
- Cancelled ops: roll-call embed edited to the cancelled state (buttons
  removed) plus a standalone cancellation notice in the ops channel;
  clears the roll-call markers and sets the new discordCancelledAt
  marker on the mission.
- Rescheduled ops (Cancelled back to Ready/Scheduled, future start):
  immediate announcement embed with the new start time and when the
  fresh roll-call goes up (usual 3-day lead, or live-in-channel when
  already due), then clears the marker so the normal flow posts a new
  roll-call. Prior RSVPs carry over.
- Hidden bot-managed discordCancelledAt field on Missions + migration.
- Bot embed poll loop handles both transitions idempotently.
2026-09-12 19:30:22 -04:00
0125cd6d4d docs(bot): note the modal channel picker and announce default
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-09-10 23:58:08 -04:00
ecdbcbd15b feat(bot): pick the target channel inside the announce modal
- The compose modal gains an optional channel select (text and
  announcement channels), preselected with the configured default
- /announce now posts only to the announce channel by default: the ops
  fallback is gone, so an unconfigured announce channel errors instead
  of silently posting to ops
- Roll call was already ops-only and is unchanged

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-09-10 23:58:03 -04:00
cb62a2f1b7 docs(bot): document the announce modal composer
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-09-10 21:33:59 -04:00
bfffb5fdd3 feat(bot): compose announcements in a paste-friendly modal
- /announce with no message opens a modal: optional title field plus a
  4000-char paragraph body for multi-line markdown
- Target channel rides in the modal customId; staff is re-checked on
  submit and the post goes out as the same amber Announcement embed
- Inline message flow unchanged; modal submits route under ptf-announce:

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-09-10 21:33:55 -04:00
8ee02faa59 style(bot): replace dashes in embed and reminder fallback text 2026-09-07 05:19:50 -04:00
d757c58c5d feat(missions): daily ready-check reminders for unfinished side ops
Five days before a player-created side op starts, if it is not yet Ready, the creator gets one in-app notification per day (via mission-tick) plus one Discord DM per day (new bot service). Per-server-local-day dedupe via hidden readyReminderWebSentAt/readyReminderDmSentAt markers. The ready-reminder type is excluded from the notification bridge to avoid double-DMing. Markers are nulled on clone.
2026-09-07 05:07:46 -04:00
a2a5f7877b style: remove em-dashes from user-visible prose (wave 1) 2026-09-07 01:34:28 -04:00
399f7f0bcf feat(bot): announce mission modlists in the ops channel 2026-09-07 00:52:24 -04:00
33174572cc docs: refresh AGENTS.md guides
Update root and per-directory AGENTS.md files to reflect the current
state of the codebase: collection inventory, RBAC registry, base
management, personnel pages, training minigames, Discord bot transfer
and evaluation-reminder flows, banking currency config, migration
wrapper, and Playwright/Vivaldi e2e details.
2026-09-06 05:32:53 -04:00
e3c4eada09 feat(bot): add post-mission evaluation reminder DMs
Sends one-shot DMs once a mission is evaluable asking members to rate their leadership (and leaders to rate subordinates), gated by a new evaluationRemindersSentAt marker on Missions with its migration. Adds the /remind-evaluations staff command (manual trigger/sweep) and DISCORD_EVALUATION_POLL_MS config; updates bot and root docs.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-09-06 01:24:17 -04:00
9001d5a796 feat(bot): Add assignment transfer bot services
Add Discord bot services for assignment transfer interactions:

1. transferInteractions.ts: Handle button interactions for transfer requests,
   approvals, rejections, appeals, completions, and cancellations.

2. transferRequests.ts: Poll for pending assignment transfers and trigger
   notification delivery to Discord when status changes to pending/approved/rejected.

3. transferDelivery.ts: Deliver transfer notifications to users via DMs with
   embeds showing status, details, and actions (approve/reject/appeal).

4. transferMessaging.ts: Provide Discord embed building for transfer messages
   with status badges and action buttons.

5. Update bot index.ts: Add transfer button interaction handler with customId prefix "ptf-xfer:"

6. Update notificationBridge.ts: Exclude transfer notification types from general
   notification polling to avoid duplication (Phase 2 feature).

Integration: Services are started via src/bot/services/index.ts and run alongside
existing mission and notification services.
2026-08-31 23:40:21 -04:00
f6d42399d4 fix(bot): refresh roll-call date changes 2026-08-28 00:20:24 -04:00
7cfb650095 style(bot): capitalize attendance embed field labels
Title-case 'Operation Type' and 'Max Players' in the RSVP embed and
apply prettier formatting to the listener error log call.
2026-08-25 12:31:20 -04:00
40b130c8d3 feat(attendance): implement real-time attendance change notifications for Discord 2026-08-21 02:12:01 -04:00
4ad49d3b95 fix(discord): send mission roll calls once 2026-08-21 01:56:12 -04:00
a8e147e52a docs: add AGENTS.md subdirectories and login case study
Add domain-specific AGENTS.md files for collections, components, lib,
utils, and bot. Add login-return-url case study documenting the
return-URL flow design decisions and debugging lessons learned.
2026-08-19 19:48:35 -04:00
d3890cc191 feat(discord): integrate RBAC into Discord bot
Replace legacy role-name checks in isStaff with hasPermission(discord:staff).
Auto-assign the 'user' role document on signup. Import hasPermission in
announce command for future permission gating.
2026-08-19 19:48:28 -04:00
c27b12c76c style(bot): format Discord bot modules 2026-08-16 23:27:51 -04:00
6c97b1a41c feat(docker): gate Discord bot on DISCORD_TOKEN presence in container entrypoint 2026-08-13 20:04:27 -04:00
cabbe071d7 feat(bot): register signup/link/ping commands globally for DM use
Add a scope field to BotCommand so /signup, /link and /ping register globally (available in DMs — guild-scoped commands never appear there) while /announce stays guild-only. Migrate ephemeral replies to MessageFlags and make the /signup welcome message resilient to blocked DMs.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-13 17:00:44 -04:00
00919ceeb3 feat(bot): add Discord bot scaffold with sign-up, attendance embeds, and notification bridge 2026-08-12 12:39:00 -04:00