Slackで動くbotが欲しくなったので、先人たちの知恵をお借りしてPython3でslackbotを作りました。とりあえずはキーワードに対して返事をする程度の基礎部分を実装した感じとなります。
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で同じことを実行していたのですが残念ながらきちんと動きませんでした。