PythonでSlackbotをつくる(初期編)

作業を効率化するためのBotを作りたかったので、個人的に好きなPythonでSlackbotを作ってみました。




*環境

  • MacOS
  • Python 3.6.3
  • slackbot 0.5.3


*参考



*Slackの設定

Slackを使ったことがない人はSlackに登録してアカウントを取得します。
# SlackのWebhook URL取得手順


# Slackアプリケーション画面にアクセスし、右上のワークスペースを今回botを作りたいワークスペースに変更します。




画面上にある「Appディレクトリを検索」に「Bots」と入力して検索し、候補に出てきたBotsを選択します。




「設定を追加」ボタンを押して次の画面で適当にbot名を設定して「ボットインテグレーションを追加する」ボタンを押します。




次の画面でAPIトークンが発行されます。(プログラムで呼び出す際に必要になります)
また、botのアイコンや名前を設定することができます。



*返事をするBot作成

動作確認として、何か話しかけると決まった返事をするだけのBotを作成します。

slackbotライブラリをインストールします。
$ pip install slackbot

slackbotディレクトリを作成し、下記構成にします。

slackbot
├── plugins
│   ├── __init__.py
│   └── my_mention.py
├── run.py
└── slackbot_settings.py


run.py にbotを動かすための処理を書きます。

# coding: utf-8

from slackbot.bot import Bot


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


if __name__ == "__main__":
    print('start slackbot!!')
    main()


slackbot_settings.py にbotのトークン、プラグイン、デフォルトの返答メッセージを設定します。
API_TOKENは先ほどbotを作成した際に発行されたトークンを設定します。
PLUGINSは自分のローカルにあるslackbot/pluginsフォルダを指しています。

# coding: utf-8

API_TOKEN = "XXXXXXXXXXXXXXXXXX"

default_reply = 'おはよー!'

PLUGINS = [
    'plugins',
]


botを起動します。
slackbotディレクトリ配下で下記コマンドを実行します。
$ python run.py

start slackbot!!


SlackでApp欄にあるボット名に直接ダイレクトメッセージを送ると返事をしてくれます。





他のチャンネルからbotに話しかけたい場合は、チャンネルにbotを招待し、メンションを付けて話しかけます。






*特定のメッセージに返事をするBot

my_mention.py に「こんにちは」と話しかけられたら返事をする処理を書きます。
respond_to というデコレーターを使うことで簡単に実装することができます。

from slackbot.bot import respond_to  
  

@respond_to('こんにちは')  
def listen_func(message):  
    message.reply('ファイトー!!')
botを起動し直します。
$ python run.py

「こんにちは」と話しかけると特定の返事をしてくれるようになります。





*所感

Pythonで簡単にSlackbotを作ることができました。
ディレクトリ構成やライブラリなどの使い方は決まりがありますが、覚えてしまえば簡単に機能追加をしていくことができそうです。
今後はもっとBotに機能追加をして、楽しく効率的に作業をしていけるようにしたいです。

Previous
Next Post »

人気の投稿