From 9435d8610673de0d45f8c3850f9677284f92d51d Mon Sep 17 00:00:00 2001
From: Joe Shimell <49585339+JoeShimell@users.noreply.github.com>
Date: Tue, 27 Oct 2020 23:14:54 +0000
Subject: [PATCH] quick fix for start-up hang when the bot does not have the
'GUILD_MEMBERS' intent
---
dependency-reduced-pom.xml | 124 ++++++++++++++++++
pom.xml | 53 ++++++--
.../java/uk/co/angrybee/joe/CheckIntents.java | 40 ++++++
.../uk/co/angrybee/joe/DiscordClient.java | 14 +-
.../java/uk/co/angrybee/joe/VersionInfo.java | 2 +-
plugin.yml => src/main/resources/plugin.yml | 2 +-
6 files changed, 220 insertions(+), 15 deletions(-)
create mode 100644 dependency-reduced-pom.xml
create mode 100644 src/main/java/uk/co/angrybee/joe/CheckIntents.java
rename plugin.yml => src/main/resources/plugin.yml (92%)
mode change 100755 => 100644
diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml
new file mode 100644
index 0000000..d638c32
--- /dev/null
+++ b/dependency-reduced-pom.xml
@@ -0,0 +1,124 @@
+
+
+ 4.0.0
+ uk.co.angrybee.joe
+ discord-whitelister
+ discord-whitelister
+ 1.3.8
+ https://github.com/JoeShimell/DiscordWhitelisterSpigot
+
+
+
+
+ maven-clean-plugin
+ 3.1.0
+
+
+ maven-resources-plugin
+ 3.0.2
+
+
+ maven-compiler-plugin
+ 3.8.0
+
+
+ maven-surefire-plugin
+ 2.22.1
+
+
+ maven-jar-plugin
+ 3.0.2
+
+
+ maven-install-plugin
+ 2.5.2
+
+
+ maven-deploy-plugin
+ 2.8.2
+
+
+ maven-site-plugin
+ 3.7.1
+
+
+ maven-project-info-reports-plugin
+ 3.0.0
+
+
+ maven-shade-plugin
+
+
+ package
+
+ shade
+
+
+
+
+ ${project.artifactId}-${project.version}
+ true
+
+
+
+
+ maven-antrun-plugin
+ 1.8
+
+
+ install
+
+ run
+
+
+
+
+
+
+
+
+
+
+
+
+
+ maven-compiler-plugin
+
+
+ 8
+
+
+
+ maven-shade-plugin
+ 3.2.4
+
+
+
+
+
+ spigot-repo
+ https://hub.spigotmc.org/nexus/content/repositories/snapshots/
+
+
+
+ false
+
+ bintray-dv8fromtheworld-maven
+ bintray
+ https://dl.bintray.com/dv8fromtheworld/maven
+
+
+
+
+ org.spigotmc
+ spigot-api
+ 1.16.3-R0.1-SNAPSHOT
+ provided
+
+
+
+ 1.8
+ UTF-8
+ 1.8
+
+
diff --git a/pom.xml b/pom.xml
index baf7952..fbd0dab 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,15 +6,15 @@
uk.co.angrybee.joe
discord-whitelister
- 1.3.6
+ 1.3.8
discord-whitelister
https://github.com/JoeShimell/DiscordWhitelisterSpigot
UTF-8
- 1.7
- 1.7
+ 1.8
+ 1.8
@@ -34,22 +34,16 @@
-
- junit
- junit
- 4.11
- test
-
org.spigotmc
spigot-api
- 1.14.2-R0.1-SNAPSHOT
+ 1.16.3-R0.1-SNAPSHOT
provided
net.dv8tion
JDA
- 4.BETA.0_30
+ 4.2.0_211
club.minnced
@@ -77,6 +71,12 @@
log4j-slf4j-impl
2.12.1
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 3.2.4
+
@@ -133,10 +133,33 @@
- uber-${project.artifactId}-${project.version}
+ ${project.artifactId}-${project.version}
+ true
+
+
+
+
+ org.apache.maven.plugins
+ maven-antrun-plugin
+ 1.8
+
+
+ install
+
+ run
+
+
+
+
+
+
+
+
+
+
@@ -147,6 +170,12 @@
8
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 3.2.4
+
diff --git a/src/main/java/uk/co/angrybee/joe/CheckIntents.java b/src/main/java/uk/co/angrybee/joe/CheckIntents.java
new file mode 100644
index 0000000..92c874a
--- /dev/null
+++ b/src/main/java/uk/co/angrybee/joe/CheckIntents.java
@@ -0,0 +1,40 @@
+package uk.co.angrybee.joe;
+
+import net.dv8tion.jda.api.events.DisconnectEvent;
+import net.dv8tion.jda.api.events.ShutdownEvent;
+import net.dv8tion.jda.api.hooks.ListenerAdapter;
+import net.dv8tion.jda.api.requests.CloseCode;
+import net.dv8tion.jda.api.requests.GatewayIntent;
+import org.bukkit.Bukkit;
+
+import java.util.List;
+
+// Check for privileged intents on disconnect
+public class CheckIntents extends ListenerAdapter
+{
+ @Override
+ public void onShutdown(ShutdownEvent shutdownEvent)
+ {
+ CheckIntents(shutdownEvent.getCloseCode());
+ }
+
+ @Override
+ public void onDisconnect(DisconnectEvent disconnectEvent)
+ {
+ CheckIntents(disconnectEvent.getCloseCode());
+ }
+
+ private void CheckIntents(CloseCode closeCode)
+ {
+ if(closeCode == null)
+ return;
+
+ if(closeCode == CloseCode.DISALLOWED_INTENTS)
+ {
+ DiscordClient.ShutdownClient();
+
+ DiscordWhitelister.getPluginLogger().severe("[DiscordWhitelister] Cannot connect as this bot is not eligible to request the privileged intent 'GUILD_MEMBERS'");
+ DiscordWhitelister.getPluginLogger().severe("[DiscordWhitelister] To correct this please go to your bot located at: https://discord.com/developers/applications and enable 'Server Members Intent'");
+ }
+ }
+}
diff --git a/src/main/java/uk/co/angrybee/joe/DiscordClient.java b/src/main/java/uk/co/angrybee/joe/DiscordClient.java
index 48b6a54..5c7f949 100644
--- a/src/main/java/uk/co/angrybee/joe/DiscordClient.java
+++ b/src/main/java/uk/co/angrybee/joe/DiscordClient.java
@@ -8,6 +8,8 @@ import net.dv8tion.jda.api.entities.*;
import net.dv8tion.jda.api.events.guild.member.GuildMemberLeaveEvent;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
+import net.dv8tion.jda.api.requests.GatewayIntent;
+import net.dv8tion.jda.internal.utils.PermissionUtil;
import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
@@ -62,9 +64,19 @@ public class DiscordClient extends ListenerAdapter
try
{
- javaDiscordAPI = new JDABuilder(AccountType.BOT).setToken(clientToken).addEventListeners(new DiscordClient()).build();
+ //javaDiscordAPI = new JDABuilder(AccountType.BOT).setToken(clientToken).addEventListeners(new DiscordClient()).build();
+
+ javaDiscordAPI = JDABuilder
+ .createDefault(clientToken)
+ .addEventListeners(new DiscordClient())
+ .addEventListeners(new CheckIntents())
+ .enableIntents(GatewayIntent.GUILD_MEMBERS)
+ .build();
+
javaDiscordAPI.awaitReady();
+
+
return 0;
}
catch (LoginException | InterruptedException e)
diff --git a/src/main/java/uk/co/angrybee/joe/VersionInfo.java b/src/main/java/uk/co/angrybee/joe/VersionInfo.java
index 9e71fff..4fdc037 100644
--- a/src/main/java/uk/co/angrybee/joe/VersionInfo.java
+++ b/src/main/java/uk/co/angrybee/joe/VersionInfo.java
@@ -10,5 +10,5 @@ public class VersionInfo
return "v." + getVersion();
}
- private static String version = "1.3.7";
+ private static String version = "1.3.8";
}
diff --git a/plugin.yml b/src/main/resources/plugin.yml
old mode 100755
new mode 100644
similarity index 92%
rename from plugin.yml
rename to src/main/resources/plugin.yml
index 09f979b..422c6f3
--- a/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -1,5 +1,5 @@
name: DiscordWhitelister
-version: 1.3.7
+version: 1.3.8
author: Joe Shimell
main: uk.co.angrybee.joe.DiscordWhitelister
description: Discord whitelister bot.