mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-04-17 04:29:13 +00:00
added check to unmute user, in case the user left the guild
added checks if users being awarded a role are still in the guild
This commit is contained in:
@@ -180,7 +180,9 @@ public class AUserExperienceServiceBean implements AUserExperienceService {
|
|||||||
boolean currentlyHasNoExperienceRole = userExperience.getCurrentExperienceRole() == null;
|
boolean currentlyHasNoExperienceRole = userExperience.getCurrentExperienceRole() == null;
|
||||||
if(role == null) {
|
if(role == null) {
|
||||||
if(!currentlyHasNoExperienceRole){
|
if(!currentlyHasNoExperienceRole){
|
||||||
roleService.removeRoleFromUser(user, userExperience.getCurrentExperienceRole().getRole());
|
if(botService.isUserInGuild(userExperience.getUser())) {
|
||||||
|
roleService.removeRoleFromUser(user, userExperience.getCurrentExperienceRole().getRole());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
userExperience.setCurrentExperienceRole(null);
|
userExperience.setCurrentExperienceRole(null);
|
||||||
return;
|
return;
|
||||||
@@ -190,7 +192,9 @@ public class AUserExperienceServiceBean implements AUserExperienceService {
|
|||||||
if(currentlyHasNoExperienceRole || !role.getRole().getId().equals(userExperience.getCurrentExperienceRole().getRole().getId())) {
|
if(currentlyHasNoExperienceRole || !role.getRole().getId().equals(userExperience.getCurrentExperienceRole().getRole().getId())) {
|
||||||
log.info("User {} in server {} gets a new role {}", user.getUserReference().getId(), user.getServerReference().getId(), role.getRole().getId());
|
log.info("User {} in server {} gets a new role {}", user.getUserReference().getId(), user.getServerReference().getId(), role.getRole().getId());
|
||||||
if(!currentlyHasNoExperienceRole) {
|
if(!currentlyHasNoExperienceRole) {
|
||||||
roleService.removeRoleFromUser(user, userExperience.getCurrentExperienceRole().getRole());
|
if(botService.isUserInGuild(userExperience.getUser())) {
|
||||||
|
roleService.removeRoleFromUser(user, userExperience.getCurrentExperienceRole().getRole());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
roleService.addRoleToUser(user, role.getRole());
|
roleService.addRoleToUser(user, role.getRole());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import dev.sheldan.abstracto.scheduling.service.SchedulerService;
|
|||||||
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import net.dv8tion.jda.api.entities.Guild;
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
import net.dv8tion.jda.api.entities.Message;
|
import net.dv8tion.jda.api.entities.Message;
|
||||||
import net.dv8tion.jda.api.entities.TextChannel;
|
import net.dv8tion.jda.api.entities.TextChannel;
|
||||||
@@ -200,13 +201,18 @@ public class MuteServiceBean implements MuteService {
|
|||||||
log.info("Unmuting {} in server {}", mutingServer.getId(), mute.getMutedUser().getUserReference().getId());
|
log.info("Unmuting {} in server {}", mutingServer.getId(), mute.getMutedUser().getUserReference().getId());
|
||||||
MuteRole muteRole = muteRoleManagementService.retrieveMuteRoleForServer(mutingServer);
|
MuteRole muteRole = muteRoleManagementService.retrieveMuteRoleForServer(mutingServer);
|
||||||
log.trace("Using the mute role {} mapping to role {}", muteRole.getId(), muteRole.getRole().getId());
|
log.trace("Using the mute role {} mapping to role {}", muteRole.getId(), muteRole.getRole().getId());
|
||||||
roleService.removeRoleFromUser(mute.getMutedUser(), muteRole.getRole());
|
Guild guild = botService.getGuildById(mute.getMutingServer().getId()).orElseGet(null);
|
||||||
|
if(botService.isUserInGuild(guild, mute.getMutedUser())) {
|
||||||
|
roleService.removeRoleFromUser(mute.getMutedUser(), muteRole.getRole());
|
||||||
|
} else {
|
||||||
|
log.info("User to unmute left the guild.");
|
||||||
|
}
|
||||||
UnMuteLog unMuteLog = UnMuteLog
|
UnMuteLog unMuteLog = UnMuteLog
|
||||||
.builder()
|
.builder()
|
||||||
.mute(mute)
|
.mute(mute)
|
||||||
.mutingUser(botService.getMemberInServer(mute.getMutingUser()))
|
.mutingUser(botService.getMemberInServer(mute.getMutingUser()))
|
||||||
.unMutedUser(botService.getMemberInServer(mute.getMutedUser()))
|
.unMutedUser(botService.getMemberInServer(mute.getMutedUser()))
|
||||||
.guild(botService.getGuildById(mute.getMutingServer().getId()).orElseGet(null))
|
.guild(guild)
|
||||||
.server(mute.getMutingServer())
|
.server(mute.getMutingServer())
|
||||||
.build();
|
.build();
|
||||||
sendUnmuteLog(unMuteLog);
|
sendUnmuteLog(unMuteLog);
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
"author": {
|
<#if unMutedUser?has_content>
|
||||||
"name": "${unMutedUser.effectiveName}",
|
"author": {
|
||||||
"avatar": "${unMutedUser.user.effectiveAvatarUrl}"
|
"name": "${unMutedUser.effectiveName}",
|
||||||
},
|
"avatar": "${unMutedUser.user.effectiveAvatarUrl}"
|
||||||
|
},
|
||||||
|
</#if>
|
||||||
"title": {
|
"title": {
|
||||||
"title": "User has been unmuted"
|
"title": "User has been unmuted"
|
||||||
},
|
},
|
||||||
@@ -14,11 +16,20 @@
|
|||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "Unmuted User",
|
"name": "Unmuted User",
|
||||||
"value": "${unMutedUser.effectiveName} ${unMutedUser.asMention} (${unMutedUser.idLong?c})"
|
<#if unMutedUser?has_content>
|
||||||
|
"value": "${unMutedUser.effectiveName} ${unMutedUser.asMention} (${unMutedUser.idLong?c})"
|
||||||
|
<#else>
|
||||||
|
"value": "User has left the server (${mute.mutedUser.userReference.id?c})"
|
||||||
|
</#if>
|
||||||
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Muted by",
|
"name": "Muted by",
|
||||||
"value": "${mutingUser.effectiveName} ${mutingUser.asMention} (${mutingUser.idLong?c})"
|
<#if mutingUser?has_content>
|
||||||
|
"value": "${mutingUser.effectiveName} ${mutingUser.asMention} (${mutingUser.idLong?c})"
|
||||||
|
<#else>
|
||||||
|
"value": "User has left the server (${mute.mutingUser.userReference.id?c})"
|
||||||
|
</#if>
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Location of the mute",
|
"name": "Location of the mute",
|
||||||
|
|||||||
@@ -68,10 +68,25 @@ public class BotServiceBean implements BotService {
|
|||||||
if(guildById != null) {
|
if(guildById != null) {
|
||||||
return guildById.getMemberById(memberId);
|
return guildById.getMemberById(memberId);
|
||||||
} else {
|
} else {
|
||||||
throw new RuntimeException(String.format("Member %s not found in guild %s", memberId, serverId));
|
throw new RuntimeException(String.format("Guild %s not found.", serverId));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isUserInGuild(AUserInAServer aUserInAServer) {
|
||||||
|
Guild guildById = instance.getGuildById(aUserInAServer.getServerReference().getId());
|
||||||
|
if(guildById != null) {
|
||||||
|
return isUserInGuild(guildById, aUserInAServer);
|
||||||
|
} else {
|
||||||
|
throw new RuntimeException(String.format("Guild %s not found.", aUserInAServer.getServerReference().getId()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isUserInGuild(Guild guild, AUserInAServer aUserInAServer) {
|
||||||
|
return guild.getMemberById(aUserInAServer.getUserReference().getId()) != null;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Member getMemberInServer(AUserInAServer aUserInAServer) {
|
public Member getMemberInServer(AUserInAServer aUserInAServer) {
|
||||||
return getMemberInServer(aUserInAServer.getServerReference().getId(), aUserInAServer.getUserReference().getId());
|
return getMemberInServer(aUserInAServer.getServerReference().getId(), aUserInAServer.getUserReference().getId());
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ public interface BotService {
|
|||||||
JDA getInstance();
|
JDA getInstance();
|
||||||
GuildChannelMember getServerChannelUser(Long serverId, Long channelId, Long userId);
|
GuildChannelMember getServerChannelUser(Long serverId, Long channelId, Long userId);
|
||||||
Member getMemberInServer(Long serverId, Long memberId);
|
Member getMemberInServer(Long serverId, Long memberId);
|
||||||
|
boolean isUserInGuild(AUserInAServer aUserInAServer);
|
||||||
|
boolean isUserInGuild(Guild guild, AUserInAServer aUserInAServer);
|
||||||
Member getMemberInServer(AUserInAServer aUserInAServer);
|
Member getMemberInServer(AUserInAServer aUserInAServer);
|
||||||
Member getMemberInServer(AServer server, AUser member);
|
Member getMemberInServer(AServer server, AUser member);
|
||||||
CompletableFuture<Void> deleteMessage(Long serverId, Long channelId, Long messageId);
|
CompletableFuture<Void> deleteMessage(Long serverId, Long channelId, Long messageId);
|
||||||
|
|||||||
Reference in New Issue
Block a user