don't remove birthdays for members that have left

This commit is contained in:
Lee 2024-07-01 15:20:49 +01:00
parent be7f8a9057
commit c1f9bfec6a
2 changed files with 1 additions and 31 deletions

@ -31,12 +31,6 @@ public class BirthdayFeature extends Feature implements EventListener {
registerCommand(commandService, context.getBean(BirthdayCommand.class)); registerCommand(commandService, context.getBean(BirthdayCommand.class));
} }
@Override
public void onGuildMemberLeave(@NonNull BatGuild guild, @NonNull BatUser user, @NonNull GuildMemberRemoveEvent event) {
BirthdayProfile profile = guild.getBirthdayProfile();
profile.removeBirthday(user.getId());
}
/** /**
* Check birthdays every day at midnight * Check birthdays every day at midnight
*/ */
@ -49,7 +43,6 @@ public class BirthdayFeature extends Feature implements EventListener {
} }
BirthdayProfile profile = batGuild.getBirthdayProfile(); BirthdayProfile profile = batGuild.getBirthdayProfile();
profile.checkBirthdays(batGuild); profile.checkBirthdays(batGuild);
} }
} }
} }

@ -96,33 +96,10 @@ public class BirthdayProfile extends Serializable {
if (birthdays == null) { if (birthdays == null) {
birthdays = new HashMap<>(); birthdays = new HashMap<>();
} }
List<String> toRemove = new ArrayList<>();
Guild discordGuild = guild.getDiscordGuild();
for (Map.Entry<String, UserBirthday> entry : birthdays.entrySet()) {
String userId = entry.getKey();
Date birthday = entry.getValue().getBirthday();
if (userId == null || birthday == null) { // this should never happen
continue;
}
// Check if the user is still in the guild, if not remove them
Member member = discordGuild.getMemberById(userId);
if (member == null) {
toRemove.add(userId);
}
}
for (String userId : toRemove) {
birthdays.remove(userId);
}
if (channelId == null) { if (channelId == null) {
return false; return false;
} }
if (guild.getDiscordGuild().getTextChannelById(channelId) == null) {
if (discordGuild.getTextChannelById(channelId) == null) {
channelId = null; channelId = null;
return false; return false;
} }