0

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.

  • 1
    Does this answer your question? [What is a NullPointerException, and how do I fix it?](https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) – The Head Rush Apr 30 '21 at 17:49
  • You should use `event.getMessage().getMentionedMembers()` instead of manually parsing mentions and getting a member by id. – Minn Apr 30 '21 at 19:28

0 Answers0