-
Notifications
You must be signed in to change notification settings - Fork 4
697: Add /leaderboard discord bot command #744
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Available PR Commands
See: https://github.com/tahminator/codebloom/wiki/CI-Commands |
Title697 PR TypeEnhancement Description
Diagram Walkthroughflowchart LR
A["JDA ReadyEvent"] --> B["Upsert /leaderboard command on all guilds"]
C["SlashCommandInteraction: /leaderboard"] --> D["DiscordClubManager.sendWeeklyLeaderboardUpdateDiscordMessageForClub(guildId)"]
D --> E["DiscordClubRepository.getDiscordClubByGuildId(guildId)"]
D --> F["LeaderboardRepository fetch latest + users"]
D --> G["Build embed: top 3, time left"]
G --> H["jdaClient.sendEmbedWithImages to club channel"]
|
| Relevant files | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| Enhancement |
|
PR Reviewer Guide 🔍Here are some key observations to aid the review process:
|
src/main/java/org/patinanetwork/codebloom/jda/command/JDASlashCommandHandler.java
Show resolved
Hide resolved
src/main/java/org/patinanetwork/codebloom/common/components/DiscordClubManager.java
Outdated
Show resolved
Hide resolved
src/main/java/org/patinanetwork/codebloom/common/components/DiscordClubManager.java
Outdated
Show resolved
Hide resolved
5a3f2e8 to
6dd795f
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
Adds a Discord /leaderboard slash command and refactors Discord bot initialization so the JDA client is created via a central manager and reused across the app.
Changes:
- Introduces
/leaderboardcommand registration + handling viaJDAEventListener. - Refactors JDA lifecycle: removes
connect()flow fromJDAClientand initializes JDA inJDAClientManager. - Adds DB lookup for Discord clubs by guild ID and a message builder for weekly leaderboard embeds.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 13 comments.
Show a summary per file
| File | Description |
|---|---|
| src/test/java/org/patinanetwork/codebloom/config/NoJdaRequired.java | Updates test-time JDA mocking to match the new JDA manager class. |
| src/test/java/org/patinanetwork/codebloom/common/db/repos/BaseRepositoryTest.java | Updates repository test base to mock the new JDA manager class. |
| src/test/java/org/patinanetwork/codebloom/common/components/DiscordClubManagerTest.java | Updates tests to reflect removal of jdaClient.connect() calls. |
| src/main/java/org/patinanetwork/codebloom/jda/client/JDAClient.java | Removes explicit connect/ready checks; uses a pre-initialized JDA instance from the manager. |
| src/main/java/org/patinanetwork/codebloom/jda/JDAEventListener.java | Adds slash command upsert + interaction handling for /leaderboard. |
| src/main/java/org/patinanetwork/codebloom/jda/JDAClientManager.java | Replaces JDAInitializer with a component-managed JDA client initializer/holder. |
| src/main/java/org/patinanetwork/codebloom/common/db/repos/discord/club/DiscordClubSqlRepository.java | Adds SQL query to fetch a club by Discord guild ID. |
| src/main/java/org/patinanetwork/codebloom/common/db/repos/discord/club/DiscordClubRepository.java | Adds repository API for lookup by guild ID. |
| src/main/java/org/patinanetwork/codebloom/common/components/DiscordClubManager.java | Adds message builder for weekly leaderboard embed used by the slash command. |
| src/main/java/org/patinanetwork/codebloom/api/auth/security/CustomAuthenticationSuccessHandler.java | Stops calling jdaClient.connect() during auth success handling. |
Comments suppressed due to low confidence (1)
src/main/java/org/patinanetwork/codebloom/jda/JDAClientManager.java:29
- This constructor calls
initializeJda()andawaitReady()during Spring bean creation. That blocks application startup on Discord connectivity and will fail the entire app context if Discord is down or the token is invalid. Consider lazy initialization (connect on first use), or gating JDA startup behind a feature flag/property so non-bot deployments and local/dev/test startup aren’t hard-dependent on Discord availability.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
src/main/java/org/patinanetwork/codebloom/common/components/DiscordClubManager.java
Show resolved
Hide resolved
src/main/java/org/patinanetwork/codebloom/common/components/DiscordClubManager.java
Outdated
Show resolved
Hide resolved
src/main/java/org/patinanetwork/codebloom/jda/command/JDASlashCommandHandler.java
Show resolved
Hide resolved
src/main/java/org/patinanetwork/codebloom/common/components/DiscordClubManager.java
Show resolved
Hide resolved
.../java/org/patinanetwork/codebloom/common/db/repos/discord/club/DiscordClubSqlRepository.java
Show resolved
Hide resolved
src/main/java/org/patinanetwork/codebloom/jda/JDAEventListener.java
Outdated
Show resolved
Hide resolved
src/main/java/org/patinanetwork/codebloom/common/components/DiscordClubManager.java
Show resolved
Hide resolved
src/main/java/org/patinanetwork/codebloom/common/components/DiscordClubManager.java
Outdated
Show resolved
Hide resolved
src/main/java/org/patinanetwork/codebloom/common/components/DiscordClubManager.java
Outdated
Show resolved
Hide resolved
752aeae to
5978d82
Compare
|
/deploy |
65de9d4 to
c10bc71
Compare
|
/deploy |
|
/improve |
src/main/java/org/patinanetwork/codebloom/jda/JDAEventListenerInitializer.java
Outdated
Show resolved
Hide resolved
src/main/java/org/patinanetwork/codebloom/jda/JDAEventListener.java
Outdated
Show resolved
Hide resolved
697: Added repository function to get DiscordClub by guildId
…hat JDAEventListener takes JDA and registers it (so after initial JDA creation)
697: combine with added Leaderbaord command
45b19ca to
380c563
Compare
697: reset headless to true
697
Description of changes
Checklist before review
Screenshots
Dev
Staging