Skip to content

Merge TimerBot's timer functionality into InfinityBot - #18

Merged
nextinfinity merged 4 commits into
mainfrom
feat/timerbot-integration
Oct 12, 2026
Merged

nextinfinity merged 4 commits into
mainfrom
feat/timerbot-integration

Conversation

@nextinfinity

Copy link
Copy Markdown
Owner

Summary

Port the unique functionality of TimerBot into InfinityBot as /timer (source: nextinfinity/TimerBot@f6128bb).

  • Preserve all seven options: name, text channel, length, notification interval, one-minute warning, user/role mention, and return voice channel.
  • Preserve start/update/completion messages, warning deduplication, and completion-time return of all connected voice members after a three-second delay.
  • Adapt the command to InfinityBot’s existing constructor-based command discovery; no new dependencies, intents, environment variables, or music behavior changes.
  • Port TimerBot’s deterministic tests and document usage, permissions, restart limitations, and manual smoke testing.

Both bots already share the same healthcheck and voice-state intent, so those require no additional integration.

Validation

  • ./gradlew check shadowJar with JDK 25: passed.
  • 42 tests passed, including 10 timer tests covering schedules, mentions, defaults, guild-only invocation, and connected-member voice return.
  • git diff --cached --check: passed.
  • No live Discord test performed; after deployment, verify reminders, mentions, and voice movement using actual channel permissions.

Operational notes

Voice return intentionally moves all connected voice users in the server, matching TimerBot. It requires Move Members and destination-channel access. Timers are in-memory and do not survive bot restarts; voice return depends on successful completion-message delivery.

@nextinfinity

Copy link
Copy Markdown
Owner Author

Updated per permission discussion:

  • /timer defaults to Administrator through Discord command registration. There is no runtime caller permission gate; server admins can grant access through standard Discord controls. Music command defaults are unchanged.
  • Before any notices are sent or scheduled, validate bot View Channel/Send Messages in the text channel, role mention permission for non-mentionable roles, and destination View Channel/Connect for voice return.
  • Voice return also checks Move Members in every possible source voice/stage channel (including unoccupied channels), since JDA requires that permission in the member’s source channel and users can change channels during the timer.
  • Added regression tests and documentation. ./gradlew check shadowJar passes: 52 tests, zero failures. Live Discord smoke testing remains outstanding; permissions may change after scheduling.

@nextinfinity
nextinfinity merged commit c2283b7 into main Oct 12, 2026
6 checks passed
@nextinfinity
nextinfinity deleted the feat/timerbot-integration branch October 12, 2026 02:21
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