protected void checkPosition(Role role) { if(!getGuild().getSelfMember().canInteract(role)) throw new HierarchyException("Can't modify a role with higher or equal highest role than yourself! Role: " + role.toString()); } }
protected void checkPosition(Member member) { if(!getGuild().getSelfMember().canInteract(member)) throw new HierarchyException("Can't modify a member with higher or equal highest role than yourself!"); }
if (initialPos != i && !isOwner && !self.canInteract(role))
@Override protected boolean checkPermissions() { Member selfMember = getGuild().getSelfMember(); if (!selfMember.hasPermission(Permission.MANAGE_ROLES)) throw new InsufficientPermissionException(Permission.MANAGE_ROLES); if (!selfMember.canInteract(getRole())) throw new HierarchyException("Cannot modify a role that is higher or equal in hierarchy"); return super.checkPermissions(); /* //we can't reliably check the permissions of the role here long missingRaw = permissions; missingRaw &= ~selfPermissions; // exclude own perms missingRaw &= ~role.getPermissionsRaw(); // exclude role perms if (missingRaw != 0) { List<Permission> missingPermissions = Permission.getPermissions(missingRaw); if (!missingPermissions.isEmpty()) throw new InsufficientPermissionException(missingPermissions.get(0)); } */ }
private boolean canGiveRole(GuildMemberJoinEvent event, Role role) { return role != null && event.getGuild().getSelfMember().canInteract(role) && (event.getGuild().getSelfMember().hasPermission(Permissions.MANAGE_ROLES.getPermission()) || event.getGuild().getSelfMember().hasPermission(Permissions.ADMINISTRATOR.getPermission())); } }
@Override public boolean onCommand(CommandMessage context, String[] args) { User user = MentionableUtil.getUser(context, args); if (user == null) { return sendErrorMessage(context, context.i18n("mustMentionUser")); } if (userHasHigherRole(user, context.getMember())) { return sendErrorMessage(context, context.i18n("higherOrSameRole")); } if (!context.getGuild().getSelfMember().canInteract(context.getGuild().getMember(user))) { return sendErrorMessage(context, context.i18n("cantKickUser", user.getAsMention())); } return kickUser(context, context.getGuild().getMember(user), args); }
@SuppressWarnings("ConstantConditions") public void onMessageReactionRemove(MessageReactionRemoveEvent event) { ReactionTransformer transformer = getReactionTransformerFromMessageIdAndCheckPermissions( event.getGuild(), event.getMessageId(), event.getReactionEmote().getEmote().getIdLong() ); if (transformer == null) { return; } Role role = event.getGuild().getRoleById(transformer.getRoleIdFromEmote(event.getReactionEmote().getEmote())); if (role == null) { return; } if (!RoleUtil.hasRole(event.getMember(), role) || !event.getGuild().getSelfMember().canInteract(role)) { return; } DrainReactionRoleQueueTask.queueReactionActionEntity(new DrainReactionRoleQueueTask.ReactionActionEntity( event.getGuild().getIdLong(), event.getMember().getUser().getIdLong(), role.getIdLong(), DrainReactionRoleQueueTask.ReactionActionType.REMOVE )); }
private boolean banMemberOfServer(AvaIre avaire, Command command, CommandMessage context, User user, String[] args, boolean soft) { if (userHasHigherRole(user, context.getMember())) { return command.sendErrorMessage(context, context.i18n("higherRole")); } if (!context.getGuild().getSelfMember().canInteract(context.getGuild().getMember(user))) { return sendErrorMessage(context, context.i18n("userHaveHigherRole", user.getAsMention())); } String reason = generateReason(args); ModlogAction modlogAction = new ModlogAction( soft ? ModlogType.SOFT_BAN : ModlogType.BAN, context.getAuthor(), user, reason ); String caseId = Modlog.log(avaire, context, modlogAction); Modlog.notifyUser(user, context.getGuild(), modlogAction, caseId); context.getGuild().getController().ban(user, soft ? 0 : 7, String.format("%s - %s#%s (%s)", reason, context.getAuthor().getName(), context.getAuthor().getDiscriminator(), context.getAuthor().getId() )).queue(aVoid -> { context.makeSuccess(context.i18n("success")) .set("target", user.getName() + "#" + user.getDiscriminator()) .set("reason", reason) .queue(); }, throwable -> context.makeWarning(context.i18n("failedToBan")) .set("target", user.getName() + "#" + user.getDiscriminator()) .set("error", throwable.getMessage()) .queue()); return true; }
@SuppressWarnings("ConstantConditions") public void onMessageReactionAdd(MessageReactionAddEvent event) { ReactionTransformer transformer = getReactionTransformerFromMessageIdAndCheckPermissions( event.getGuild(), event.getMessageId(), event.getReactionEmote().getEmote().getIdLong() ); if (transformer == null) { return; } Role role = event.getGuild().getRoleById(transformer.getRoleIdFromEmote(event.getReactionEmote().getEmote())); if (role == null) { return; } if (RoleUtil.hasRole(event.getMember(), role) || !event.getGuild().getSelfMember().canInteract(role)) { return; } DrainReactionRoleQueueTask.queueReactionActionEntity(new DrainReactionRoleQueueTask.ReactionActionEntity( event.getGuild().getIdLong(), event.getMember().getUser().getIdLong(), role.getIdLong(), DrainReactionRoleQueueTask.ReactionActionType.ADD )); }
if (member != null && !wrapper.getGuild().getSelfMember().canInteract(member)) { MessageUtils.sendErrorMessage(String.format("Cannot " + modAction.getLowercaseName() + " %s! " + "Their highest role is higher than my highest role or they're the guild owner.",