本記事ではSlackbotをPythonで作成する方法について解説しています。
とりあえず動かしてみたいという場合はこちらからサンプルコードをダウンロードできます。

◆Slackbotとは?
Botはインターネット上の操作を自動実行するためのプログラムです。
Slackbotの場合はSlackからBotに指示をすることでプログラムを自動実行できます。

ユーザーと同じように会話ができる他、特定の言葉をSlackに入力することでスクリプトの実行を始めとした様々な処理を行うことが可能です。

関連記事>>SlackbotをJavaScriptで作成しよう

Slackbot作成ライブラリの導入方法

PythonでSlackbotを導入する方法はいくつかありますが、今回はPythonのライブラリを使う方法を紹介します。
以下のライブラリです。
https://github.com/lins05/slackbot

ライブラリのインストール

ライブラリをpipコマンドでインストールします。

$ pip install slackbot

「Successfully installed」が出れば完了です。

◆参考記事
bitlog
PythonでSlackbotを作る(1)

とりあえず動かしてみたい場合のサンプルコード

とりあえず動かしてみたいという場合はこちらのサンプルコードをダウンロードしてください。

※動作させるためにはAPIトークンの取得とslackbotライブラリのインストールが必要です。
>>SlackbotのAPIトークンを取得する(動画あり)

Slackbot用のAPIトークンを取得する

SlackよりBotに使うためのAPIトークンを取得します。

◆APIの取得手順
1.ワークスペースのAPPフォルダに移動します。
https://xxxxxxxxx.slack.com/apps

2.サイドメニューの「カテゴリ」から「Bot関連を選択」します。
3.「Hubot」を選択します。
4.「設定の追加」ボタンをクリックします。
5.名前を入力して「Hubotインテグレーションの追加」を押します。
6.「API トークン」に書かれている内容をコピーします。

◆今回作成したBot:ターコイズくん

ghost

画像はSlackの「ghost」を使用しています。

Slackbotの作成方法と実行例

PythonでBotを実行するためには「設定ファイル」、「実行ファイル」、「Botの応答を記述するファイル」が必要です。

◆今回使用するファイル

slackbot_settings.py:Botの設定を書くためのファイル(名称変更不可)
bot.py:Botを起動するための実行ファイル(名前は任意)
botmodule.py:Botの応答を記述するためのモジュール(名前は任意)

サンプルコードはこちら(リファクタリングや不具合の修正などで記事と内容が異なっている場合があります。)

◆slackbot_settings.pyに記述する内容
Botの設定についての記述です。
「API_TOKENには上記の「Bot用のAPIトークンを取得する」で取得したAPIトークンの記述します。

「DEFAULT_REPLY」はBotのデフォルト応答の指定です。
定義していない言葉を聞いた場合は「DEFAULT_REPLY」の内容を応答します。

「PLUGINS」には外部モジュールを指定します。「slackbot.plugins」は今回インストールしたライブラリに同梱されているモジュールです。
「hello」などのいくつかの応答がこのモジュールに含まれています。

また、自作のモジュールも指定可能です。今回は「botmodule.py」というモジュールを作成したのでこれも追加しています。

◆bot.pyに記述する内容
Botを起動する時の実行ファイルです。Botを起動するための処理を記述します。

◆botmodule.pyに記述する内容
Botで応答するための記述を行うモジュールです。
今回は「こんにちは」と「コニチハ」という二つの定義を行いました。Botの応答は「@respond_to」または「@listen_to」の後に関数を定義します。

「@respond_to」はメンション(@でターゲット指定)した場合のみ応答を返します。「@listen_to」はメンションをしなくても応答を返します。
「message.reply()」はSlackにメッセージを返すメソッドです。

Slackbotの起動と動作確認

◆Botの起動
Botの起動はターミナルから行います。

$ python3 bot.py

エラーがでなければ起動OKです。

◆実行結果

Slackbotからの応答

「listen_to」で定義した「コニチハ」はメンションなしで応答しました。
一方「respond_to」で定義した「こんにちは」はメンションしないと応答しません。

Slackbot応答2

定義していない言葉にはデフォルトの応答を返してきます。

終わりに:PythonでSlackbotを作って活用しよう

Slackbotは最も簡単に作れるチャットボットの一つです。さらにPythonなら非常に簡単に作れます。
チャットボットは機能の拡張もしやすいので勉強したことを試すために使うのも良いですね。

今回は挨拶を返すだけでしたが、Slackbotを活用すればスクリプトの実行やファイルの内容を読み込んで表示するなど様々な処理が可能です。
本記事の手順を参考にして是非作成してみてください。

Slackbot構築マニュアル>>Slackbotの作り方マニュアル〜Python編〜