forked from Fascinated/Bat
add check to see if the bot can give the role when adding a new role to the auto role list
This commit is contained in:
parent
e0fca911d9
commit
055c8709f8
22
src/main/java/cc/fascinated/bat/common/RoleUtils.java
Normal file
22
src/main/java/cc/fascinated/bat/common/RoleUtils.java
Normal file
@ -0,0 +1,22 @@
|
||||
package cc.fascinated.bat.common;
|
||||
|
||||
import cc.fascinated.bat.model.BatGuild;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import net.dv8tion.jda.api.entities.Role;
|
||||
|
||||
/**
|
||||
* @author Fascinated (fascinated7)
|
||||
*/
|
||||
public class RoleUtils {
|
||||
/**
|
||||
* Checks if a member has permission to give the role to another member
|
||||
*
|
||||
* @param guild the guild to check
|
||||
* @param member the member to check
|
||||
* @param role the role to check
|
||||
* @return if the member has permission to give the role
|
||||
*/
|
||||
public static boolean hasPermissionToGiveRole(BatGuild guild, Member member, Role role) {
|
||||
return member.getRoles().stream().anyMatch(r -> r.getPosition() > role.getPosition());
|
||||
}
|
||||
}
|
@ -1,9 +1,7 @@
|
||||
package cc.fascinated.bat.features;
|
||||
|
||||
import cc.fascinated.bat.service.CommandService;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
@ -13,9 +11,6 @@ import org.springframework.stereotype.Component;
|
||||
@Getter
|
||||
@Component
|
||||
public abstract class Feature {
|
||||
@Autowired
|
||||
private CommandService commandService;
|
||||
|
||||
/**
|
||||
* The name of the feature
|
||||
*/
|
||||
|
@ -2,9 +2,11 @@ package cc.fascinated.bat.features.autorole.command;
|
||||
|
||||
import cc.fascinated.bat.command.BatSubCommand;
|
||||
import cc.fascinated.bat.common.EmbedUtils;
|
||||
import cc.fascinated.bat.common.RoleUtils;
|
||||
import cc.fascinated.bat.features.autorole.profile.AutoRoleProfile;
|
||||
import cc.fascinated.bat.model.BatGuild;
|
||||
import cc.fascinated.bat.model.BatUser;
|
||||
import cc.fascinated.bat.service.DiscordService;
|
||||
import cc.fascinated.bat.service.GuildService;
|
||||
import lombok.NonNull;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
@ -54,10 +56,17 @@ public class AddSubCommand extends BatSubCommand {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!RoleUtils.hasPermissionToGiveRole(guild, guild.getDiscordGuild().getSelfMember(), role)) {
|
||||
interaction.replyEmbeds(EmbedUtils.errorEmbed()
|
||||
.setDescription("I do not have permission to give the role %s".formatted(role.getAsMention()))
|
||||
.build()).queue();
|
||||
return;
|
||||
}
|
||||
|
||||
profile.addRole(role.getId());
|
||||
guildService.saveGuild(guild);
|
||||
interaction.replyEmbeds(EmbedUtils.successEmbed()
|
||||
.setDescription("Successfully added the role %s to the auto roles list".formatted(role.getAsMention()))
|
||||
.setDescription("Successfully added the %s role to the auto roles list".formatted(role.getAsMention()))
|
||||
.build()).queue();
|
||||
}
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ public class RemoveSubCommand extends BatSubCommand {
|
||||
|
||||
profile.removeRole(role.getId());
|
||||
guildService.saveGuild(guild);
|
||||
interaction.replyEmbeds(EmbedUtils.errorEmbed()
|
||||
interaction.replyEmbeds(EmbedUtils.successEmbed()
|
||||
.setDescription("Successfully removed the role %s from the auto roles list".formatted(role.getAsMention()))
|
||||
.build()).queue();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user