티스토리 뷰

Slack 기능을 통해 삭제

Slack의 channel 내용을 지우는 방법은 채널을 archive하거나 channel 자체를 지우는 것입니다.

지우고자 하는 channel을 선택하고 마우스 오른쪽 버튼을 클릭하면 Additional Options를 선택해서 아래와 같은 메뉴를 통해 지우면 됩니다.

  1. Archive this channel
  2. Delete this channel

Slack 기능으로 삭제가 안되는 경우

경우에 따라 위 두가지 방법이 안되는 경우가 있는데요. 대표적인 것이 slack을 처음 개설했을 때 default로 지정된 channel입니다.
설정 페이지(Settings & Permissions)에 들어가면 모든 멤버에게 공개되는 `#welcome` channel이 나옵니다.

이 경우 default channel인 `#welcome` channel은 이름은 변경할 수 있지만 channel을 지울 수는 없습니다.
근데 오랫동안 사용해오면서 내용을 지워야 할 때 (예를들면 무료 사용량 제한에 임박했을 때)가 생기는데요.
slack은 이 기능을 제공하지 않기 때문에 관리자가 글 하나하나를 지워야 하는 문제가 있습니다.

Python script로 지우는 방법

slack_cleaner2 를 이용하면 일괄 삭제가 가능합니다.

https://github.com/sgratzl/slack_cleaner2

위 github에 가면 여러가지 케이스에 대한 상세한 사용법이 있습니다.
여기서는 public channel의 모든 메세지를 지우는 것에 대해서만 다루겠습니다.

토큰 생성을 위한 Slack App 등록

  1. https://api.slack.com/apps 접속
  2. Create New App 버튼을 통해 App 이름과 Slack Workspace 지정
  3. OAuth & Permissions 사이드 메뉴 선택
  4. 중간 부분의 User Token Scopes에 해당하는 권한 추가
    • users:read
    • channels:read
    • channels:history
    • chat:write
    • files:write
  5. 상단의 Install App to Workspace 버튼으로 App 설치
  6. permission 요청 수락 (Allow)
  7. OAuth Access Token 복사해서 사용

User Token Scopes

OAuth Access Token

slack_cleaner2 설치

pip install slack-cleaner2

python script

from slack_cleaner2 import *

s = SlackCleaner('SECRET TOKEN')
# list of users
s.users
# list of all kind of channels
s.conversations

# delete all messages in general channels
for msg in s.msgs(filter(match('general'), s.conversations)):
  # delete messages, its files, and all its replies (thread)
  msg.delete(replies=True, files=True)

# delete all general messages and also iterate over all replies
for msg in s.c.general.msgs(with_replies=True):
  msg.delete()

SECRET TOKEN 부분에 위에서 복사한 OAuth Access Token을 넣고 지우고자하는 channel 명을 match('채널명') 부분에 수정하면 됩니다.

위 파일을 SlackCleaner.py 등의 이름으로 저장한 후 아래와 같이 실행하면 해당 channel의 메세지가 하나씩 삭제됩니다.
당연하게도 python이 설치되어 있어야겠죠?

python SlackCleaner.py

 

Comments
댓글쓰기 폼