Como remover (en batch) todos tus recordatorios en Slack

TL;DR: Si has acumulado muchos recordatorios (reminders) «Past and incomplete» en Slack, esto va a colgar tu cliente cada vez que corras el comando /remind list. En este momento no existe un método alternativo para solucionar eso diferente de usar el API. Aquí hay un sencillo script que puedes correr desde Bash para borrar TODOS tus recordatorios en Slack.

$ curl https://slack.com/api/reminders.list?token=$SLACK_TOKEN | # Fetch reminders for all users in the account 
sed $'s/,/,\\\n/g' | # Add new lines after each JSON property
grep -B2 ".*user.*$SLACK_USER" | # Find all reminders created by $SLACK_USER
grep '"id"' | # Find the lines with IDs of the reminders
grep -o 'R\w*' | # Get the pure reminder ID 
xargs -tI REMINDER curl -w "\n" "https://slack.com/api/reminders.delete?token=$SLACK_TOKEN&reminder=REMINDER" > reminders

Post completo que realmente no es tan largo:

Hace unas semanas me puse serio con respecto a usar los reminders de Slack, lo malo es que antes pasé mucho tiempo no siendo serio sobre los recordatorios y acumulé algo así como 300 recordatorios atrasados. Cada vez que corria el comando /remind list el cliente de Slack se colgaba por unos segundos y arrancaban los ventiladores de mi MBP. Esto mismo ocurría cada vez que hacía click en la opción delete de cada reminder.

Contacté al soporte de Slack que rápidamente me respondió que:

  1. Ugh
  2. No hay ninguna alternativa disponible en sus aplicaciones clientes.
  3. Echara un vistazo al endpoint reminders.delete como alternativa.
  4. Ellos lo discutirían internamente.

Con seguridad eventualmente van a corregir el bug, mientras tanto le di un vistazo al endpoint que sugirió Gillian:

https://api.slack.com/methods/reminders.delete

I decidí que si bien hace mucho tiempo que no echo código 😉 no debería ser mayor problema usar el CLI para purgar los ofensivos recordatorios, de manera de no sentirme culpable por mi procrastinación.

La cosa es que el endpoint que retorna la lista de los recordatorios en Slack los devuelve TODOS, para todos los miembros. Así que iba a tener que filtras esta lista, de forma tal que solo quedaran los míos y entonces hacer la llamada al delete. Yo supongo que no debería ser posible borrar los recordatorios de otros usuarios, pero ese es un experimento que no iba a hacer en la cuenta de la compañía.

Tampoco me sentía de ánimos instalar un comando para manipular JSON en el CLI, así que el script usa lo mínimo necesario para resolver esto en Bash, es un hack, así que úsalo bajo tu propia responsabilidad. A mí me funcionó.

Lo único que necesitas configurar son las variables de ambiente $SLACK_TOKEN y $SLACK_USER antes de ejecutar el script que está al inicio. Y el token de autenticación lo puedes obtener rápidamente en https://api.slack.com/docs/oauth-test-tokens

Leave a reply:

Your email address will not be published.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Site Footer