Obecnie mamy kanał Slack z ~ 8K wiadomościami, wszystkie pochodzą z integracji Jenkins. Czy istnieje programowy sposób usuwania wszystkich wiadomości z tego kanału? Interfejs sieciowy może jednocześnie usunąć tylko 100 wiadomości.
85
--user "*"
jest również konieczne, aby działał. Również jeśli chcesz faktycznie wykonać zadanie usuwania, powinieneś dodać--perform
.--quiet
się nie wyświetlać każdy komunikat usunięciem na standardowe wyjście.Napisałem prosty skrypt węzłowy do usuwania wiadomości z kanałów publicznych / prywatnych i czatów. Możesz go modyfikować i używać.
https://gist.github.com/firatkucuk/ee898bc919021da621689f5e47e7abac
Najpierw zmodyfikuj swój token w sekcji konfiguracji skryptów, a następnie uruchom skrypt:
Uzyskaj token OAuth:
Znajdź identyfikator kanału
Identyfikator kanału można również zobaczyć w adresie URL przeglądarki, gdy otwierasz slack w przeglądarce. na przykład
lub
źródło
domyślne polecenie clean nie zadziałało, podając następujący błąd:
ale poniższe działały bez problemu, aby wyczyścić wiadomości bota
lub
aby wyczyścić wszystkie wiadomości.
Używam limitu szybkości wynoszącego 1 sekundę, aby uniknąć
HTTP 429 Too Many Requests
błędów z powodu limitu szybkości wolnego interfejsu API. W obu przypadkach nazwa kanału została podana bez#
znakuźródło
!!AKTUALIZACJA!!
jak wspomniano w komentarzu @ niels-van-reijmersdal.
!! END UPDATE !!
Oto miła odpowiedź od SlackHQ na Twitterze, która działa bez żadnych rzeczy osób trzecich. https://twitter.com/slackhq/status/467182697979588608?lang=en
źródło
Dla każdego, kto nie musi robić tego w sposób automatyczny, oto szybki sposób :
(prawdopodobnie tylko dla płatnych użytkowników)
Zwykle ustawiam tę opcję na „1 dzień”, aby opuścić kanał z pewnym kontekstem, a następnie wracam do powyższych ustawień i ustawiam jego politykę przechowywania z powrotem na „domyślną”, aby kontynuować przechowywanie ich od teraz.
Uwagi:
Luke zwraca uwagę: Jeśli opcja jest ukryta: musisz przejść do globalnych ustawień administracyjnych obszaru roboczego, przechowywania i usuwania wiadomości i zaznaczyć opcję „Pozwól członkom obszaru roboczego zastąpić te ustawienia”
źródło
Opcja 1 Możesz ustawić kanał Slack, aby automatycznie usuwał wiadomości po 1 dniu, ale jest trochę ukryty. Najpierw musisz przejść do ustawień Slack Workspace Settings, Message Retention & Deletion i zaznaczyć „Pozwól członkom obszaru roboczego zastąpić te ustawienia”. Następnie w kliencie Slack możesz otworzyć kanał, kliknąć koło zębate i kliknąć „Edytuj przechowywanie wiadomości ...”
Opcja 2 Slack-cleaner, narzędzie wiersza poleceń, o którym wspominali inni.
Opcja 3 Poniżej znajduje się mały skrypt Pythona, którego używam do czyszczenia kanałów prywatnych. Może być dobrym punktem wyjścia, jeśli chcesz mieć bardziej programową kontrolę nad usuwaniem. Niestety Slack nie ma interfejsu API do zbiorczego usuwania i ograniczają indywidualne usuwanie do 50 na minutę, więc nieuchronnie zajmuje to dużo czasu.
Zwróć uwagę, że skrypt będzie wymagał modyfikacji, aby wyświetlić i wyczyścić kanały publiczne. Metody API to kanały. * Zamiast grup. *
źródło
Wskazówka: jeśli zamierzasz używać narzędzia do czyszczenia Slack https://github.com/kfei/slack-cleaner
Będziesz musiał wygenerować token: https://api.slack.com/custom-integrations/legacy-tokens
źródło
Jak sugerują inne odpowiedzi, limity szybkości Slacka sprawiają, że jest to trudne - limit szybkości jest stosunkowo niski dla ich czatu. Usuń API przy ~ 50 żądaniach na minutę.
Najlepszą strategią, która przestrzega limitu szybkości, jest pobieranie wiadomości z kanału, który chcesz wyczyścić, a następnie usuwanie wiadomości w partiach poniżej 50, które są uruchamiane w minutowych odstępach czasu.
Zbudowałem projekt zawierający przykład tego przetwarzania wsadowego, który można łatwo rozwidlić i wdrożyć w Autocode - pozwala to wyczyścić kanał za pomocą polecenia ukośnika (i oczywiście pozwala ograniczyć dostęp do polecenia tylko niektórym użytkownikom!). Po uruchomieniu
/cmd clear
w kanale oznacza ten kanał do wyczyszczenia i uruchamia następujący kod co minutę, aż usunie wszystkie komunikaty w kanale:Możesz wyświetlić pełny kod i przewodnik dotyczący wdrażania własnej wersji tutaj: https://autocode.com/src/jacoblee/slack-clear-messages/
źródło
Jeśli lubisz Pythona i uzyskałeś starszy token API ze slack api, możesz usunąć wszystkie prywatne wiadomości, które wysłałeś do użytkownika, korzystając z następujących elementów:
źródło
Istnieje narzędzie zapasu czasu do usuwania wszystkich wiadomości w obszarze roboczym. Sprawdź to: https://www.messagebender.com
źródło
Oto świetne rozszerzenie do Chrome do zbiorczego usuwania wiadomości z kanału / grupy / im na Slack - https://slackext.com/deleter , gdzie możesz filtrować wiadomości według gwiazdy, zakresu czasu lub użytkowników. BTW, obsługuje również ładowanie wszystkich wiadomości w najnowszej wersji, a następnie możesz załadować swoje wiadomości ~ 8k według potrzeb.
źródło