PythonでSlackチャンネル内を操作する

はじめに

Slackチャンネル内のメッセージを操作するのにちょうどよいpythonのライブラリがあったので紹介していきます。

用意するもの

チャンネルID(チャンネル表示時のURL末尾に表記されている)
adminユーザーで作成した必要な権限を持ったtoken
python環境

slackclient のインストール

slackclientをインストールします。pipでインストール可能です。

pip install slackclient

参照先

コード例

基本形
API Method名参照先

from slackclient import SlackClient

slack_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
client = SlackClient(slack_token)
channel_id="xxxxxxxxxxx"

response = client.api_call(
        "API Methods名",
        Arguments名1=Arguments内容,
        Arguments名2=Arguments内容
)

いくつか実際に使用したコードを紹介しておきます。
返り値responseをprintすればslackからのResponseをjson形式で見ることが出来ます。
下記コードの一番下にあるprint_jsonというdefを使えばjsonを見やすい形式で表示してくれます。

from slackclient import SlackClient

slack_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
client = SlackClient(slack_token)
channel_id="xxxxxxxxxxx"

def channel_list(client):
    response = client.api_call("channels.list")
    if channels['ok']:
        return channels['channels']
    else:
        return response


def send_message(client, channel_id, message):
    response = client.api_call(
        "chat.postMessage",
        channel=channel_id,
        text=message,
    )
    return response

def update_message(client, channel_id, message,ts):
    response = client.api_call(
        "chat.update",
        channel=channel_id,
        text=message,
        ts=ts
    )
    return response

def delete_message(client,channel_id,ts):
    response = client.api_call(
        "chat.delete",
        channel=channel_id,
        ts=ts
    )
    return response

def get_history(client,channel_id):
    response = client.api_call(
        "channels.history",
        channel=channel_id,
    )
    return response

def print_json(json_data):
    return print("{}".format(json.dumps(json_data,indent=4)))