diff --git a/application/config.json.template b/application/config.json.template index 85cb64d575..f48b01fdc5 100644 --- a/application/config.json.template +++ b/application/config.json.template @@ -199,7 +199,7 @@ "rolePattern": "Top Helper.*", "assignmentChannelPattern": "community-commands", "announcementChannelPattern": "hall-of-fame" - } + }, "cakeDayConfig": { "rolePattern": "Cake Day" } diff --git a/application/src/main/java/org/togetherjava/tjbot/features/cakeday/CakeDayListener.java b/application/src/main/java/org/togetherjava/tjbot/features/cakeday/CakeDayListener.java index b3368aafd1..ccc85e481d 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/cakeday/CakeDayListener.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/cakeday/CakeDayListener.java @@ -3,15 +3,12 @@ import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.User; +import net.dv8tion.jda.api.events.guild.member.GuildMemberJoinEvent; import net.dv8tion.jda.api.events.guild.member.GuildMemberRemoveEvent; -import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; -import org.jetbrains.annotations.NotNull; -import org.togetherjava.tjbot.db.generated.tables.records.CakeDaysRecord; import org.togetherjava.tjbot.features.EventReceiver; -import java.util.Optional; /** * A listener class responsible for handling cake day related events. @@ -24,43 +21,12 @@ public CakeDayListener(CakeDayService cakeDayService) { this.cakeDayService = cakeDayService; } - /** - * Handles the event of a message being received in a guild. - *

- * It caches the user's cake day and inserts the member's cake day into the database if not - * already present. - * - * @param event the {@link MessageReceivedEvent} representing the message received - */ @Override - public void onMessageReceived(@NotNull MessageReceivedEvent event) { - User author = event.getAuthor(); + public void onGuildMemberJoin(GuildMemberJoinEvent event) { + Guild guild = event.getGuild(); Member member = event.getMember(); - long authorId = author.getIdLong(); - long guildId = event.getGuild().getIdLong(); - - if (member == null || author.isBot() || author.isSystem()) { - return; - } - - - if (cakeDayService.hasMemberCakeDayToday(member)) { - cakeDayService.addCakeDayRole(member); - return; - } - - if (cakeDayService.isUserCached(author)) { - return; - } - - cakeDayService.addToCache(author); - Optional cakeDaysRecord = - cakeDayService.findUserCakeDayFromDatabase(authorId); - if (cakeDaysRecord.isPresent()) { - return; - } - cakeDayService.insertMemberCakeDayToDatabase(member, guildId); + cakeDayService.insertUserCakeDay(member, guild); } /** diff --git a/application/src/main/java/org/togetherjava/tjbot/features/cakeday/CakeDayService.java b/application/src/main/java/org/togetherjava/tjbot/features/cakeday/CakeDayService.java index a54c34d2e9..17e18f6361 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/cakeday/CakeDayService.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/cakeday/CakeDayService.java @@ -219,7 +219,12 @@ private Optional getCakeDayRoleFromGuild(Guild guild) { */ protected void removeUserCakeDay(User user, Guild guild) { removeMemberCakeDayFromDatabase(user.getIdLong(), guild.getIdLong()); - cakeDaysCache.remove(guild.getId()); + cakeDaysCache.remove(user.getId()); + } + + protected void insertUserCakeDay(Member member, Guild guild) { + insertMemberCakeDayToDatabase(member, guild.getIdLong()); + cakeDaysCache.add(member.getId()); // get this checked with chris } /**