|
8 | 8 | import com.earth2me.essentials.utils.FormatUtil; |
9 | 9 | import com.earth2me.essentials.utils.NumberUtil; |
10 | 10 | import com.earth2me.essentials.utils.VersionUtil; |
| 11 | +import com.google.common.collect.ImmutableList; |
11 | 12 | import com.neovisionaries.ws.client.ProxySettings; |
12 | 13 | import com.neovisionaries.ws.client.WebSocketFactory; |
13 | 14 | import net.dv8tion.jda.api.JDA; |
14 | 15 | import net.dv8tion.jda.api.JDABuilder; |
| 16 | +import net.dv8tion.jda.api.Permission; |
15 | 17 | import net.dv8tion.jda.api.entities.Guild; |
16 | 18 | import net.dv8tion.jda.api.entities.Role; |
17 | 19 | import net.dv8tion.jda.api.entities.Webhook; |
@@ -200,6 +202,17 @@ public void startup() throws LoginException, InterruptedException { |
200 | 202 | throw new IllegalArgumentException(tlLiteral("discordErrorNoGuild")); |
201 | 203 | } |
202 | 204 |
|
| 205 | + final Collection<Permission> requiredPermissions = ImmutableList.of(Permission.MANAGE_WEBHOOKS, Permission.MANAGE_ROLES, Permission.NICKNAME_MANAGE, Permission.VIEW_CHANNEL, Permission.MESSAGE_SEND, Permission.MESSAGE_EMBED_LINKS); |
| 206 | + final String[] missingPermissions = requiredPermissions.stream() |
| 207 | + .filter(permission -> !guild.getSelfMember().hasPermission(permission)) |
| 208 | + .map(Permission::getName) |
| 209 | + .toArray(String[]::new); |
| 210 | + |
| 211 | + if (missingPermissions.length > 0) { |
| 212 | + invalidStartup = true; |
| 213 | + throw new IllegalArgumentException(tlLiteral("discordErrorInvalidPerms", String.join(", ", missingPermissions))); |
| 214 | + } |
| 215 | + |
203 | 216 | interactionController = new InteractionControllerImpl(this); |
204 | 217 | // Each will throw an exception if disabled |
205 | 218 | try { |
|
0 commit comments