Fixed some minor syncing issues

This commit is contained in:
Teriuihi 2021-09-20 04:03:44 +02:00
parent 1c2eeec78a
commit 9744eddd35
7 changed files with 58 additions and 24 deletions

View File

@ -97,32 +97,42 @@ public class Bot {
} }
} }
public boolean addRole(long userId, long roleId, long guildId) { public void addRole(long userId, long roleId, long guildId) {
Guild guild = jda.getGuildById(guildId); Guild guild = jda.getGuildById(guildId);
if (guild == null) if (guild == null)
return false; return;
Role role = guild.getRoleById(roleId); Role role = guild.getRoleById(roleId);
if (role == null) if (role == null)
return false; return;
Member member = guild.getMemberById(userId); Member member = guild.getMemberById(userId);
if (member == null) if (member == null) {
return false; guild.retrieveMemberById(userId).queue(m -> addRole(guild, m, role));
guild.addRoleToMember(member, role).queue(); return;
return true; }
addRole(guild, member, role);
} }
public boolean removeRole(long userId, long roleId, long guildId) { private void addRole(Guild guild, Member member, Role role) {
guild.addRoleToMember(member, role).queue();
}
public void removeRole(long userId, long roleId, long guildId) {
Guild guild = jda.getGuildById(guildId); Guild guild = jda.getGuildById(guildId);
if (guild == null) if (guild == null)
return false; return;
Role role = guild.getRoleById(roleId); Role role = guild.getRoleById(roleId);
if (role == null) if (role == null)
return false; return;
Member member = guild.getMemberById(userId); Member member = guild.getMemberById(userId);
if (member == null) if (member == null) {
return false; guild.retrieveMemberById(userId).queue(m -> removeRole(guild, m, role));
return;
}
removeRole(guild, member, role);
}
private void removeRole(Guild guild, Member member, Role role) {
guild.removeRoleFromMember(member, role).queue(); guild.removeRoleFromMember(member, role).queue();
return true;
} }
public boolean changeNick(long guildId, long userId, String nickname) { public boolean changeNick(long guildId, long userId, String nickname) {

View File

@ -21,11 +21,11 @@ public abstract class DiscordCommand {
public static void loadCommands() { public static void loadCommands() {
commands = new ArrayList<>(); commands = new ArrayList<>();
loadCommand(new DiscordStaffList(), loadCommand(new DiscordLinkCommand(),
new DiscordServerList(),
new DiscordLinkCommand(),
new DiscordUnlink(), new DiscordUnlink(),
new DiscordNick() new DiscordNick()
// new DiscordStaffList(),
// new DiscordServerList(),
); );
} }

View File

@ -4,8 +4,12 @@ import com.alttd.proxydiscordlink.DiscordLink;
public class DiscordModifyRole { public class DiscordModifyRole {
public static boolean discordAddRole(long userId, long roleId, long guildId) { public static void discordAddRole(long userId, long roleId, long guildId) {
return DiscordLink.getPlugin().getBot().addRole(userId, roleId, guildId); DiscordLink.getPlugin().getBot().addRole(userId, roleId, guildId);
}
public static void discordRemoveRole(long userId, long roleId, long guildId) {
DiscordLink.getPlugin().getBot().removeRole(userId, roleId, guildId);
} }
} }

View File

@ -50,6 +50,7 @@ public class DiscordLinkCommand extends DiscordCommand {
return; return;
List<DiscordRole> discordRoles = Utilities.getDiscordRolesForUser(uuid, member); List<DiscordRole> discordRoles = Utilities.getDiscordRolesForUser(uuid, member);
List<DiscordRole> minecraftRanks = Utilities.getMinecraftRolesForUser(uuid);
if (discordRoles == null) if (discordRoles == null)
return; return;

View File

@ -50,6 +50,8 @@ public class DiscordNick extends DiscordCommand {
case "username" -> { case "username" -> {
member.modifyNickname(discordLinkPlayer.getUsername()).queue(); member.modifyNickname(discordLinkPlayer.getUsername()).queue();
channel.sendMessage("Your nickname has been set to `" + discordLinkPlayer.getUsername() + "`.").queue(); channel.sendMessage("Your nickname has been set to `" + discordLinkPlayer.getUsername() + "`.").queue();
discordLinkPlayer.setNick(false);
DiscordLink.getPlugin().getDatabase().syncPlayer(discordLinkPlayer);
} }
case "nickname" -> { case "nickname" -> {
String nick = DiscordLink.getPlugin().getDatabase().getNick(discordLinkPlayer.getUuid()); String nick = DiscordLink.getPlugin().getDatabase().getNick(discordLinkPlayer.getUuid());
@ -57,6 +59,8 @@ public class DiscordNick extends DiscordCommand {
nick = discordLinkPlayer.getUsername(); nick = discordLinkPlayer.getUsername();
member.modifyNickname(nick).queue(); member.modifyNickname(nick).queue();
channel.sendMessage("Your nickname has been set to `" + nick + "`.").queue(); channel.sendMessage("Your nickname has been set to `" + nick + "`.").queue();
discordLinkPlayer.setNick(true);
DiscordLink.getPlugin().getDatabase().syncPlayer(discordLinkPlayer);
} }
default -> channel.sendMessage("The correct syntax is: `" + default -> channel.sendMessage("The correct syntax is: `" +
BotConfig.prefixMap.get(message.getGuild().getIdLong()) + BotConfig.prefixMap.get(message.getGuild().getIdLong()) +

View File

@ -34,6 +34,7 @@ public class DiscordRoleListener extends ListenerAdapter {
@Override @Override
public void onGuildMemberRoleAdd(@NotNull GuildMemberRoleAddEvent event) { public void onGuildMemberRoleAdd(@NotNull GuildMemberRoleAddEvent event) {
List<DiscordRole> added_roles = DiscordRole.getDiscordRoles().stream() List<DiscordRole> added_roles = DiscordRole.getDiscordRoles().stream()
.filter(DiscordRole::isUpdateToMinecraft)
.filter(discordRole -> event.getRoles().stream() .filter(discordRole -> event.getRoles().stream()
.anyMatch(role -> role.getIdLong() == discordRole.getId())) .anyMatch(role -> role.getIdLong() == discordRole.getId()))
.collect(Collectors.toList()); .collect(Collectors.toList());

View File

@ -14,10 +14,7 @@ import net.luckperms.api.model.user.User;
import net.luckperms.api.node.NodeType; import net.luckperms.api.node.NodeType;
import net.luckperms.api.node.types.InheritanceNode; import net.luckperms.api.node.types.InheritanceNode;
import java.util.List; import java.util.*;
import java.util.Random;
import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class Utilities { public class Utilities {
@ -131,4 +128,21 @@ public class Utilities {
}) })
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
public static List<DiscordRole> getMinecraftRolesForUser(UUID uuid) {
User user = getLuckPerms().getUserManager().getUser(uuid);
List<DiscordRole> roles = new ArrayList<>();
if (user == null)
return roles;
user.getNodes().stream()
.filter(node -> node instanceof InheritanceNode)
.map(node -> ((InheritanceNode) node).getGroupName())
.collect(Collectors.toList())
.forEach(lpName -> DiscordRole.getDiscordRoles().stream()
.filter(discordRole -> discordRole.getLuckpermsName().equals(lpName))
.findFirst()
.ifPresent(roles::add));
return roles;
}
} }