Kann mir jemand beim Coden meines Discord Bots helfen?
Ich möchte einen Discord Bot coden. Er kann eigentlich schon viel, aber ich brauche Hilfe um User bannen/kicken zu können. Ich hab schon viel versucht, aber nichts funktionierte bisher. Also nein, ich bin nicht faul oder so. Ich saß da mehrere Stunden dran und habe viel versucht, aber ich komme nicht weiter, weshalb ich nun hier nach Hilfe frage.
Hier ist ein Code von mir. Ich code in Javascript mit Visual Studio Code:
(kleine info: wenn ich "<ban" schreibe wird mir im terminal als fehler "message is not defined" angezeigt)
const prefix2 = '<'
bot.on('message', message=>{
if(message.startsWith(prefix2 + "ban")){
if(!message.member.hasPermission("ADMINSTRATOR")) return;
if(message.guild.member(mention).hasPermission("BAN_MEMBERS")) return;
let reason = message.content.slice(prefix2.length + mention.toString().length + 5);
message.channel.send(mention.username + " wurde gebannt");
mention.sendMessage("Du wurdest aus folgendem Grund gebannt: \n" + reason).then(d_msg=>{
message.guild.member(mention).ban(reason);
})
}
})
1 Antwort
Ganz einfach. In Zeile 2 deines Codeschnipsels weist du der Nachricht, die das Event in deine Funktion liefert, den Namen "msg" zu. In Zeile 3 versuchst du dann aber, auf eine Variable namens "message" zuzugreifen, die gar nicht existiert.
bot.on('message', msg=>{
if(message.startsWith(prefix2 + "ban")){
"message" ist daher immer undefined und wird nie "<ban" sein.
startsWith() kann nur auf Strings angewandt werden. Die Message, die du von Discord bekommst, ist kein String, sondern eine eigene Klasse, die weit mehr beinhaltet, als nur den Inhalt: https://discord.js.org/#/docs/main/stable/class/Message
Aus dieser Klasse musst du erstmal den Nachrichteninhalt als String raus holen. Dazu würde sich wohl laut Dokumentation das "content" Property eignen:
message.content.startsWith(...)
Wenn dir JavaScript sagt, dass etwas undefined ist, oder eine Funktion wie startsWith nicht darauf angewandt werden kann, lohnt es sich meist, die Variable einfach mal mittels console.log() auszugeben. Dann siehst du, was in der Variable eigentlich drin steckt.
Oh. Vielen Dank für die ausführliche Antwort. Ich werde es morgen nochmal versuchen.
Nun kommt der Fehler, dass message.startsWith keine Funktion wäre.