diff --git a/src/main/java/net/Broken/Tools/UserManager/Stats/UserStatsUtils.java b/src/main/java/net/Broken/Tools/UserManager/Stats/UserStatsUtils.java index 79fd099..1313979 100644 --- a/src/main/java/net/Broken/Tools/UserManager/Stats/UserStatsUtils.java +++ b/src/main/java/net/Broken/Tools/UserManager/Stats/UserStatsUtils.java @@ -56,16 +56,34 @@ public class UserStatsUtils { public List getUserStats(UserEntity userEntity){ User jdaUser = MainBot.jda.getUserById(userEntity.getJdaId()); - if(userEntity.getUserStats() == null || userEntity.getUserStats().size() == 0 || userEntity.getUserStats().size() != jdaUser.getMutualGuilds().size()){ + if(userEntity.getUserStats() == null || userEntity.getUserStats().size() == 0 || userEntity.getUserStats().size() < jdaUser.getMutualGuilds().size()){ logger.debug("Stats not found for " + userEntity.getName()); User user = MainBot.jda.getUserById(userEntity.getJdaId()); if(user == null) return null; - List stats = new ArrayList<>(); - for(Guild guid : user.getMutualGuilds()){ - logger.debug(guid.getName()); - stats.add(new UserStats(guid.getId(), userEntity)); + List stats; + if(userEntity.getUserStats() == null || userEntity.getUserStats().size() == 0){ + stats = new ArrayList<>(); + for(Guild guid : user.getMutualGuilds()){ + logger.debug(guid.getName()); + stats.add(new UserStats(guid.getId(), userEntity)); + } } + else{ + stats = userEntity.getUserStats(); + ArrayList guildStat = new ArrayList<>(); + for(UserStats stat : stats){ + guildStat.add(stat.getGuildId()); + } + for(Guild guid : user.getMutualGuilds()){ + logger.debug(guid.getName()); + if(!guildStat.contains(guid.getId())){ + logger.debug("Guild " + guid.getName() + " stat don't exist"); + stats.add(new UserStats(guid.getId(), userEntity)); + } + } + } + stats = (List) userStatsRepository.save(stats); userEntity.setUserStats(stats); userEntity = userRepository.save(userEntity);