Skip to content
This repository has been archived by the owner on Sep 9, 2024. It is now read-only.

Commit

Permalink
Add member and player role logic
Browse files Browse the repository at this point in the history
  • Loading branch information
rettichlp committed Jul 21, 2024
1 parent 7a9b510 commit e025e69
Show file tree
Hide file tree
Showing 6 changed files with 37 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,32 +29,44 @@ public static void sendSelfDeletingMessage(Event event, String message, int seco
}

public static void synchronise(Event event, Member member) {
ResponseEntity<ConnectionDataValue> 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<ConnectionDataValue> 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();
Expand All @@ -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());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit e025e69

Please sign in to comment.