取得 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!
參考來源