Slackワークスペース内の公開チャンネルの投稿を取得し,一つのチャンネルに同じ内容を投稿するbotです.
slackdump を用いたバックアップ機能つきです.
バックアップの表示に Rocket.chat を使用することができます.
- Linux または macOS (WSLも可)
- Windows の場合は BusyBox
busybox64u.exeをインストールし,環境変数 PATH に追加しておく.
- Python 3.8 以上
- リポジトリをクローンする.
git clone https://github.com/NAFT-LinkSpace/slack-bot cd slack-bot - スクリプトを実行し環境構築
# Windows の場合 `busybox64u sh` の実行後 chmod +x setup.sh ./setup.sh
- ブラウザでボットを導入したい Slack ワークスペースにログインする.
- ワークスペースの画面で開発者用ツールを開く
- コンソールタブで以下のコマンドを実行し,
xoxc-で始まるトークンを控えておく.JSON.parse(localStorage.localConfig_v2).teams[document.location.pathname.match(/^\/client\/(T[A-Z0-9]+)/)[1]].token
- Application > Cookies > https://app.slack.com を選択し,
dという名前のクッキーの値(xoxd-で始まる)を控えておく.
- slack apiのページにアクセスし,Create New App から新しいアプリを作成する.
- from an app manifestを選択し,ボットを導入するワークスペースを選択する.
- YAMLタブを選択し,
manifest.yamlの内容をコピペする. - Create
- Settings > Basic Information から Install to Workspace を選択し,ワークスペースにインストールする.
- App-Level Tokens の Generate Token and Scopes から
connections:writeスコープを追加し,Generate を押してトークンを発行する. - App-level Token を控えておく.
- Features > OAuth & Permissions > OAuth Tokens から Bot User OAuth Token を控えておく.
- Rocket.Chatの公式サイトを参考に,Rocket.Chatを導入する. Step 1, Step 2, Step 3, Step 5のみでいい.
- http://localhost:3000 にアクセスし,アカウントとワークスペースを作成する.
- ユーザーのアイコンをクリックし,Preferences > Personal Access Tokens を選択する.
- 適当な名前をつけて Add を押し,トークンを発行し,Token と Your user Id を控えておく.
なお,使いやすさのために以下の項目を設定しておくといい.
- 3点アイコン(Administration)をクリックし,Workspace > Settings > Search > Default provider から Global search をオンにする.
- Workspace > Settings > Message > Always Search Using RegExp をオンにする.
.env.exampleをコピーして.envファイルを作成する..envファイルを以下のように設定する.SLACK_BOT_TOKENに Bot User OAuth TokenSLACK_APP_TOKENに App-level TokenSLACK_TOKENにワークスペースから取得した xoxc- で始まるトークンSLACK_COOKIEにワークスペースから取得した xoxd- で始まるトークンPOST_CHANNEL_NAMEに投稿先のチャンネル名
- Rocket.Chat を使用しない場合は,
ROCKETCHAT_URL,ROCKETCHAT_USER_ID,ROCKETCHAT_TOKENの行を削除するかコメントアウトする. - Rocket.Chat を使用する場合は, 以下のように設定する.
ROCKETCHAT_URLに Rocket.Chat の URL (localで動かす場合は変えなくていい)ROCKETCHAT_USER_IDに Your user IdROCKETCHAT_TOKENに Token
# Windows の場合 `busybox64u sh` の実行後
chmod +x run.sh
./run.sh