やりたいこと
不特定多数のメンバに向けて、チャットでメッセージを送りたい。
送信先のメンバはExcelファイルから抽出する。
そういうわけで、今日はPythonでチャットメッセージを送ってみます。
Python実行環境の構築
Pythonのインストール(Windows10)
今回はWindows10でPythonを動かします。なので、Pythonをインストールしなければなりません。
Pythonのサイトから、インストーラ版もダウンロードできますが、今回はMicrosoft StoreからPythonをダウンロード/インストールしてみました。
Windows Storeからのインストール
コマンドプロンプトやPowerShellを開き、「python」と入力すると、すでにPythonがインストールされている場合はPythonのプロンプトに切り替わる。一方、インストールされていない場合はMicrosoft Storeが起動し、Python 3.8の入手画面が開く。
インストールしたい場合は、この画面で[入手]ボタンをクリックすると、インストールパッケージのダウンロードならびにインストールが行われる。なお、インストールに際して、管理者権限は必要なく、標準ユーザーであっても構わない。
参考:
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の確認方法は
各チャンネルの「情報を表示する」をクリックして
表示された窓の下部分にID:~とあるので、それがチャンネルのIDです。