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:
- Ugh
- No hay ninguna alternativa disponible en sus aplicaciones clientes.
- Echara un vistazo al endpoint reminders.delete como alternativa.
- 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