Discord Bot startet nicht?
Guten Tag,
Ich habe als JS-Anfänger einen Discord Bot programmiert.
Befolgt habe ich diese Anleitung.
Wenn ich den Bot nun starte, steht nur das da:
D:\Service\Server\Discord\Bots>node bot.js
D:\Service\Server\Discord\Bots>
Wenn ich beim JavaScript noch ein kleines Sleep einbaue, dauert das auch länger.
Der Bot ist aber dennoch die ganze Zeit offline.
3 Antworten
der dazugehörige code (aber bitte ohne api key) wäre dazu hilfreich.
Nicht wunder, der Code ist etwas merkwürdig, wollte den nur zum Test mal starten.
sieht so aus als würdest du dich nicht einloggen.
const Discord = require('discord.js');
const client = new Discord.Client();
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
});
client.on('message', msg => {
if (msg.content === 'ping') {
msg.reply('Pong!');
}
});
client.login('token');
mach das ganze mal so.
ist meistens besser sich direkt beim entwickler anzuschauen wie das ganze so funktioniert. die discord.js library ist auch relativ gut dokumentiert (https://discord.js.org/)
Funktioniert, danke!
Weisst du per Zufall, wie ich meinen Bot dazubringe, eine editierte Nachricht zu überprüfen?
Habe im Internet
client.on("messageUpdate", msg => {
//do stuff
});
gefunden, aber auch nur das und das scheint nicht zu funktionieren.
also wenn ein user bzw bot eine nachricht editiert hat willst du das abfangen versteh ich das richtig?
probieres mal damit:
client.on("messageUpdate", (oldMsg, newMsg) => {
//do stuff
});
weil das event die alte und die neue nachricht liefert hats denk ich bei dir nich geklappt
Sorry, dass ich dich wieder frage... ist mir zu umständlich, wegen sowas ne neue Frage zu erstellen.
Weisst du, wie ich abfrage, ob Nachrichten im Channel sind? Vielleicht
if(anzahlNachrichten != "0")
, weiss dann nur nicht, wie ich an die Anzahl komme.
soweit ich weiß geht das nicht direkt so.
du kannst nur jedes mal wenn du ein message event bekommst die nachricht in ein array speichern. dann kannst du die änge des arrays abfragen.
wenn du das allerdings für mehr als einen server laufen haben willst musst du für jeden server auf dem der bot ist ein eigenes array haben.
Hmm.. ne, der Bot wird nur auf meinem Server laufen.
Es gibt ja dieses channel.lastMessage. Kann ich vielleicht damit herausfinden, ob eine Nachricht existiert?
ja dann lass den bot einfach laufen und die nachrichten im array speichern. dann geht das problemlos ab dem zeitpunkt in dem der bot online geht.
mit lastMessage wirst du immer nur die letzte gesendete nachricht bekommen also bringt dir auch nich wirklich was.
Also wenn ich eine Nachricht sende, wird diese als lastMessage angezeigt. Wenn ich die Nachricht wieder lösche, was ist dann? Ist die Nachricht vor meiner Nachricht dann die lastMessage?
Wenn ja, dann würde das funktionieren.
Ich versuche einen "clear" Befehl zu machen. Funktioniert eigentlich, aber man kann ja nur maximal 100 Nachrichten auf's Mal löschen und deswegen will ich jetzt, dass der in einer while-Schlaufe durch geht und halt prüft, ob noch eine Nachricht existiert.
ich denke nicht aber probiers aus. vermutlich wird er null zurückliefern oder abschmieren.
ja wie gesagt dann muss du alle nachrichten in nem array speichern und dann durch das array durch gehen und alle löschen.
get lastMessage() {
return this.messages.get(this.lastMessageID) || null;
}
Kannst du aus diesem Codebeispiel auslesen, was lastMessage zurückgibt, wenn keine da ist? Vielleicht null? Wie gesagt, bin JS-Anfänger.
das get da am anfang kann nich stimmen
du kannst werte überprüfen in dem du sie mit
console.log(wert)
ausgibts.
hast du in deinem package den start cmd drin stehen?
https://medium.com/davao-js/tutorial-creating-a-simple-discord-bot-9465a2764dc0
vielleicht findest du hier was :)
https://pastebin.com/61PAi0Dv