取得 Channel 資訊

由於 general channel 裡包含了所有的用戶,在聊天的時候,很有可能觸發測試機器人的回應,為了避免被機器人洗版,我們希望機器人能夠解除在 general channel 中的監聽,為了達成此目的,我們必須:

  • 判斷目前訊息是否由 general channel 發出

首先,我們必須執行以下指令安裝官方的程式庫

$ pip SlackClient

接著在 slackbot/ 資料夾中,新增 test.py ,檢查 channel 資訊,以便後續的比對過濾工作

import os
from slackclient import SlackClient


SLACK_TOKEN = os.environ.get('SLACK_TOKEN', None)

slack_client = SlackClient(SLACK_TOKEN)


def list_channels():
    channels_call = slack_client.api_call("channels.list")
    if channels_call['ok']:
        return channels_call['channels']
    return None


def channel_info(channel_id):
    channel_info = slack_client.api_call("channels.info", channel=channel_id)
    if channel_info:
        return channel_info['channel']
    return None


if __name__ == '__main__':
    channels = list_channels()
    if channels:
        print("Channels: ")
        for c in channels:
            print(c['name'] + " (" + c['id'] + ")")
            detailed_info = channel_info(c['id'])
            if detailed_info:
                print(detailed_info['latest']['text'])
    else:
        print("Unable to authenticate.")

實際執行情況

$ python test.py
Channels: 
general (C62U5MYD8)
<@U628KP6KS>: Sorry but I didn't understand you
random (C63NQT36J)
<@U628KP6KS>: hello sender!
testbot (C62TML273)
<@U628KP6KS>: hello sender!

參考來源

Getting Started With the Slack API Using Python and Flask

Slack API - channels.info

results matching ""

    No results matching ""