やりたいこと

不特定多数のメンバに向けて、チャットでメッセージを送りたい。
送信先のメンバはExcelファイルから抽出する。
そういうわけで、今日はPythonでチャットメッセージを送ってみます。

Python実行環境の構築

Pythonのインストール(Windows10)

今回はWindows10でPythonを動かします。なので、Pythonをインストールしなければなりません。
Pythonのサイトから、インストーラ版もダウンロードできますが、今回はMicrosoft StoreからPythonをダウンロード/インストールしてみました。

Windows Storeからのインストール

コマンドプロンプトやPowerShellを開き、「python」と入力すると、すでにPythonがインストールされている場合はPythonのプロンプトに切り替わる。一方、インストールされていない場合はMicrosoft Storeが起動し、Python 3.8の入手画面が開く。
pythonインストール画面.png
インストールしたい場合は、この画面で[入手]ボタンをクリックすると、インストールパッケージのダウンロードならびにインストールが行われる。なお、インストールに際して、管理者権限は必要なく、標準ユーザーであっても構わない。

参考:
https://docs.python.org/ja/3/using/windows.html#windows-store external_link

PIPのアップグレード

コマンドプロンプトから、以下のコマンドを実行する。

pip install --upgrade pip
(省略) Successfully installed pip-20.2.2

と出たのでOKみたいです。

mattermostdriverのインストール

mattermostdriver※をインストールします。

※mattermostdriverとは、Pythonのモジュールで、mattermostのAPI(特別なURLにGET/POSTすることでダイレクトにmattermostの機能を利用できる仕組み)をPythonから利用するためのPythonモジュールです。

pip install mattermostdriver

openpyxlのインストール

openpyxlとは、ExcelファイルをPythonで扱うためのモジュールです。今回はユーザのリストをExcel形式で利用するため、インストールします。

pip install openpyxl

これで準備はOKです。

Pythonスクリプトの作成

スクリプト全文を乗せるのはアレなので、mattermostdriverについて簡単に記載しておきます。

mattermostdriverについて

オブジェクトの生成

ログインする前に、ドライバーオブジェクトを生成します。

md = mattermostdriver.Driver({ 'url': 'mm.classact.co.jp', 'login_id': 'nishitani-daisuke', 'password': 'secret_password', 'scheme': 'https', 'port': 443, 'veryfy': False })

ログインなどの操作は、生成した md に対して行います。例えばログイン、ログアウトは

  • ログイン
    生成したmdのメソッドlogin()を実行することで、ログインが行われます。
md.login()
  • ログアウト
    生成したmdのメソッドlogout()を実行することで、ログアウトが行われます。
md.logout()

これだけです。簡単ですね。

  • ダイレクトメッセージの送信
    ダイレクトメッセージについては、以下の流れで実行する必要があります・
     1. 送信元、送信先ユーザのID取得、IDを配列peersに格納
     2. ダイレクトチャンネルの生成
     3. メッセージの送信

例を挙げると、以下のような感じになります。
この例だとnishitani-daisukeからdirectmessage-to-userにメッセージを送信します。

user_from = md.users.get_user_by_username('nishitani-daisuke') user_to = md.users.get_user_by_username('directmessage-to-user') peers = [user_from['id'],user_to['id']] direct_channel = md.channels.create_direct_message_channel(peers) md.posts.create_post(options={ 'channel_id': direct_channel['id'], 'message': tml.mm.message })
  • チャンネルへのメッセージ送信
    チャンネルへのメッセージ送信はもう少し簡単です。チャンネルIDをmattermostの画面から確認して
    これでチャンネルにメッセージを送信できます。
md.posts.create_post(options={ 'channel_id': 'sm4uuatjjjrtffa578qm7837hr', 'message': msg })

チャンネルIDの確認方法は

各チャンネルの「情報を表示する」をクリックして
mattermostのチャンネルID確認1.png

表示された窓の下部分にID:~とあるので、それがチャンネルのIDです。
mattermostのチャンネルID確認2.png