0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Slackに画像を投稿する最小限度のPythonスクリプトの作り方

Last updated at Posted at 2022-01-06

この記事では、Slackの特定のチャンネルに画像を投稿するシンプルなPythonスクリプトを作成するための基礎知識を共有します。

この記事で利用しているスクリプトで、以下の記事で利用している Google Photos へアップロードするスクリプトを置き換えると、Slack へ撮影した画像を定期的に投稿する簡易 Network カメラが作成できます。

利用するもの

実行に必要な準備

1. Slack Webサイトでの処理: アプリケーションとTokenの作成

  1. Your Apps にアクセスし、"Create New App" ボタンから新シアプリケーションを作成します。

  2. "Create an app" の画面で "From an app manifest" を選択してください(処理が簡単なので)。

  3. Workspace を選択し、"Enter app manifest below" の画面で以下の Manifest を貼り付けます:

    _metadata:
      major_version: 1
      minor_version: 1
    display_information:
      name: Image Uploader
      description: Upload image from python scripts.
      background_color: "#880000"
    features:
      bot_user:
        display_name: Image Uploader
        always_online: false
    oauth_config:
      scopes:
        bot:
          - files:write
    settings:
      org_deploy_enabled: false
      socket_mode_enabled: false
      token_rotation_enabled: false
    
  4. "Image Uploader" という名前のアプリケーションに、 files:write のパーミッションが付与されるので、"Review summary & create your app" の画面で "Create" ボタンを押してアプリケーショの作成を終了してください。

  5. 作成されたアプリケーションの管理画面の "Features" 以下にある "OAuth & Permissions" のページに移動し、"OAuth Tokens for Your Workspace" の部分にある "Install to Workspace" というボタンを押して、投稿対象の Workspace に作成したアプリケーションをインストールします。

  6. インストールが終わると、先程のページの "Bot User OAuth Token" の欄に Bot 用の OAuth Token が表示されますので、この値を記録してください。

2. Slack のアプリケーション上での処理: 投稿先チャンネルIDの取得

  1. Slack アプリ(例:Mac向けのSlackクライアント)投稿先のチャンネルを選択し、チャンネル情報を表示して、最下部に記載されているチャンネルIDを取得してください。

3. スクリプトの準備

  1. aikige/slack-photo-uploader を Clone します。

  2. レポジトリにある、requirements.txt を用いて、依存ライブラリをインストールします(slack_sdk が必要です):

    pip install -r requirements.txt
    
  3. config.json というファイルに、取得した OAuth Token と 投稿先のチャンネルIDを記載します。

    {
        "bot_token": "xoxb-xxxxxxxxxxxxx-yyyyyyyyyyyyy-zzzzzzzzzzzzzzzzzzzzzzzz",
        "channel_id": "12345678901"
    }
    

スクリプトの実行

以下のように実行して、画像が投稿されれば成功です。

python slack_photo_uploader.py SOMEIMAGE

スクリプトの解説

ユーザとやり取りしない、投稿専用のボットの作成は非常に簡単です。

  1. 基本的に、Bot 用の OAuth Token を引数として与えて、WebClient オブジェクト(以下では client)を生成します。
  2. client.files_upload メソッドに投稿先のチャンネルIDと、画像のファイル名を指定して呼び出すと投稿されます。

動作確認した環境について

この記事の内容は Raspberry Pi OS Lite で動作確認しました。

$ uname -a
Linux raspberrypi 5.10.63-v7l+ #1459 SMP Wed Oct 6 16:41:57 BST 2021 armv7l GNU/Linux
$ python --version
Python 3.9.2
$ pip list | grep slack
slack-sdk            3.13.0
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?