機械学習エンジニアを目指して③(Slackbot編)

前回、次回はクラスについて書きますといいましたが・・すみません汗

今回はPythonを用いて簡単なSlackbotを作成していきたいと思います!

プライベートですがゆくゆくは、こういうこともしてみよう。 - 今日食べたいものをslackに書く。 - 食べたいもののデータをDBに保管する。(ここまでは今週中にしたい・・) - ある程度データが集まってきたらPandasを用いてそのデータから食べたいものの確率を出して統計学的に有意があるメニューを今日食べたいメニューとして提案する!!!!!!!! - メニューで悩まなくていいのでみんな幸せ(すごい)

なんか、うん。

不安点 - ほとんどが夜はお寿司か唐揚げ、昼は明太子パスタになりそう(なる)

ああああああ・・・これこの3種類しか提案してくれなくなるんじゃ・・・(不安)

環境

  • IntelliJ IDEA
  • Python3.6
  • Slack
  • anaconda(もしかしたらいらないかも・・)

hubotの導入

  1. 左のメニューバーからAPPの「+ アプリを追加する」を選択してください。

  2. 次に上の検索欄に「hubot」と打ち込むと、hubotが出てくると思うので、それをインストールしてください。

  3. 設定の追加を押し、次の画面でユーザ名を入力後、hubotインテグレーションの追加ボタンを押下します。

  4. すると、ダイレクトメッセージにSlackBotという人(?が追加されたと思います!

Pythonプロジェクトの作成

さっそくPythonプロジェクトを作っていきましょう!!

今回はこんな感じの構成で作りました!

  • slackbot(プロジェクト名)
    • plugins
      • reply_manager.py
      • init.py
    • slackbot_settings.py(これだけ名前の変更不可)
    • manage.py

各種ファイルの作成

まずは、slackbot_settings.pyから触っていきたいと思います。 slackbotに関する設定ファイルです。 API_TOKENについては、hubotの導入の設定画面で作成したAPI_TOKENを使用してください!

# slackのhubotで作成したAPI_TOKENを設定
API_TOKEN = "xxxx-xxxxxxxxxxxx-xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx"

# 何言ってるのかわからなかったとき
default_reply = "え、ぽちょじゃないけど?"

# 外部ファイルの読み込み
PLUGINS = [
    'plugins',
]

次に、manage.pyです。 これは単純にPython起動用のファイルです。

from slackbot.bot import Bot

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

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

最後に、reply_manager.pyです。 slackの画面で打ち込んだ文字を判別し、一致するものがあればそれに対応した言葉を返します。

from slackbot.bot import respond_to

@respond_to('ぽちょ')
@respond_to('ぽちょですか?')
def rep_message(message):
    message.reply('え、ぽちょだけど!')

@respond_to(文字列)の文字列部分に書かれた言葉がslackに書き込まれたら、 message.reply('文字列')に書かれている言葉を返すというものです。

多分これでbot宛にslackを送ったらちゃんと反応が返ってきてくれると思います!(簡単)

また、上記だとメンションを指定する感じですが、下記の書き方だとメンション指定なしに、全ての言葉に反応します。

from slackbot.bot import listen_to

@listen_to('ぽちょですか?')
def rep_message(message):
    message.reply('え、ぽちょだけど!')

たったこれだけでSlackBotの基本的な動作が出来ちゃいます!!

とりあえずいったんここまで・・・