fix user leaving guild npe
This commit is contained in:
parent
a6e490dbe5
commit
20c5f71cd4
@ -38,10 +38,10 @@ public abstract class ProfileHolder {
|
||||
Serializable profile = getProfiles().get(clazz.getSimpleName());
|
||||
if (profile == null) {
|
||||
T newProfile = clazz.cast(clazz.getDeclaredConstructors()[0].newInstance());
|
||||
org.bson.Document profiles = document.get("profiles", new org.bson.Document());
|
||||
org.bson.Document profileDocument = profiles.isEmpty() ? new org.bson.Document() : profiles.get(clazz.getSimpleName(), new org.bson.Document());
|
||||
Document profiles = document.get("profiles", new org.bson.Document());
|
||||
Document profileDocument = (Document) profiles.get(clazz.getSimpleName());
|
||||
|
||||
newProfile.load(profileDocument, BatApplication.GSON);
|
||||
newProfile.load(profileDocument == null ? new Document() : profileDocument, BatApplication.GSON);
|
||||
getProfiles().put(clazz.getSimpleName(), newProfile);
|
||||
return newProfile;
|
||||
}
|
||||
|
@ -43,6 +43,11 @@ public class BatUser extends ProfileHolder {
|
||||
@Id
|
||||
private final String id;
|
||||
|
||||
/**
|
||||
* The global name of the user
|
||||
*/
|
||||
private String globalName;
|
||||
|
||||
/**
|
||||
* The time this user was created
|
||||
*/
|
||||
@ -53,13 +58,18 @@ public class BatUser extends ProfileHolder {
|
||||
this.document = document;
|
||||
boolean newAccount = this.document.isEmpty();
|
||||
this.createdAt = newAccount ? new Date() : document.getDate("createdAt");
|
||||
|
||||
User user = DiscordService.JDA.getUserById(id);
|
||||
if (user != null) {
|
||||
this.globalName = user.getGlobalName();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The name of the user
|
||||
*/
|
||||
public String getName() {
|
||||
return getDiscordUser().getEffectiveName();
|
||||
return this.getGlobalName();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -50,6 +50,12 @@ public class GuildService extends ListenerAdapter implements EventListener {
|
||||
DiscordService.JDA.addEventListener(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates the premium status of all guilds
|
||||
* <p>
|
||||
* This method is scheduled to run every day at midnight
|
||||
* </p>
|
||||
*/
|
||||
@Scheduled(cron = "0 0 0 * * *")
|
||||
private void validatePremiumStatus() {
|
||||
for (BatGuild guild : guilds.values()) {
|
||||
|
@ -7,6 +7,7 @@ import com.mongodb.client.model.Filters;
|
||||
import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import net.dv8tion.jda.api.events.user.update.UserUpdateGlobalNameEvent;
|
||||
import org.bson.Document;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.DependsOn;
|
||||
@ -81,4 +82,10 @@ public class UserService implements EventListener {
|
||||
}
|
||||
log.info("Saved all users.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUserUpdateGlobalName(@NonNull BatUser user, String oldName, String newName, @NonNull UserUpdateGlobalNameEvent event) {
|
||||
log.info("User \"{}\" changed their name from \"{}\" to \"{}\"", user.getName(), oldName, newName);
|
||||
user.setGlobalName(newName);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user