Python

Python Slack SDKでメッセージを取得する

最近、Python Slack SDKを利用してメッセージを取得する機会があったので、その方法を備忘録的にまとめました。

下準備

こちらの記事に分かりやすく記載されていました。
今回はBot Token Scopesで下記2つのスコープを追加しています。

channelsの方でパブリック、groupsの方でプライベートチャンネルのメッセージが覗けるようになります。

モジュールのインストール

pip install slack_sdk

スクリプト

from slack_sdk import WebClient

SLACK_ACCESS_TOKEN = 'hoge'
CHANNEL_ID = 'huga'

client = WebClient(SLACK_ACCESS_TOKEN)
response = client.conversations_history(channel=CHANNEL_ID)

messages = response.get('messages')

hoge欄に下準備の際に控えておいたtoken、huga欄に任意のチャンネルのチャンネルIDを入力してください。
※チャンネルIDの確認方法はこちらの記事に分かりやすく記載されています。

上記の通りtokenとchannelを指定すれば、1回のリクエストで100件のメッセージを取得できます。また、オプションの引数をよしなに設定すれば再帰的にメッセージを取得したり、任意の期間のメッセージを取得することも可能なようです。
※詳しくはconversations.historyをご参照ください。

まとめ

弊社アナリティクスチームでは、他の分析官にナレッジを共有する際にslackを利用しています。
slackはチーム内のコミュニケーションを活発にするにはもってこいのツールですが、ナレッジを蓄積・管理するのは得意ではありません。
Python Slack SDKを活用すればメッセージの情報を簡単に取得できるので、あとはnotionのデータベースに挿入するなりすれば、良い感じのナレッジストックが可能になりそうです。

mochizuki
データサイエンティスト。筋トレ、温泉、時々スキー。