JDA-Applications / JDA-Utilities

A series of tools and utilities for JDA to assist in bot creation
Apache License 2.0
215 stars 107 forks source link

Commands dont Work #129

Open xXFlyingBananaXx opened 3 years ago

xXFlyingBananaXx commented 3 years ago

Hello, I tried to make Commands, but it didnt Work. I didnt found any issue Report that has kind of the same Problem, this is not an JDA Issue its an JDA-Utilities Issue. I hvae the latest Version of both, the Bot is running on a BungeeCord Plugin but that worked fine with just JDA.

So the Real Problem i guess is that the Command doesnt get registered because even on the help command it doesnt show the Command, i tried to Debug with a simple sout but it didnt Print.

Here are my 2 Classes: Main Class:


    public static void start(){

        try {
            JDABuilder bot = JDABuilder.createDefault("");
            CommandClientBuilder builder = new CommandClientBuilder();
            builder.setPrefix("f.");
            builder.setHelpWord("help");
            builder.setAlternativePrefix("f1.");
            builder.setOwnerId("847627635324354631");
            builder.addCommand(new ServerCommand());
            builder.setActivity(Activity.playing("Joine jetzt 'Tsukimi.de'"));
            builder.setStatus(OnlineStatus.ONLINE);

            CommandClient client = builder.build();
            bot.addEventListeners(client);
            bot.build();

            BCSystems.plugin.getProxy().getConsole().sendMessage(TextComponent.fromLegacyText("§9The Discord Bot has been successfully started"));
        }catch (LoginException e){
            e.printStackTrace();
        }

    }

}```

My Command Class:

public class ServerCommand extends Command { public ServerCommand(){ this.name = "server"; this.aliases = new String[]{"s","ip"}; this.help = "Dieser Command gibt Informationen über den Server aus";

}
@Override
protected void execute(CommandEvent event) {
    List<String> list = new ArrayList<>();

    EmbedBuilder embedBuilder = new EmbedBuilder();
    embedBuilder.setTitle("Tsukimi.de");
    embedBuilder.setDescription("Joine Jetzt mit der 1.8.8 - 1.16.5");
    BCSystems.plugin.getProxy().getPlayers().forEach(proxiedPlayer -> {
        list.add(proxiedPlayer.getDisplayName());
    });
    if (list.isEmpty()){
        return;
    }else {
        embedBuilder.addField("Online Spieler",list.toString(),true);
    }

    System.out.println("Command geht eig?");
    event.getMessage().reply(embedBuilder.build()).queue();
}

}


I hope you can help me, thanks!
Xirado commented 3 years ago

While i can't tell you what's wrong with your code, all i can say is that this is certainly not a JDA-Utilities issue. You should ask for help on the JDA Discord in the jda-utilities channel.

xXFlyingBananaXx commented 3 years ago

Well i did ask and they said its probably a Bug and i should do my own Command thing so :/

Destitution-SC commented 3 years ago

Hey there,

I'm not sure if that's the actual problem but you're checking here "JDABuilder" it should be "JDA" JDABuilder bot = JDABuilder.createDefault("");

JDA bot = JDABuilder.createDefault("");

Xirado commented 3 years ago

Hey there,

I'm not sure if that's the actual problem but you're checking here "JDABuilder" it should be "JDA" JDABuilder bot = JDABuilder.createDefault("");

JDA bot = JDABuilder.createDefault("");

Nope, he is building the JDABuilder in the code

Destitution-SC commented 3 years ago

Oh yea right, i see. Then I'm not sure what's the problem.

Andre601 commented 3 years ago

You should fix the formatting of your issue. Parts of the code blocks are messed up

DManstrator commented 3 years ago

JDA bot = JDABuilder.createDefault("");

That wouldn't even compile. It is just a bad naming.

Bluedragonplayz2 commented 3 years ago

Your command should work. The only issue is there there is a return block in

 if (list.isEmpty()){
        return;
    }else {

soo if the BCSystem returned an empty list your bot wouldn't respond at all. There it may not be that your bot is not working it might be due to the return statement that stops the command from proceeding. If not there shouldn't be any other issue, if the above is not your problem try checking your bots intends maybe something is messed up there

Sanduhr32 commented 3 years ago

If the returned players is empty for some reason your list will also stay empty.