Wir haben derzeit einen Slack-Kanal mit ~ 8K-Nachrichten, die alle aus der Jenkins-Integration stammen. Gibt es eine programmatische Möglichkeit, alle Nachrichten von diesem Kanal zu löschen? Die Weboberfläche kann jeweils nur 100 Nachrichten löschen.
82
--user "*"
ist auch notwendig, damit es funktioniert. Auch wenn Sie die Entfernungsaufgabe tatsächlich ausführen möchten, sollten Sie hinzufügen--perform
.--quiet
mit denen nicht jede Nachricht angezeigt wird, die auf stdout gelöscht wird.Ich habe ein einfaches Knotenskript zum Löschen von Nachrichten aus öffentlichen / privaten Kanälen und Chats geschrieben. Sie können es ändern und verwenden.
https://gist.github.com/firatkucuk/ee898bc919021da621689f5e47e7abac
Ändern Sie zuerst Ihr Token im Abschnitt zur Skriptkonfiguration und führen Sie dann das Skript aus:
Sie können Ihr Token unter der folgenden URL lernen:
https://api.slack.com/custom-integrations/legacy-tokens
Außerdem wird die Kanal-ID in die URL-Leiste des Browsers geschrieben.
https://mycompany.slack.com/messages/MY_CHANNEL_ID/
quelle
Der Standardbefehl clean funktionierte bei mir nicht und gab folgenden Fehler aus:
Das Folgende funktionierte jedoch ohne Probleme, um die Bot-Nachrichten zu bereinigen
oder
um alle Nachrichten zu bereinigen.
Ich verwende ein Ratenlimit von 1 Sekunde, um
HTTP 429 Too Many Requests
Fehler aufgrund des Limits der Slack-API-Rate zu vermeiden . In beiden Fällen wurde der Kanalname ohne#
Vorzeichen angegebenquelle
!!AKTUALISIEREN!!
als @ niels-van-reijmersdal im Kommentar metased.
!! END UPDATE !!
Hier ist eine nette Antwort von SlackHQ auf Twitter, die ohne Inhalte von Drittanbietern funktioniert. https://twitter.com/slackhq/status/467182697979588608?lang=de
quelle
Für alle anderen, die es nicht programmatisch ausführen müssen, gibt es hier einen schnellen Weg :
(wahrscheinlich nur für bezahlte Benutzer)
Normalerweise setze ich diese Option auf "1 Tag", um den Kanal mit einem bestimmten Kontext zu verlassen. Dann gehe ich zurück zu den obigen Einstellungen und setze die Aufbewahrungsrichtlinie wieder auf "Standard". , um sie von nun an weiter zu speichern.
Anmerkungen:
Luke weist darauf hin: Wenn die Option ausgeblendet ist: Sie müssen zu den globalen Administratoreinstellungen für den Arbeitsbereich, zum Speichern und Löschen von Nachrichten gehen und das Kontrollkästchen "Arbeitsbereichsmitglieder diese Einstellungen überschreiben lassen" aktivieren.
quelle
Option 1 Sie können einen Slack-Kanal so einstellen, dass Nachrichten nach 1 Tag automatisch gelöscht werden. Dieser Kanal ist jedoch etwas ausgeblendet. Zunächst müssen Sie zu Ihren Einstellungen für den Slack-Arbeitsbereich, zum Speichern und Löschen von Nachrichten gehen und das Kontrollkästchen "Arbeitsbereichsmitglieder diese Einstellungen überschreiben lassen" aktivieren. Danach können Sie im Slack-Client einen Kanal öffnen, auf das Zahnrad klicken und auf "Nachrichtenaufbewahrung bearbeiten ..." klicken.
Option 2 Das von anderen erwähnte Slack-Cleaner-Befehlszeilentool.
Option 3 Unten finden Sie ein kleines Python-Skript, mit dem ich private Kanäle lösche. Kann ein guter Ausgangspunkt sein, wenn Sie eine programmgesteuerte Steuerung des Löschvorgangs wünschen. Leider hat Slack keine Bulk-Lösch-API und sie begrenzen die Rate der einzelnen Löschvorgänge auf 50 pro Minute, sodass dies unvermeidlich lange dauert.
Beachten Sie, dass das Skript geändert werden muss, um öffentliche Kanäle aufzulisten und zu löschen. Die API-Methoden für diese sind Kanäle. * Anstelle von Gruppen. *
quelle
Tipp: Wenn Sie den Slack Cleaner verwenden möchten, https://github.com/kfei/slack-cleaner
Sie müssen ein Token generieren: https://api.slack.com/custom-integrations/legacy-tokens
quelle
Wie andere Antworten andeuten, machen die Ratenlimits von Slack dies schwierig - das Ratenlimit ist für die Chat.delete- API mit ~ 50 Anfragen pro Minute relativ niedrig .
Die beste Strategie, die das Ratenlimit einhält, besteht darin, Nachrichten von dem Kanal abzurufen, den Sie löschen möchten, und dann die Nachrichten in Stapeln unter 50 zu löschen, die in einem winzigen Intervall ausgeführt werden.
Ich habe ein Projekt erstellt, das ein Beispiel für diese Stapelverarbeitung enthält, das Sie problemlos auf Autocode verteilen und bereitstellen können. Sie können einen Kanal über einen Schrägstrich-Befehl löschen (und den Zugriff auf den Befehl natürlich nur auf bestimmte Benutzer beschränken!). Wenn Sie
/cmd clear
in einem Kanal ausgeführt werden, markiert dieser Kanal zum Löschen und führt jede Minute den folgenden Code aus, bis alle Nachrichten im Kanal gelöscht sind:Den vollständigen Code und eine Anleitung zum Bereitstellen Ihrer eigenen Version finden Sie hier: https://autocode.com/src/jacoblee/slack-clear-messages/
quelle
Wenn Sie Python mögen und ein Legacy-API-Token von der Slack-API erhalten haben, können Sie alle privaten Nachrichten, die Sie an einen Benutzer gesendet haben, folgendermaßen löschen:
quelle
Hier ist eine großartige Chrome-Erweiterung zum Massenlöschen Ihrer Slack-Channel- / Group- / Im-Nachrichten - https://slackext.com/deleter , mit der Sie die Nachrichten nach Stern, Zeitbereich oder Benutzern filtern können. Übrigens unterstützt es auch das Laden aller Nachrichten in der letzten Version, dann können Sie Ihre ~ 8k-Nachrichten nach Bedarf laden.
quelle
Es gibt ein Slack-Tool, mit dem Sie alle Slack-Nachrichten in Ihrem Arbeitsbereich löschen können. Probieren Sie es aus: https://www.messagebender.com
quelle