Slackerを使ったslack bot開発 & AWS EC2上でcronを使って定期post

この記事は何?

SlackerというSlack APIPythonラッパーを使ってslack botを作ったときのメモです.

Slackerを使った簡単なbot

まず,Slackerをインストールします.

pip install slacker

Slackerについては,公式サイトを参照してください.
github.com

次に,slack api tokenを発行します.
Slack Web API | Slackにアクセスし,Generate test tokensをクリックすると発行できます.
得られたslack api tokenを環境変数にSLACK_API_TOKENとして設定しておきます.

f:id:sz_dr:20170219233535p:plain

Slackerの公式サイトを参考に,"hello from slacker"とpostするだけのbotを作ります.
先程環境変数に設定したslack api tokenをスクリプト内で読み込んでいます.

#!/usr/bin/python
# -*- coding: utf-8 -*-

import os
from slacker import Slacker

def main():
    api_token = os.environ["SLACK_API_TOKEN"]
    slack = Slacker(api_token)
    slack.chat.post_message("#random", "hello from slacker")


if __name__ == '__main__':
    main()

このスクリプトを実行すると,randomチャンネルで"hello from slacker"とpostされるはずです.

AWS EC2上でcronを使って定期post

EC2のcronに上のスクリプトを設定して,定期postするようにします.

まず,EC2上に先程のスクリプトをscpなり何なりでアップロードしておきます.

次に,EC2上でcrontabを設定します.

crontab -e

crontabの編集画面が出て来るので,先程のスクリプトを定期実行するように設定します.
ここで,slack api tokenもcrontabの設定ファイルに書いておきます.
cronの環境変数の設定方法は色々あると思いますが,とりあえず簡単な書き方ということで…

SLACK_API_TOKEN='<your-slack-api-token-goes-here>'

0-59 * * * * '<your-script-path>'

保存して終了すると,1分ごとに定期postされます.

その他

hubotでも良いんですけど,coffee scriptをあんまり触れたことが無かったので…