Hier ist das Bit aus der Dokumentation, die ich nicht verstehe.Python: Discord API
purge_from(channel, *, limit=100, check=None, before=None, after=None, around=None)
Diese Funktion ist eine Koroutine.
Bereinigt eine Liste von Nachrichten, die die Kriterien der Prädikatüberprüfung erfüllen. Wenn keine Prüfung erfolgt, werden alle Meldungen ohne Unterscheidung gelöscht.
Sie müssen über die Berechtigung zum Verwalten von Nachrichten verfügen, um Nachrichten zu löschen, auch wenn sie sind. Die Berechtigung zum Lesen des Nachrichtenverlaufs ist ebenfalls erforderlich, um den Nachrichtenverlauf abzurufen.
Nur über Bot-Konten verwendbar.
Parameter: channel (Channel) - Der zu löschende Kanal. Limit (int) - Die Anzahl der zu durchsuchenden Nachrichten. Dies ist nicht die Anzahl der Nachrichten, die gelöscht werden, obwohl es sein kann. check (Prädikat) - Die Funktion, mit der überprüft wird, ob eine Nachricht gelöscht werden soll. Es muss eine Nachricht als einzigen Parameter annehmen.
Beispiele
Nachrichten Bot löschen
def is_me(m): return m.author == client.user deleted = await client.purge_from(channel, limit=100, check=is_me) await client.send_message(channel, 'Deleted {} message(s)'.format(len(deleted)))
Ich verstehe alles hier bis zum Prüfparameter. Ich habe versucht, das Beispiel so gut wie möglich zu nutzen, kann es aber nicht. Was ich versuche zu erreichen, ist jede Nachricht zu löschen, die einen Anhang hat. Message.Attachments gibt eine leere Liste zurück, wenn keine vorhanden ist. Kann jemand das Beispiel so gut wie möglich erklären oder Code zur Verfügung stellen? Vielen Dank.
Das funktionierte perfekt für mich, danke. Ich hatte Probleme mit einem Vergleich mit 'm.author' und einer anderen Variablen mit dem mitgelieferten Beispiel im Dokument. Da ich aber auch neu bei Python bin, lese ein gutes Beispiel zu Lambda, um deine Antwort besser zu verstehen: http://www.secnetix.de/olli/Python/lambda_functions.hawk – dnLL