Slack 기능을 통해 삭제
Slack의 channel 내용을 지우는 방법은 채널을 archive하거나 channel 자체를 지우는 것입니다.
지우고자 하는 channel을 선택하고 마우스 오른쪽 버튼을 클릭하면 Additional Options
를 선택해서 아래와 같은 메뉴를 통해 지우면 됩니다.
- Archive this channel
- 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 등록
- https://api.slack.com/apps 접속
- Create New App 버튼을 통해 App 이름과 Slack Workspace 지정
OAuth & Permissions
사이드 메뉴 선택- 중간 부분의
User Token Scopes
에 해당하는 권한 추가- users:read
- channels:read
- channels:history
- chat:write
- files:write
- 상단의
Install App to Workspace
버튼으로 App 설치 - permission 요청 수락 (Allow)
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