LoginSignup
24
29

More than 5 years have passed since last update.

Herokuでslackbot(python)を動かしてみた【おみくじBOT】

Last updated at Posted at 2018-02-24

Herokuでslackbot(python)を動かしてみました。
Windows Subsystem for Linux(Ubuntu)で開発しています。

おみくじメッセージを送るとおみくじが引けるBOTを作ってみました。
e.png

環境

Windows 10 Fall Creators Update(バージョン 1709)
Ubuntu 16.04.3 LTS
Python 3.5.2
heroku-cli/6.15.18
slackbot 0.5.1 → https://github.com/lins05/slackbot

Herokuアカウント作成

Herokuアカウントを作成してください。
https://www.heroku.com/

Windows Subsystem for Linux(Ubuntu)インストール

下記サイトを参考にWindows Subsystem for Linux(Ubuntu)をインストール

Windows10にUbuntuをインストールする方法(Fall Creators Update版)
https://ygkb.jp/7291

Python3インストール

Windows Subsystem for Linux(Ubuntu)にPython3をインストールします。
インストールしたらpipを更新しておきます。

$ sudo apt install -y python3 python3-pip python3-venv
$ sudo pip3 install --upgrade pip

Heroku CLIインストール

Windows Subsystem for Linux(Ubuntu)にHeroku CLIをインストールします。

$ wget -qO- https://cli-assets.heroku.com/install-ubuntu.sh | sh

Slack Bot作成

Slackへログインし以下のサイトからBOTを作成します。
https://my.slack.com/services/new/bot

UsernameにBOTの名前を入力して「Add bot integration」ボタンを押します。
今回はBOTの名前を「heroku-slack-bot」としました。

a.png

表示されたAPI Tokenをメモしておきます。
メモしたらページ下の「Save Integration」ボタンを押します。

b.png

仮想環境作成

venvを使って仮想環境を作成して、「slackbot」パッケージをインストールします。

$ mkdir heroku-slack-bot
$ cd heroku-slack-bot
$ python3 -m venv venv
$ source venv/bin/activate
$ pip install --upgrade pip
$ pip install slackbot

実装

このような構成になるようにします。

ディレクトリ構成
heroku-slack-bot
├── slackbot_settings.py
├── run.py
├── plugins
│   ├── __init__.py
│   └── my_mention.py
└── venv

slackbot_settings.py」にさきほど取得したAPI Tokenを設定します。

slackbot_settings.py
API_TOKEN = '<API Token>'
DEFAULT_REPLY = 'おみくじを引いてみては?'
PLUGINS = ['plugins']

run.py」を作成します。

run.py
from slackbot.bot import Bot

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

if __name__ == '__main__':
    main()

pluginsディレクトリを作成して空の「__init__.py」を作成します。

$ mkdir plugins
$ touch plugins/__init__.py

BOTの機能を「plugins/my_slackbot.py」に作成します。

plugins/my_slackbot.py
from slackbot.bot import respond_to
import random

@respond_to('おみくじ')
def omikuji(message):
    message.reply(random.choice(['大吉', '吉', '中吉', '小吉', '末吉', '凶', '大凶']))

動作確認

チャンネルにBOTを招待します。

c.png

ローカルでBOTを起動します。(終了するときは「Ctrl+C」です)

$ python run.py

BOTにメッセージを送信してみます。メッセージが返ってきたら成功です。

d.png

デプロイ

Herokuの設定ファイル「Procfile」と「requirements.txt」を作成します。

Procfile
worker: python run.py
requirements.txt
slackbot

Gitから「__pycache__」と「venv」を除外します。

.gitignore
__pycache__
venv

最終的に次のような構成になります。

ディレクトリ構成
heroku-slack-bot
├── .gitignore
├── slackbot_settings.py
├── run.py
├── Procfile
├── requirements.txt
├── plugins
│   ├── __init__.py
│   └── my_mention.py
└── venv

できたらコミットします。

$ git init
$ git add .
$ git commit -m "create new"

Herokuに「heroku-slack-bot」アプリケーションを作成します。
すでに同じ名前が使われていたら適当な名前に変更して下さい。

Herokuにpushします。

$ heroku login
$ heroku create heroku-slack-bot
$ git push heroku master

まだBOTは起動していません。

起動

Herokuダッシュボードから作成したアプリケーションを選択します。
https://dashboard.heroku.com/apps

workerが「OFF」になっています。「Resources」タブから設定を変更します。

f.png

workerのスイッチを「ON」にします。

g.png

これでBOTが起動されます。

ローカルで確認したときと同じようにBOTにメッセージを送信してください。
おみくじが引けたら完成です!「大吉」が引けたら大成功です!

うまくいかなかったらログを確認してみましょう。

$ heroku logs --tail

参考

以下のサイトを参考にさせていただきました。

[Slack]Botkitをherokuの無料プランで動かす方法
https://qiita.com/biga816/items/148a1156cd8b1a964b91

PythonのslackbotライブラリでSlackボットを作る
https://qiita.com/sukesuke/items/1ac92251def87357fdf6

24
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
29