Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
15
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@YoheiHayamizu

Python3でSlack APIを使用してBotを作成

やったこと

Slack APIを使ってみたかったので,Appの作成プロセスを最初からまとめておく.

コンテンツ

  • Slack Appを任意のワークスペースにインストール.
  • Python3でSlack APIを使ってbotを動かせるようにする.

参考資料

https://api.slack.com/start/overview
https://api.slack.com/start/building
https://slack.dev/python-slackclient/index.html
https://github.com/slackapi/python-slackclient

環境

MacOS Mojave 10.14.5
Python3.7
slackclient 2.0.1

Appの作成

このURLで作成したいApp名とワークスペースを指定.
新規Appが作成される.

Building Apps for SlackでAppの機能を以下から選択&設定(複数選択可).

  • Incoming Webhooks: 外部のアプリケーションからSlackへメッセージを送る
  • Slash commands: /でユーザがアプリを起動できるようにする
  • Bots: Appとのインタラクティブなやりとりを可能にするボットを追加する
  • Interactive Components: Appにボタンを追加してインタラクティブな操作を可能にする
  • Event Subscriptions: ユーザからの入力などに対して反応するようにする
  • Permissions: AppがAPIを使用するための権限設定

解釈があってるかわからないけれど,こんな感じ.今回はPermissionsの設定をする.

Scopeの設定

PermissionsでScopeの設定を行う.Scopeの設定でAppのワークスペース内でのアクセス権限を設定する.
今回は以下を選択

  • Send messages as test: 動作確認で使用

ワークスペースにAppをインストール

Install App to WorkspaceでAppをワークスペースにインストール.
インストール後,OAuth Access Tokenが発行される.APIを使用するときに必要になる.

Python SDKのインストール

ターミナルからは以下のコマンド

pip install slackclient

githubから取ってくる場合は以下

git clone https://github.com/slackapi/python-slackclient.git
pip install -r requirements.txt

Hello World

環境変数SLACK_API_TOKENにさっきのOAuth Access Tokenを設定

$ export SLACK_API_TOKEN='OAuth Access Token'

githubのリポジトリのREADME.mdに書かれてるコードで動作確認.

import os
import slack

client = slack.WebClient(token=os.environ['SLACK_API_TOKEN'])

response = client.chat_postMessage(
    channel='#random',
    text="Hello world!")
assert response["ok"]
assert response["message"]["text"] == "Hello world!"

#randomチャンネルにHello world!と表示される.

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
15
Help us understand the problem. What are the problem?