PythonでSlackのBotを作りたくなり、環境構築から実際に動作確認するまでやってみました。
ちなみにこの記事は PythonのslackbotライブラリでSlackボットを作る – Qiita を参考に実施しました。リンク先のページに詳しい説明がされています。
今回作るのは以下の画像のように、Bot宛にメッセージを送ると返事をしてくれるやつです。
必要なもの
- Homebrewが動くMac (Mojave 10.14.6で確認)
- Bot用のSlack API Token
環境構築
Bot開発用の環境を構築します。
HomebrewでPython3をインストールする。
|
|
次にpip3でslackbotをインストールします。
slackbotを使うと難しいことを考える必要なく、Botが作れます。
|
|
インストールを終えたら、動作確認に移ります。
Homebrewが失敗する場合
長らく使ってなかったためか、私の環境では brew install python3
が失敗してしまいました。
困っていたところ、フォロワーさんに brew doctor
というコマンドを教わりました。(とても助かりました。)
Homebrewのマニュアルを見ると Check your system for potential problems.
とあります。どうやらシステム内の潜在的な問題をチェックしてくれるもののようです。
実行するとディレクトリのownershipを変更しなさいと警告が出ました。
|
|
言われた通りにコマンドをコピペしたところ、うまくいきました。
Bot作成
run.py
まず、run.pyというファイルを作成します。
|
|
設定ファイル
次に同じ階層にslackbot_settings.py に Slack API tokenを記載します。
slackbot/README_ja.md を見ると2種類方法があるようですが、今回は2番目のslack web api ページで API トークンを生成してみます。(OAuth & Permissions のBot User OAuth Access Token欄に書かれている文字列を、API_TOKENに指定します。
|
|
Pluginファイル
最後に、Botにさせたい処理を書きます。
Pliginsディレクトリを作り、配下にpythonファイルを作成します。
|
|
最終的に以下のようなファイル配置になります。
|
|
動作確認
Botの動作確認をします。
以下のコマンドを実行します。
|
|
start bot
と出力された後に、エラーメッセージが出なければ動作しています。
Slack側でBotにメンションすれば反応してくれるハズ。
Slackbotがエラー(‘NoneType’ object has no attribute ‘endswith’)で起動しない場合
python3 run.py
したら、以下のエラーメッセージが出てしまいBotが起動しない事象に遭遇しました。
|
|
対処方法ですが、Pluginsディレクトリ配下に __init__.py
を放り込みました。(元のQiita記事では作ってるのですが見落としていました。)
感想
Slack APIの認証周りを考えずにさっくりBotを作れるので便利ですね。
躓かなければ、1時間くらいでBotの作成ができそう。
作ったBotですがまだメッセージの返答しかできないので、ドキュメントを読んで色々いじってみます。
ではでは。