Initial work on permission messages
This commit is contained in:
parent
346b732eeb
commit
fb1ca42526
|
@ -26,6 +26,7 @@ import com.discordsrv.api.placeholder.annotation.Placeholder;
|
|||
import com.discordsrv.common.DiscordSRV;
|
||||
import com.discordsrv.common.config.main.DiscordInviteConfig;
|
||||
import com.discordsrv.common.module.type.AbstractModule;
|
||||
import com.discordsrv.common.permission.util.DiscordPermissionUtil;
|
||||
import net.dv8tion.jda.api.JDA;
|
||||
import net.dv8tion.jda.api.Permission;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
|
@ -119,6 +120,8 @@ public class DiscordInviteModule extends AbstractModule<DiscordSRV> {
|
|||
return;
|
||||
}
|
||||
|
||||
if (!DiscordPermissionUtil.requiredPermissionsCheck(this, "automatically create invite", channel, Permission.CREATE_INSTANT_INVITE)) return;
|
||||
|
||||
channel.createInvite().setMaxAge(0).setUnique(true).queue(
|
||||
inv -> this.invite = inv.getUrl(),
|
||||
ErrorCallbackContext.context("Failed to auto create invite")
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
package com.discordsrv.common.permission.util;
|
||||
|
||||
import com.discordsrv.common.DiscordSRV;
|
||||
import com.discordsrv.common.logging.Logger;
|
||||
import com.discordsrv.common.module.type.AbstractModule;
|
||||
import net.dv8tion.jda.api.Permission;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import net.dv8tion.jda.api.entities.channel.middleman.GuildChannel;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class DiscordPermissionUtil {
|
||||
public static boolean requiredPermissionsCheck(AbstractModule<DiscordSRV> module, String action, GuildChannel channel, Permission ...permissions) {
|
||||
Logger logger = module.logger();
|
||||
Guild guild = channel.getGuild();
|
||||
Member selfMember = guild.getSelfMember();
|
||||
|
||||
Set<String> missingPermissions = new HashSet<>();
|
||||
for (Permission permission : permissions) {
|
||||
if (!selfMember.hasPermission(channel, permission)) missingPermissions.add(permission.getName());
|
||||
}
|
||||
|
||||
if (missingPermissions.size() > 0) {
|
||||
logger.error("Could not " + action + " because the bot does not have the following permissions in \"" + channel.getName() + "\": " + String.join(", ", missingPermissions));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue