So, i tried to do a unban command which should work with the ID or the Tag of a user. But if i try to unban anyone then i get this error: java.lang.NullPointerException. Can anyone help me? I also tried to manage it with try-catch or something like if(event.getJDA != null) { but it always fails, also i tried to do it with assert event.getJDA != null.
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
public class UnbanListner extends ListenerAdapter {
public void onGuildMessageReceived(GuildMessageReceivedEvent event) {
String message = event.getMessage().getContentRaw();
Member member = event.getMessage().getMember();
List<String> args = Arrays.asList(message.split(" "));
long targetID = Long.parseLong(args.get(1).replaceAll("<@", "").replaceAll(">", "").replaceAll("!", ""));
Member target = event.getGuild().getMemberById(targetID);
if (message.startsWith(VibezBot.prefix + "unban")) {
assert member != null;
if (member.hasPermission(Permission.BAN_MEMBERS)) {
if (args.isEmpty() || args.size() < 1) {
event.getChannel().sendMessage("Falsch genutzter Befehl! Bitte nutze ``~ban [Userid]`` um einen User zu bannen!").queue();
return;
}
if (!event.getGuild().getSelfMember().hasPermission(Permission.BAN_MEMBERS)) {
event.getChannel().sendMessage("Ich hab nicht die Rechte Member zu bannen!").queue();
return;
}
if (target != null) {
if (target.hasPermission(Permission.BAN_MEMBERS) || !event.getGuild().getSelfMember().canInteract(target)) {
event.getChannel().sendMessage("Ich kann den User nicht bannen, weil der User entweder ein Moderator ist oder eine höhere Rolle als ich selbst hat").queue();
return;
}
}
}
event.getGuild().unban(Objects.requireNonNull(target.getJDA().getUserById(targetID))).queue();
event.getChannel().sendMessage("Der User " + target.getAsMention() + " wurde erfolgreich entbannt!").queue();
event.getChannel().sendMessage("Der User " + target.getAsMention() + " konnte leider nicht gebannt werden!").queue();
}
}
}
Because everyone asked me at which line the error occured here is the whole error:
[JDA MainWS-ReadThread] ERROR JDA - One of the EventListeners had an uncaught exception java.lang.NullPointerException at de.robert.vibezbot.modcmds.UnbanListner.onGuildMessageReceived(UnbanListner.java:55) at net.dv8tion.jda.api.hooks.ListenerAdapter.onEvent(ListenerAdapter.java:396) at net.dv8tion.jda.api.hooks.InterfacedEventManager.handle(InterfacedEventManager.java:96) at net.dv8tion.jda.internal.hooks.EventManagerProxy.handleInternally(EventManagerProxy.java:82) at net.dv8tion.jda.internal.hooks.EventManagerProxy.handle(EventManagerProxy.java:69) at net.dv8tion.jda.internal.JDAImpl.handleEvent(JDAImpl.java:152) at net.dv8tion.jda.internal.handle.MessageCreateHandler.handleInternally(MessageCreateHandler.java:97) at net.dv8tion.jda.internal.handle.SocketHandler.handle(SocketHandler.java:36) at net.dv8tion.jda.internal.requests.WebSocketClient.onDispatch(WebSocketClient.java:954) at net.dv8tion.jda.internal.requests.WebSocketClient.onEvent(WebSocketClient.java:841) at net.dv8tion.jda.internal.requests.WebSocketClient.handleEvent(WebSocketClient.java:819) at net.dv8tion.jda.internal.requests.WebSocketClient.onBinaryMessage(WebSocketClient.java:992) at com.neovisionaries.ws.client.ListenerManager.callOnBinaryMessage(ListenerManager.java:385) at com.neovisionaries.ws.client.ReadingThread.callOnBinaryMessage(ReadingThread.java:276) at com.neovisionaries.ws.client.ReadingThread.handleBinaryFrame(ReadingThread.java:996) at com.neovisionaries.ws.client.ReadingThread.handleFrame(ReadingThread.java:755) at com.neovisionaries.ws.client.ReadingThread.main(ReadingThread.java:108) at com.neovisionaries.ws.client.ReadingThread.runMain(ReadingThread.java:64) at com.neovisionaries.ws.client.WebSocketThread.run(WebSocketThread.java:45)
I hope this can help you. I already tried encapsulating it with an if but it didn´t help me.