commit f25f5e50207ae1095b0bf52687e87acc96a73ab0
parent b82cea9789a7ff96a3fde96c0da5a1e421c32603
Author: Wim Dupont <wim@wimdupont.com>
Date:   Sat,  1 Nov 2025 16:29:30 +0100
fix pvm auto adding duplicate discordId
Diffstat:
1 file changed, 14 insertions(+), 8 deletions(-)
diff --git a/src/main/java/com/wimdupont/sxcybot/services/guild/pvmrole/PvmRoleUserAutoAddService.java b/src/main/java/com/wimdupont/sxcybot/services/guild/pvmrole/PvmRoleUserAutoAddService.java
@@ -11,6 +11,7 @@ import net.dv8tion.jda.api.entities.MessageEmbed.Field;
 import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.dao.DataIntegrityViolationException;
 import org.springframework.stereotype.Service;
 
 import java.awt.Color;
@@ -56,15 +57,20 @@ public class PvmRoleUserAutoAddService {
                         logger.warn("Multiple users found for rsn {}", membership.player().username());
                     }
                     if (!discordUsers.isEmpty()) {
-                        var pvmRoleUser = pvmRoleUserService.save(PvmRoleUser.Builder.newBuilder()
-                                .discordId(discordUsers.getFirst().getId())
-                                .rsn(membership.player().username())
-                                .build());
                         try {
-                            pvmRoleSnapshotComparatorService.takeSnapshot(channel, pvmRoleUser, true, true);
-                        } catch (EntityNotFoundException ex) {
-                            logger.error("No snapshot taken for {} : {}", pvmRoleUser, ex.getMessage());
-                            channel.sendMessage(String.format("Error whilst taking snapshot for %s.", pvmRoleUser.getRsn())).queue();
+                            var pvmRoleUser = pvmRoleUserService.save(PvmRoleUser.Builder.newBuilder()
+                                    .discordId(discordUsers.getFirst().getId())
+                                    .rsn(membership.player().username())
+                                    .build());
+                            try {
+                                pvmRoleSnapshotComparatorService.takeSnapshot(channel, pvmRoleUser, true, true);
+                            } catch (EntityNotFoundException ex) {
+                                logger.error("No snapshot taken for {} : {}", pvmRoleUser, ex.getMessage());
+                                channel.sendMessage(String.format("Error whilst taking snapshot for %s.", pvmRoleUser.getRsn())).queue();
+                            }
+                        } catch (DataIntegrityViolationException ex) {
+                            logger.error("User ({}) not added with rsn {} : {}",
+                                    discordUsers.getFirst().getId(), membership.player().username(), ex.getMessage());
                         }
                     } else {
                         unknownList.add(membership.player().username());