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?

programmieren, Java, Bot, jda, Discord, Discord Bot
Fragen beantworten bei Discord join?

Hallo ihr Lieben :)

Ich habe mir vor einiger Zeit einen Discord Server aufgebaut. Dort gibt es natürlich verschiedene Rollen für verschiedene Games, Twitch, etc.. Um auf die unterschiedlichen Channels zugreifen zu können braucht man die dazugehörige Rolle (z.b. in den Fortnite Chat kommt man nur wenn man die FN Rolle hat und in CoD Chat natürlich mit der CoD Rolle, usw..) Bei Join auf den Server werden den neuen Mitglieder durch den Mee6 Bot automatisch die Rolle "Member" zugeteilt mit der sie auf die allgemeinen Standart-Channels zugreifen können. Bisher habe ich den neuen Mitgliedern immer per privat Nachricht geschrieben und sie gefragt was auf sie zutrifft um ihnen die betreffenden Rollen zu geben. Nun folgendes Problem, da ich mich mit meiner Stream-Partnerin zusammen getan habe und ihr Community nun auch auf meinen DC-Server joint ist mir das mittlerweile zu umständlich jeden privat zu schreiben.

Ich weiß von meinem alten Clan-Server das man irgendwie irgendwo einstellen kann, das wenn jemand auf der Server joint, er einem Bot erst gewissen fragen beantworten muss (z.b. welche Games er spielt, ob er streamt, ob er von mir oder meiner Partnerin kommt, usw) So das man an Hand der darauf gegebenen Antworten ihm seine Rollen verteilen kann ohne groß privat rumzuschreiben.

Meine Frage ist nun.. wo und wie mach ich das? Das wäre mir sehr wichtig das rein zu kriegen. Wäre schön wenn mir da jemand weiter helfen könnte :)

PS ~ Erklärung bitte so das man es verstehen und umsetzt kann als nicht PC-Genie :D

Danke schon mal :)

Computer, Gaming, Erfahrungen, Discord, Spiele und Gaming, Discord Server, Discord Bot
Wie Discord Admins/Mods finden?

Ich habe bereits zwei vertrauenswürdige Personen als Admin. Das bringt mir jedoch nichts, wenn diese wegen der Uni keine Zeit haben.

Sie waren mal aktiv, aber das ist nun eben anders. Der eine ist einmal alle paar Monate da und der andere hat 1. eine komplett andere Zeitzone und 2. ist er eher mit lernen beschäftigt. Er ist zwar täglich online aber nicht 24/7.

Ich möchte meinen Server professioneller und strukturierter machen. Ein Support Ticket und so, mindestens ein Admin, der immer kontaktierbar ist. Ich bin zwar meistens erreichbar aber ohne Admins ist das einfach unprofessionell.

Wie/Wo kann ich vertrauenswürdige Personen dafür finden?

Es gibt leider viele Möglichkeiten, was die Person mit einer Admin Rolle anstellen kann. Von Mitgliedern und Bots kicken, über Bots verstellen, irgendwelche Sachen umstellen, wie zum Beispiel normalen Rollen Admin geben, was man nicht direkt bemerkt bis hin zu Kanäle löschen. Da gibt es sicher noch mehr, so viel Ahnung hab ich von Discord nicht.

Ich brauche unbedingt welche dafür. Und zwar vertrauenswürdige. Leute, mit denen ich mich auch verstehe. Menschlich, nicht "geschäftlich".

Den einen Admin kenne ich seit zwei Wochen. Wir haben uns super verstanden und schon nach ein paar Tagen bot ich ihm an, meinem Server beizutreten und eine Adminrolle zu ergattern. Ja, er macht nichts. Nichts was schaden könnte aber auch nichts was weiterhilft, außer alle paar Stunden zu bumpen.

Ich weiß nicht, ob das in dem Interesse liegt, Server zu griefen, aber ich würde es nicht riskieren.

Wie rekrutieren andere Server denn Admins?

Wie würdet ihr das machen?

Was ist am klügsten?

Computer, Teamspeak, Technik, Teamspeak 3, Technologie, Discord, Spiele und Gaming, Discord Server, Discord Bot

Meistgelesene Fragen zum Thema Discord Bot