Discord.js alle nachrichten löschen bis auf angepinnte?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Hier wie du es machen könntest:

const Discord = require('discord.js');

// Prefix um zu verhindern, dass versehentlich ein Befehl ausgeführt wird
const prefix = '>';

var client = new Discord.Client()
.on('ready', () => console.log('Client ready'))
.on('message', message => {

    // prüfen, ob das Prefix angegeben wurde
    if (!message.content.match(new RegExp('^' + prefix)))
        return;

    // Hier wird die eingegebene Nachricht überprüft (groß-kleinschreibung irrelevant)
    switch (message.content.replace(new RegExp('^' + prefix + '\\s*'), '').toLowerCase()) {

        case 'alle nachrichten löschen':

            // alle Nachrichten anfordern
            message.channel.fetchMessages()
            .then(messages => {

                // Funktion für alle Nachrichten ausführen
                messages.map(msg => {

                    // Falls Nachricht nicht angepinnt ist und gelöscht werden kann ...
                    if (!msg.pinned && msg.deletable)

                        // ... wird sie gelöscht
                        msg.delete();
                })
            })
            .catch(err => console.error(err));
            break;
    }
})

// Hier loggst du dich mit einem Token (von deinem Benutzer oder einem Bot) ein
.login('[DISCORD-TOKEN]');

Du musst natürlich noch in der letzten Zeile einen Token einfügen, dass sich der Bot anmelden kann.

Dann kann man mit dieser Nachricht alle Nachrichten löschen:

alle nachrichten löschen

Angepinnte Nachrichten werden nicht gelöscht. Fehlt die Berechtigung natürlich auch nicht.


DavidMayr006 
Fragesteller
 30.06.2019, 12:04

danke :) das mit dem token weiß ich schon aber EHRENMANN

0
Win7User  30.06.2019, 12:43
@DavidMayr006

So schnell wie es geht -- die Discord API kann ich leider nicht ändern 😉

0

So funktioniert das nicht. Bevor man sich an jegliche größeren Projekte wagt oder mit Bibliotheken arbeitet, so hat man erst einmal die Grundlagen der entsprechenden Sprache zu lernen. Discord.js ist schließlich nur eine vereinfachte Schnittstelle zur Discord-API, mit Dokumentation.

Wenn du nichts lernen möchtest, dann bleibt dir nur die Möglichkeit, einen Profi für die Entwicklung zu beauftragen.

Woher ich das weiß:Berufserfahrung

DavidMayr006 
Fragesteller
 29.06.2019, 21:46

Ich weiß die grundlagen und hab auch schon einiges geschafft aber hab hald keine ahnung wie ich die angepinnten ignorieren kann der rest ist kein problem

0
verreisterNutzer  29.06.2019, 21:47
@DavidMayr006

Da gibt es nichts zu "schaffen". Kann man programmieren, dann braucht man sich nur die Dokumentation von Discord.js durchlesen und setzt es um, fertig.

0
DavidMayr006 
Fragesteller
 29.06.2019, 21:48
@verreisterNutzer

lerning by doing... und die dokumentationen haben mich jetzt auch net umbedingt weitergebracht

0
verreisterNutzer  29.06.2019, 21:50
@DavidMayr006

"Learning by doing" bringt nur etwas, wenn man zuallererst die Grundlagen kennt. Wenn dir die Dokumentation nicht ausreicht, musst du eben den Source Code durchsuchen, der auf GitHub zu finden ist.

0
DavidMayr006 
Fragesteller
 29.06.2019, 21:51
@verreisterNutzer

ich habe diese frage gestellt da ich nicht noch mehr stunden in diese sch***e investieren möchte... könntest du mir nicht einfach diese frage beantworten?

0
verreisterNutzer  29.06.2019, 21:57
@DavidMayr006

Fragen zu beantworten bedeutet, dem Fragesteller Möglichkeiten aufzuzeigen. Du würdest nicht viel daraus lernen, würde man dir den Code senden. Durchsuche den Quellcode und die Dokumentation, so wie jeder andere auch.

Solltest du keine direkte Möglichkeit dazu finden, wird es wohl notwendig sein, durch alle Nachrichten zu iterieren, deren Pin-Status zu überprüfen und sie dann ggf. zu löschen. Dies sollte dir allerdings klar sein...

0
DavidMayr006 
Fragesteller
 30.06.2019, 00:32
@verreisterNutzer

Und ist mir gerade relativ egal ob ich was draus lerne oder nicht... beantworte meine frage oder nicht...

0
verreisterNutzer  30.06.2019, 01:44
@DavidMayr006

Aus meiner Sicht ist die Frage beantwortet. Nun liegt es an dir, deine Ignoranz einzugestehen und den passenden Weg zu gehen, denn nur jene, die gewillt sind zu lernen, werden den Sinn erkennen.

0

Probiere es mal mit . Channel.getMessages und foreach

Denn rest musst du selber herausfinden.

Woher ich das weiß:Hobby