use of gg.projecteden.nexus.utils.Name in project Nexus by ProjectEdenGG.
the class TeamMechanic method getVoiceChannelMember.
@Nullable
public static Member getVoiceChannelMember(@NotNull OptionalPlayer hasPlayer) {
Player player = hasPlayer.getPlayer();
if (player == null)
return null;
Guild guild = Discord.getGuild();
if (guild == null)
return null;
DiscordUser discordUser = new DiscordUserService().get(player);
Member member = discordUser.getMember();
if (member == null) {
// user has no linked account, find a disc account with matching (nick)name
Optional<Member> optionalMember = guild.getMembers().stream().filter(fmember -> (fmember.getNickname() != null && fmember.getNickname().equalsIgnoreCase(Name.of(player))) || fmember.getUser().getName().equalsIgnoreCase(Name.of(player))).findAny();
if (optionalMember.isPresent())
member = optionalMember.get();
else
return null;
}
if (member.getVoiceState() == null || !member.getVoiceState().inAudioChannel())
return null;
return member;
}
use of gg.projecteden.nexus.utils.Name in project Nexus by ProjectEdenGG.
the class RoleManager method update.
public static void update(DiscordUser user) {
if (Discord.getGuild() == null)
return;
DiscordUserService service = new DiscordUserService();
String name = Name.of(user);
if (name == null)
return;
if (ignore.contains(user.getUniqueId()))
return;
String nickname = Nickname.of(user);
Color roleColor = user.getRank().getDiscordColor();
if (roleColor == null) {
user.setRoleId(null);
service.save(user);
return;
}
debug("Updating role for " + user.getNickname());
if (user.getRoleId() == null) {
debug(" No role found, searching");
List<Role> rolesByName = Discord.getGuild().getRolesByName(name, true);
if (rolesByName.size() > 0) {
debug(" Found matching username role");
user.setRoleId(rolesByName.get(0).getId());
service.save(user);
} else {
List<Role> rolesByNickname = Discord.getGuild().getRolesByName(nickname, true);
if (rolesByNickname.size() > 0) {
debug(" Found matching nickname role");
user.setRoleId(rolesByNickname.get(0).getId());
service.save(user);
} else {
debug(" No matching role found, creating a new one");
Discord.getGuild().createRole().setName(nickname).setColor(roleColor).queue();
return;
}
}
}
Role role = Discord.getGuild().getRoleById(user.getRoleId());
if (role == null) {
debug(" Unable to retrieve role, deleted?");
return;
}
debug(" Role found, checking for updates");
boolean update = false;
net.dv8tion.jda.api.managers.RoleManager manager = role.getManager();
if (!roleColor.equals(role.getColor())) {
debug(" Updating color to " + roleColor);
update = true;
manager.setColor(roleColor);
}
if (!role.getName().equals(nickname)) {
debug(" Updating nickname to " + nickname);
update = true;
manager.setName(nickname);
}
if (update)
manager.queue(success -> Nexus.debug(" Updated role"), error -> {
throw new RuntimeException(error);
});
else
debug(" No updates needed");
}
Aggregations