Discord-Bot (Java, JDA) Befehl wird nicht ausgeführt?

Ich programmiere einen Discord-Bot mit Java. Um Befehle zu lesen, benutze ich einen Listener (der dem Builder hinzugefügt wurde) und ein Command-Manager-System.

Dies ist der Listener:

public class Listener extends ListenerAdapter {

[...]

@Override
public void onMessageReceived(MessageReceivedEvent event) {
String message = event.getMessage().getContentDisplay();
if (event.isFromType(ChannelType.TEXT)) {
TextChannel channel = event.getTextChannel();
if (message.startsWith(Bot.INSTANCE.prefix)) {
String[] args = message.substring(Bot.INSTANCE.prefix.length()).split(" ");
if (args.length > 0) {
if(!Bot.INSTANCE.getCmdMan().perform(args[0], event.getMember(), channel, event.getMessage())) {
// Kein Befehl entdeckt
}
}
}
}
}
}

Die getCmdMan()-Methode liefert den Command-Manager, der hier steht:

public class CommandManager {

public ConcurrentHashMap<String, ServerCommand> commands;

public CommandManager() {

this.commands = new ConcurrentHashMap<>();

[...]

this.commands.put("startGW", new StartGiveawayCommand());

[...]

}

public boolean perform(String command, Member m, TextChannel channel, Message message) {

ServerCommand cmd;

if ((cmd = this.commands.get(command.toLowerCase())) != null) {

cmd.performCommand(m, channel, message);

}

return false;

}

}

Alle Befehlsklassen erben (implements Klasse()) aus der Command-Klasse. Ich denke aber nicht, dass ich diese hier aufführen muss, da sie nur die Funktion, die in den Befehls-Klassen überschrieben wird, enthält. Die Befehls-Klassen sehen folgendermaßen aus: (ich nehme als Beispiel die StartGiveawayCommand-Klasse)

public class StartGiveawayCommand implements ServerCommand {

@Override

public void performCommand(Member m, TextChannel c, Message message) {

int index = 0;

System.out.println(index);

index++;

if(!m.hasPermission(Permission.ADMINISTRATOR)) {

message.delete().queue();

c.sendMessage(":x: Du hast nicht die Berechtigung, HanLink-Bot zu verwenden!").queue();

return;

}

[...]

}

}

Die System.out.println("");-Funktionen habe ich hinzugefügt nachdem der Befehl nicht ausgeführt wurde. In die Konsole kam auch kein Output.

Die anderen Befehle werden aber ausgeführt (z.B. !purge)

Was habe ich falsch gemacht? bzw. Was muss ich ändern?

...zum Beitrag

Der Nutzer hatte einen Fehler in der Groß und Kleinschreibung.

Er hat den eingegebenen Befehl in LowerCase umgewandelt und hat dann eine Hashmap mit diesem Befehl durchsucht. In der Hashmap haben die Keys allerdings auch UpperCase Buchstaben enthalten, so dass keine Übereinstimmung gefunden wurde

...zur Antwort

Um an die Zahl zu kommen brauchst du web scraping. Das lässt sich in Python relativ leicht mit Selenium umsetzen. Es ist zwar ein bisschen langsam aber du findest viele Infos was gut für Anfänger ist. Per Selenium kannst du dann vllt auch in WhatsApp web schreiben. Ansonsten musst du vllt dauerhaft den Chat offen haben zu dem Fenster navigieren die Zahl Pasten und enter drücken. Müsste per pynput gehen. Auch müsstest du wenn du das ganze auf einem Server laufen lässt die Uhrzeit zum senden überprüfen. Vllt gibt es auch Timer die jeden Tag eine Funktion aufrufen. Ansonsten gibt es auch eine Windows Routine in die man eintragen kann wann programme gestartet werden sollen. Der nähme fällt mir leider gerade nicht ein.

Leider unterstützt WhatsApp keine Bots. Du solltest vllt Telegramm oder discord in Betracht ziehen da diese schon fortgeschrittener sind und Bots unterstützen

...zur Antwort

Ich kann dir eins machen

Ich brauche:

Version?

Bukkit oder Spigot?

Erbitte eine Rückmeldung auch wenn nein

Ich Poster gerne auch den Sourcecode also nicht wieder löschen gutefrage

...zur Antwort
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.