forked from Fascinated/Bat
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());
|
Serializable profile = getProfiles().get(clazz.getSimpleName());
|
||||||
if (profile == null) {
|
if (profile == null) {
|
||||||
T newProfile = clazz.cast(clazz.getDeclaredConstructors()[0].newInstance());
|
T newProfile = clazz.cast(clazz.getDeclaredConstructors()[0].newInstance());
|
||||||
org.bson.Document profiles = document.get("profiles", new org.bson.Document());
|
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 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);
|
getProfiles().put(clazz.getSimpleName(), newProfile);
|
||||||
return newProfile;
|
return newProfile;
|
||||||
}
|
}
|
||||||
|
@ -43,6 +43,11 @@ public class BatUser extends ProfileHolder {
|
|||||||
@Id
|
@Id
|
||||||
private final String id;
|
private final String id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The global name of the user
|
||||||
|
*/
|
||||||
|
private String globalName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The time this user was created
|
* The time this user was created
|
||||||
*/
|
*/
|
||||||
@ -53,13 +58,18 @@ public class BatUser extends ProfileHolder {
|
|||||||
this.document = document;
|
this.document = document;
|
||||||
boolean newAccount = this.document.isEmpty();
|
boolean newAccount = this.document.isEmpty();
|
||||||
this.createdAt = newAccount ? new Date() : document.getDate("createdAt");
|
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
|
* The name of the user
|
||||||
*/
|
*/
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return getDiscordUser().getEffectiveName();
|
return this.getGlobalName();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -50,6 +50,12 @@ public class GuildService extends ListenerAdapter implements EventListener {
|
|||||||
DiscordService.JDA.addEventListener(this);
|
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 * * *")
|
@Scheduled(cron = "0 0 0 * * *")
|
||||||
private void validatePremiumStatus() {
|
private void validatePremiumStatus() {
|
||||||
for (BatGuild guild : guilds.values()) {
|
for (BatGuild guild : guilds.values()) {
|
||||||
@ -83,7 +89,7 @@ public class GuildService extends ListenerAdapter implements EventListener {
|
|||||||
if (document != null) {
|
if (document != null) {
|
||||||
BatGuild guild = new BatGuild(id, document);
|
BatGuild guild = new BatGuild(id, document);
|
||||||
guilds.put(id, guild);
|
guilds.put(id, guild);
|
||||||
log.info("Loaded guild \"{}\" in {}ms", guild.getName(),System.currentTimeMillis() - before);
|
log.info("Loaded guild \"{}\" in {}ms", guild.getName(), System.currentTimeMillis() - before);
|
||||||
return guild;
|
return guild;
|
||||||
}
|
}
|
||||||
// New guild
|
// New guild
|
||||||
|
@ -7,6 +7,7 @@ import com.mongodb.client.model.Filters;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NonNull;
|
import lombok.NonNull;
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
|
import net.dv8tion.jda.api.events.user.update.UserUpdateGlobalNameEvent;
|
||||||
import org.bson.Document;
|
import org.bson.Document;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.annotation.DependsOn;
|
import org.springframework.context.annotation.DependsOn;
|
||||||
@ -81,4 +82,10 @@ public class UserService implements EventListener {
|
|||||||
}
|
}
|
||||||
log.info("Saved all users.");
|
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