Initial work on permission messages

This commit is contained in:
Dinty1 2023-07-31 20:51:47 +01:00
parent 346b732eeb
commit fb1ca42526
2 changed files with 34 additions and 0 deletions

View File

@ -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")

View File

@ -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;
}
}