Atualmente, temos um canal no Slack com cerca de 8 mil mensagens, todas provenientes da integração com o Jenkins. Existe alguma maneira programática de excluir todas as mensagens desse canal? A interface da web pode excluir apenas 100 mensagens por vez.
85
--user "*"
também é necessário para fazê-lo funcionar. Além disso, se você deseja realmente executar a tarefa de remoção, deve adicionar--perform
.--quiet
não exibir todas as mensagens sendo excluídas no stdout.Eu escrevi um script de nó simples para excluir mensagens de canais e bate-papos públicos / privados. Você pode modificar e usá-lo.
https://gist.github.com/firatkucuk/ee898bc919021da621689f5e47e7abac
Primeiro, modifique seu token na seção de configuração de scripts e execute o script:
Obtenha um token OAuth:
Encontre o ID do canal
Além disso, o ID do canal pode ser visto na URL do navegador quando você abre o Slack no navegador. por exemplo
ou
fonte
O comando de limpeza padrão não funcionou para mim, apresentando o seguinte erro:
mas a seguir funcionou sem nenhum problema para limpar as mensagens do bot
ou
para limpar todas as mensagens.
Eu uso o limite de taxa de 1 segundo para evitar
HTTP 429 Too Many Requests
erros por causa do limite de API de folga. Em ambos os casos, o nome do canal foi fornecido sem#
sinalfonte
!!ATUALIZAR!!
como @ niels-van-reijmersdal mencionado no comentário.
!! END UPDATE !!
Aqui está uma boa resposta do SlackHQ no twitter, e funciona sem qualquer coisa de terceiros. https://twitter.com/slackhq/status/467182697979588608?lang=en
fonte
Para qualquer pessoa que não precise fazer isso de forma programática, esta é uma maneira rápida :
(provavelmente apenas para usuários pagos)
Eu normalmente defino esta opção para "1 dia" para deixar o canal com algum contexto, então eu volto para as configurações acima e defino sua política de retenção para o "padrão" para continuar a armazená-los de agora em diante.
Observações:
Luke aponta: Se a opção estiver oculta: você deve ir para as configurações de administrador do espaço de trabalho global, Retenção e exclusão de mensagens e marcar "Permitir que os membros do espaço de trabalho substituam essas configurações"
fonte
Opção 1 Você pode definir um canal do Slack para excluir mensagens automaticamente após 1 dia, mas fica um pouco oculto. Primeiro, você precisa ir para as configurações do espaço de trabalho do Slack, Retenção e exclusão de mensagens, e marcar "Permitir que os membros do espaço de trabalho substituam essas configurações". Depois disso, no cliente Slack você pode abrir um canal, clicar na engrenagem e clicar em "Editar retenção de mensagem ..."
Opção 2 A ferramenta de linha de comando slack-cleaner que outros mencionaram.
Opção 3 Abaixo está um pequeno script Python que uso para limpar canais privados. Pode ser um bom ponto de partida se você quiser um controle mais programático da exclusão. Infelizmente, o Slack não tem API de exclusão em massa, e eles limitam a taxa de exclusão individual a 50 por minuto, então isso leva inevitavelmente muito tempo.
Observe que o script precisará ser modificado para listar e limpar os canais públicos. Os métodos de API para esses são canais. * Em vez de grupos. *
fonte
Dica: se você for usar o limpador de folga https://github.com/kfei/slack-cleaner
Você precisará gerar um token: https://api.slack.com/custom-integrations/legacy-tokens
fonte
Como outras respostas aludem, os limites de taxa do Slack tornam isso complicado - o limite de taxa é relativamente baixo para sua API chat.delete a cerca de 50 solicitações por minuto.
A melhor estratégia que respeita o limite de taxa é recuperar mensagens do canal que você deseja limpar e, em seguida, excluir as mensagens em lotes abaixo de 50 executados em um intervalo mínimo.
Eu construí um projeto contendo um exemplo deste lote que você pode facilmente bifurcar e implantar no Autocode - ele permite que você limpe um canal através do comando de barra (e permite que você restrinja o acesso ao comando a apenas alguns usuários, é claro!). Quando você executa
/cmd clear
em um canal, ele marca esse canal para limpeza e executa o seguinte código a cada minuto até excluir todas as mensagens no canal:Você pode ver o código completo e um guia para implantar sua própria versão aqui: https://autocode.com/src/jacoblee/slack-clear-messages/
fonte
Se você gosta do Python e obteve um token de API legado da API do slack, pode excluir todas as mensagens privadas enviadas a um usuário com o seguinte:
fonte
Existe uma ferramenta de folga para excluir todas as mensagens de folga em seu espaço de trabalho. Confira: https://www.messagebender.com
fonte
Esta é uma ótima extensão do Chrome para excluir em massa suas mensagens slack channel / group / im - https://slackext.com/deleter , onde você pode filtrar as mensagens por estrela, intervalo de tempo ou usuários. BTW, ele também suporta carregar todas as mensagens na versão recente, então você pode carregar suas mensagens ~ 8k conforme necessário.
fonte