pythonでSlack botを動かす

Slack botを書いてみたかったのでとりあえず導入をしてみました。 自分の学習用を兼ねているので備忘録的に残します。
巷ではruby製のライブラリなどなどが利用されている気がするのですが、pythonを触ってみたい気持ちがありやってみました。

pythonのセットアップ

macを利用している方は標準でpythonが入っていると思いますが、pyenvというpythonのバージョンを簡単に管理できるツールを利用して環境構築をします。

pyenvの導入

homebrewが入っていること前提で、
brew install pyenv-virtualenv

pyenvの後ろに余分なものが付いているように見えますが、
virtualenvとは、同じpythonのバージョンを利用して、違う環境を作成するためのものです。

.bash_profile に下記のコードをコピペ。

export PYENV_ROOT=${HOME}/.pyenv
if [ -d "${PYENV_ROOT}" ]; then
    export PATH=${PYENV_ROOT}/bin:$PATH
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
fi

とりあえずこれでpyenvは動かせるようになります。

pyenvでインストール可能なversion一覧を出します。
pyenv install -list

$ pyenv install -list
Available versions:
  2.1.3
  2.2.3
  2.3.7
  2.4
  2.4.1
...

今回はpython 3.5.1を利用します。
pyenv install 3.5.1

pyenv global 3.5.1 とか pyenv local 3.5.1 とかで利用するpythonを選択。

最後に作業ディレクトリで python --version とコマンドを打ってpythonのversionを確認します。
python --version -> 3.5.1

Slackbotの導入

pip というpythonのパッケージ管理システムを利用して slackbot というライブラリをインストールします
pip install slackbot

Slackにbot用のアカウントを作成する

下記のURLページからbot用のアカウントを作成します。

https://my.slack.com/services/new/bot

bot用のアカウントを作成したらAPI Tokenが発行されるのでコピーします。

ここまで準備してようやくpythonのコードを書き始めます。
任意のディレクトリに移動して run.pyslackbot_setting.py を作成。

$ mkdir bot-test
$ cd bot-test/
$ touch slackbot_settings.py
$ touch run.py

slackbot_settings.py にはbotの設定を記述します。

# _*_ coding utf-8 _*_

API_TOKEN = "xxxx-xxxx-xxxx-xxxx-xxxx"

default_reply = "ごめんなさい、私あなたの言っていることがよくわからないの。"

run.py にはbotの起動用のコードを記述します。

# _*_ coding: utf-8 _*_

from slackbot.bot import Bot
def main():
    bot = Bot()
    bot.run()

if __name__ == "__main__":
    main()

早速botを起動します!

$ python run.py

f:id:jalemy:20161120001945p:plain:w600

これでSlackbotの疎通確認が取れました。 今回は導入から挙動確認までですが、webスクレイピングと組み合わせて便利なbot作りたいなとか思ってます。