script.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/usr/bin/env python
  2. """Backup user's channel messages in a file, and delete them in Slack."""
  3. from datetime import datetime, timedelta
  4. import json
  5. import os
  6. from slack_cleaner2 import SlackCleaner, match
  7. def main():
  8. """Entrypoint."""
  9. slack_cleaner = SlackCleaner("")
  10. # list of users
  11. slack_cleaner.users
  12. # list of all kind of channels
  13. slack_cleaner.conversations
  14. with open(os.environ["SLACK_BACKUP_FILE_NAME"], "a") as backup:
  15. # delete all messages in -bots channels
  16. for msg in slack_cleaner.msgs(
  17. filter(
  18. match(os.environ["SLACK_CHANNEL_NAME"]),
  19. slack_cleaner.conversations,
  20. )
  21. ):
  22. # delete messages, its files, and all its replies (thread)
  23. if msg.user_id == os.environ["SLACK_USER_ID"]:
  24. if (
  25. datetime.now()
  26. - timedelta(
  27. hours=int(os.environ["SLACK_SAVE_HISTORY_UNTIL_HOURS"])
  28. )
  29. ) > msg.dt:
  30. backup.write(json.dumps(msg.json))
  31. backup.write("\n")
  32. msg.delete(replies=True, files=True)
  33. if __name__ == "__main__":
  34. main()