From e025e6943753f1e78a29e831a34ca63df9d2ec78 Mon Sep 17 00:00:00 2001 From: RettichLP Date: Mon, 22 Jul 2024 00:16:45 +0200 Subject: [PATCH] Add member and player role logic --- .../discord/commands/RolesCommand.java | 3 +- .../configuration/DiscordBotProperties.java | 7 ++++ .../common/services/RoleSyncService.java | 6 ++-- .../discord/common/services/UtilService.java | 34 ++++++++++++------- .../discord/events/GuildAccessListener.java | 2 +- src/main/resources/application.properties | 3 +- 6 files changed, 37 insertions(+), 18 deletions(-) diff --git a/src/main/java/net/turniptales/discord/commands/RolesCommand.java b/src/main/java/net/turniptales/discord/commands/RolesCommand.java index 423701b..9c7891f 100644 --- a/src/main/java/net/turniptales/discord/commands/RolesCommand.java +++ b/src/main/java/net/turniptales/discord/commands/RolesCommand.java @@ -13,7 +13,7 @@ public RolesCommand(String name) { @Override public void onCommand(SlashCommandInteractionEvent event) { event.reply(""" - Die Standard Rolle für jedes Mitglied ist `%s`. + Die Standard Rolle für jedes Mitglied ist `%s`. Spieler, die mit ihrem Minecraft Account verknüpft sind, haben zusätzlich die Rolle `%s`. Wenn man längere Zeit auf diesem Discord ist, wird einem automatisch eine Rolle zugewiesen. Je nachdem, wie lang man schon auf diesem Discord ist, erhält man eine höhere Rolle: @@ -29,6 +29,7 @@ public void onCommand(SlashCommandInteractionEvent event) { So sieht man auch gut, wer schon lang dabei ist und sich schon gut auskennen könnte. Die Rollen werden durch den TurnipTales Bot automatisch vergeben und können dadurch nicht erstattet werden, wenn man den Server zwischenzeitlich verlässt. """.formatted( + discordBotProperties.getMemberRole().getName(), discordBotProperties.getPlayerRole().getName(), discordBotProperties.getRole0().getName(), discordBotProperties.getRole1Week().getName(), diff --git a/src/main/java/net/turniptales/discord/common/configuration/DiscordBotProperties.java b/src/main/java/net/turniptales/discord/common/configuration/DiscordBotProperties.java index b3b9a64..b1ba0ce 100644 --- a/src/main/java/net/turniptales/discord/common/configuration/DiscordBotProperties.java +++ b/src/main/java/net/turniptales/discord/common/configuration/DiscordBotProperties.java @@ -29,6 +29,9 @@ public class DiscordBotProperties { @Value("${discord.guild.categories.ticket-category}") private String ticketCategory; + @Value("${discord.guild.roles.member-role}") + private String memberRole; + @Value("${discord.guild.roles.player-role}") private String playerRole; @@ -93,6 +96,10 @@ public Category getTicketCategory() { return getGuild().getCategoryById(this.ticketCategory); } + public Role getMemberRole() { + return getGuild().getRoleById(this.memberRole); + } + public Role getPlayerRole() { return getGuild().getRoleById(this.playerRole); } diff --git a/src/main/java/net/turniptales/discord/common/services/RoleSyncService.java b/src/main/java/net/turniptales/discord/common/services/RoleSyncService.java index 5687d2e..d6e5cd3 100644 --- a/src/main/java/net/turniptales/discord/common/services/RoleSyncService.java +++ b/src/main/java/net/turniptales/discord/common/services/RoleSyncService.java @@ -40,9 +40,9 @@ public void run() { log.info("Discord role synchronising: Remove role {} from member {}", role.getName(), member.getEffectiveName()); }); - Role playerRole = discordBotProperties.getPlayerRole(); - if (!member.getRoles().contains(playerRole) || !member.getRoles().contains(highestRoleUserShouldHave)) { - guild.addRoleToMember(member, playerRole).queue(); + Role memberRole = discordBotProperties.getMemberRole(); + if (!member.getRoles().contains(memberRole) || !member.getRoles().contains(highestRoleUserShouldHave)) { + guild.addRoleToMember(member, memberRole).queue(); guild.addRoleToMember(member, highestRoleUserShouldHave).queue(); log.info("Discord role synchronising: Add role {} to member {}", highestRoleUserShouldHave.getName(), member.getEffectiveName()); } diff --git a/src/main/java/net/turniptales/discord/common/services/UtilService.java b/src/main/java/net/turniptales/discord/common/services/UtilService.java index 28c0d96..cb76e5c 100644 --- a/src/main/java/net/turniptales/discord/common/services/UtilService.java +++ b/src/main/java/net/turniptales/discord/common/services/UtilService.java @@ -29,32 +29,44 @@ public static void sendSelfDeletingMessage(Event event, String message, int seco } public static void synchronise(Event event, Member member) { - ResponseEntity connectionDataValueResponseEntity = api.getData(member.getId()); - if (!connectionDataValueResponseEntity.getStatusCode().is2xxSuccessful()) { - return; - } - - ConnectionDataValue connectionDataValue = connectionDataValueResponseEntity.getBody(); Guild guild = discordBotProperties.getGuild(); + // remove player role + guild.removeRoleFromMember(member, discordBotProperties.getPlayerRole()).queue(); + // remove permission roles guild.removeRoleFromMember(member, discordBotProperties.getSeniorModeratorRole()).queue(); guild.removeRoleFromMember(member, discordBotProperties.getModeratorRole()).queue(); guild.removeRoleFromMember(member, discordBotProperties.getSupporterRole()).queue(); + // remove team roles guild.removeRoleFromMember(member, discordBotProperties.getTeamBuilderRole()).queue(); guild.removeRoleFromMember(member, discordBotProperties.getTeamContentRole()).queue(); guild.removeRoleFromMember(member, discordBotProperties.getTeamSocialMediaRole()).queue(); + // remove time roles getTimeRoles().forEach(role -> guild.removeRoleFromMember(member, role).queue()); - guild.addRoleToMember(member, discordBotProperties.getPlayerRole()).queue(); + // add member role + guild.addRoleToMember(member, discordBotProperties.getMemberRole()).queue(); + // add time role + guild.addRoleToMember(member, getHighestTimeRole(requireNonNull(member).getTimeJoined())).queue(); - // ignore ADMINISTRATOR and HEAD_OF_DEVELOPMENT due to no permission - // ignore DEVELOPER due to not overwrite support-roles + ResponseEntity connectionDataValueResponseEntity = api.getData(member.getId()); + if (!connectionDataValueResponseEntity.getStatusCode().is2xxSuccessful()) { + return; + } + + ConnectionDataValue connectionDataValue = connectionDataValueResponseEntity.getBody(); + + // add player role + guild.addRoleToMember(member, discordBotProperties.getPlayerRole()).queue(); + // add permission role + // -> ignore ADMINISTRATOR and HEAD_OF_DEVELOPMENT due to no permission + // -> ignore DEVELOPER due to not overwrite support-roles switch (requireNonNull(connectionDataValue).getRole()) { case "SENIOR_MODERATOR" -> guild.addRoleToMember(member, discordBotProperties.getSeniorModeratorRole()).queue(); case "MODERATOR" -> guild.addRoleToMember(member, discordBotProperties.getModeratorRole()).queue(); case "SUPPORTER" -> guild.addRoleToMember(member, discordBotProperties.getSupporterRole()).queue(); } - + // add team roles connectionDataValue.getTeams().forEach(teamName -> { switch (teamName) { case "BUILDER" -> guild.addRoleToMember(member, discordBotProperties.getTeamBuilderRole()).queue(); @@ -63,8 +75,6 @@ public static void synchronise(Event event, Member member) { } }); - guild.addRoleToMember(member, getHighestTimeRole(requireNonNull(member).getTimeJoined())).queue(); - sendSelfDeletingMessage(event, "Rechte synchronisiert mit Minecraft Account `" + connectionDataValue.getMinecraftName() + "` für: " + member.getAsMention()); } } diff --git a/src/main/java/net/turniptales/discord/events/GuildAccessListener.java b/src/main/java/net/turniptales/discord/events/GuildAccessListener.java index d7f14c6..f694b68 100644 --- a/src/main/java/net/turniptales/discord/events/GuildAccessListener.java +++ b/src/main/java/net/turniptales/discord/events/GuildAccessListener.java @@ -91,7 +91,7 @@ public void onGuildMemberJoin(GuildMemberJoinEvent e) { communityTextChannel.sendMessageEmbeds(embedBuildercommunityTextChannel.build()).queue(); missionControlTextChannel.sendMessageEmbeds(embedBuildermissionControlTextChannel.build()).queue(); - guild.addRoleToMember(e.getUser(), discordBotProperties.getPlayerRole()).queue(); + guild.addRoleToMember(e.getUser(), discordBotProperties.getMemberRole()).queue(); guild.addRoleToMember(e.getUser(), discordBotProperties.getRole0()).queue(); } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 694637b..3bec016 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -13,7 +13,8 @@ discord.guild.channels.ticket-text-channel=1009477703990267954 discord.guild.categories.ticket-category=1009478372847517727 -discord.guild.roles.player-role=1190675464549847110 +discord.guild.roles.member-role=1190675464549847110 +discord.guild.roles.player-role=1263052609573617684 discord.guild.roles.senior-moderator-role=1208149723547050004 discord.guild.roles.moderator-role=1025864289346658355 discord.guild.roles.supporter-role=1009477020427747408