Actualmente tenemos un canal de Slack con ~ 8K mensajes, todos provienen de la integración de Jenkins. ¿Existe alguna forma programática de eliminar todos los mensajes de ese canal? La interfaz web solo puede eliminar 100 mensajes a la vez.
85
--user "*"
también es necesario para que funcione. Además, si realmente desea realizar la tarea de eliminación, debe agregar--perform
.--quiet
no mostrar todos los mensajes eliminados en stdout.Escribí un script de nodo simple para eliminar mensajes de canales y chats públicos / privados. Puedes modificarlo y usarlo.
https://gist.github.com/firatkucuk/ee898bc919021da621689f5e47e7abac
Primero, modifique su token en la sección de configuración de scripts y luego ejecute el script:
Obtenga un token de OAuth:
Encuentra el ID del canal
Además, el ID del canal se puede ver en la URL del navegador cuando abre slack en el navegador. p.ej
o
fuente
El comando de limpieza predeterminado no funcionó para mí dando el siguiente error:
pero seguir funcionó sin ningún problema para limpiar los mensajes del bot
o
para limpiar todos los mensajes.
Utilizo un límite de velocidad de 1 segundo para evitar
HTTP 429 Too Many Requests
errores debido al límite de velocidad de la API de holgura. En ambos casos, el nombre del canal se proporcionó sin#
signofuente
!!¡¡ACTUALIZAR!!
como mencionó @ niels-van-reijmersdal en el comentario.
!! FIN DE ACTUALIZAR !!
Aquí hay una buena respuesta de SlackHQ en Twitter, y funciona sin cosas de terceros. https://twitter.com/slackhq/status/467182697979588608?lang=es
fuente
Para cualquier otra persona que no necesite hacerlo mediante programación, aquí hay una forma rápida :
(probablemente solo para usuarios pagos)
Por lo general, establezco esta opción en "1 día" para dejar el canal con algo de contexto, luego vuelvo a la configuración anterior y establezco su política de retención en "predeterminada" para continuar almacenándolas de ahora en adelante.
Notas:
Luke señala: si la opción está oculta: tienes que ir a la configuración de administrador del espacio de trabajo global, retención y eliminación de mensajes, y marcar "Permitir que los miembros del espacio de trabajo anulen estas configuraciones".
fuente
Opción 1 Puede configurar un canal de Slack para eliminar mensajes automáticamente después de 1 día, pero está un poco oculto. Primero, tienes que ir a la Configuración del espacio de trabajo de Slack, Retención y eliminación de mensajes, y marcar "Permitir que los miembros del espacio de trabajo anulen estas configuraciones". Después de eso, en el cliente de Slack puede abrir un canal, hacer clic en el engranaje y hacer clic en "Editar retención de mensajes ..."
Opción 2 La herramienta de línea de comandos slack-cleaner que otros han mencionado.
Opción 3 A continuación se muestra un pequeño script de Python que utilizo para borrar los canales privados. Puede ser un buen punto de partida si desea un control más programático de la eliminación. Desafortunadamente, Slack no tiene una API de eliminación masiva, y limita la tasa de eliminación individual a 50 por minuto, por lo que inevitablemente lleva mucho tiempo.
Tenga en cuenta que ese script deberá modificarse para enumerar y borrar los canales públicos. Los métodos API para esos son canales. * En lugar de grupos. *
fuente
Consejo: si vas a usar el limpiador de holguras https://github.com/kfei/slack-cleaner
Deberá generar un token: https://api.slack.com/custom-integrations/legacy-tokens
fuente
Como aluden otras respuestas, los límites de frecuencia de Slack hacen que esto sea complicado: el límite de frecuencia es relativamente bajo para su API de chat.delete a ~ 50 solicitudes por minuto.
La mejor estrategia que respeta el límite de velocidad es recuperar mensajes del canal que desea borrar y luego eliminar los mensajes en lotes de menos de 50 que se ejecutan en un intervalo de minutos.
He creado un proyecto que contiene un ejemplo de este procesamiento por lotes que puede bifurcar e implementar fácilmente en Autocode : le permite borrar un canal a través del comando de barra (¡y le permite restringir el acceso al comando a solo ciertos usuarios, por supuesto!). Cuando se ejecuta
/cmd clear
en un canal, marca ese canal para borrarlo y ejecuta el siguiente código cada minuto hasta que elimina todos los mensajes del canal:Puede ver el código completo y una guía para implementar su propia versión aquí: https://autocode.com/src/jacoblee/slack-clear-messages/
fuente
Si le gusta Python y ha obtenido un token de API heredado de la API de slack, puede eliminar todos los mensajes privados que envió a un usuario con lo siguiente:
fuente
Existe una herramienta de holgura para eliminar todos los mensajes de holgura en su espacio de trabajo. Compruébelo usted mismo: https://www.messagebender.com
fuente
Aquí hay una gran extensión de Chrome para eliminar de forma masiva sus mensajes de canal / grupo / im de slack: https://slackext.com/deleter , donde puede filtrar los mensajes por estrella, rango de tiempo o usuarios. Por cierto, también admite cargar todos los mensajes en la versión reciente, luego puede cargar sus mensajes de ~ 8k según lo necesite.
fuente