酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Python3でSlackbotを作る(準備編)

Slackで動くbotが欲しくなったので、先人たちの知恵をお借りしてPython3でslackbotを作りました。とりあえずはキーワードに対して返事をする程度の基礎部分を実装した感じとなります。

f:id:ch3cooh393:20171226141113p:plain

Python3でSlackbotを作る

環境

実行環境はmacOS High Sierraを想定。Homebrewはインストール済みの想定です。

$ brew install python3
$ sudo pip3 install slackbot

ディレクトリ構造

任意のディレクトリを作成しました。

cd PATH_TO
touch run.py slackbot_settings.py
mkdir -p plugins
touch __init__.py my_mention.py

以下のようなディレクトリ構造になったと思います。

├── plugins
│   ├── __init__.py
│   └── my_mention.py
├── run.py
└── slackbot_settings.py
run.py
from slackbot.bot import Bot

def main():
    bot = Bot()
    bot.run()

if __name__ == "__main__":
    print('start slackbot')
    main()
slackbot_settings.py
API_TOKEN = "XXX-XXXXX-XXXXXXXXXXX"
DEFAULT_REPLY = "携帯型心理診断鎮圧執行システム ドミネーター起動しました。"
PLUGINS = [
    'plugins'
]
plugins/init.py

空ファイルです。

plugins/my_mention.py
from slackbot.bot import respond_to     # @botname: で反応するデコーダ
from slackbot.bot import listen_to      # チャネル内発言で反応するデコーダ
from slackbot.bot import default_reply  # 該当する応答がない場合に反応するデコーダ

@respond_to('しんどい')
@respond_to('メンション')
def mention_func(message):
    message.reply('私にメンションと言ってどうするのだ')

@listen_to('あきらめたら')
@listen_to('諦めたら')
def anzai(message):
    message.send('そこで試合終了ですよ。')

@respond_to('かっこいい')
def cool_func(message):
    message.react('+1')

詳しくはslackbotのREADMEをお読みください。

botを実行する

$ python3 run.py
start slackbot

参考

これらの記事を読んでPython 2.7.10で同じことを実行していたのですが残念ながらきちんと動きませんでした。