Discord Bot startet nicht?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

der dazugehörige code (aber bitte ohne api key) wäre dazu hilfreich.

Woher ich das weiß:Studium / Ausbildung – Softwareentwickler, B. Sc. Informatik
Tyldu  27.07.2019, 11:03
@verreisterNutzer

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/)

1
verreisterNutzer  27.07.2019, 12:32
@Tyldu

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.

0
Tyldu  27.07.2019, 12:35
@verreisterNutzer

also wenn ein user bzw bot eine nachricht editiert hat willst du das abfangen versteh ich das richtig?

0
Tyldu  27.07.2019, 12:40
@verreisterNutzer

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

1
verreisterNutzer  28.07.2019, 11:45
@Tyldu

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.

0
Tyldu  28.07.2019, 11:50
@verreisterNutzer

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.

0
verreisterNutzer  28.07.2019, 11:54
@Tyldu

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?

0
Tyldu  28.07.2019, 11:59
@verreisterNutzer

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.

0
verreisterNutzer  28.07.2019, 12:02
@Tyldu

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.

0
Tyldu  28.07.2019, 12:06
@verreisterNutzer

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.

0
verreisterNutzer  28.07.2019, 12:10
@Tyldu
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.

0
Tyldu  28.07.2019, 12:12
@verreisterNutzer

das get da am anfang kann nich stimmen

du kannst werte überprüfen in dem du sie mit

console.log(wert)

ausgibts.

1

hast du in deinem package den start cmd drin stehen?

Woher ich das weiß:Hobby – Discord Bot Dev