IT業務効率化

PythonとSlackでtipsボットを作る。その1【下準備編】

なぜtipsボットを作ろうと思ったか

社内には小さなルールがたくさん点在しています。みんなそれを体系的にまとめるために涙くましい努力をしています。ドキュメント化したり、スプレッドシートにまとめたり。しかし、ネストは深くなっていくし、カテゴライズしにくいルールもありますし、なかなか難しいところが多いです。新しく人が入るたびに、

hirayukiさん、テーブル定義書どこでしたっけ?
あれ?そんな大事なことも教えてなかったっけ?

となります。

どうしようかなやんでいました。そんなとき、

・・・これはいい。(画面は大好きなクラロワです)最近よくありますよね。スマホゲームの読み込み時間に、ゲームの紹介をしてくれるやつです。

これを作って1日数回呟いてくれるだけでも、もしかしたら知識の共有ってできるんじゃないか?

と考えました。全てを解決してくれるわけではないですが、足しにはなるでしょう。こんなモチベーションで頑張ろうと思います。

slackのbotユーザを作成する

まずはbotユーザを作成します。slackのbotはたくさん種類がありますが、今回はその説明は割愛し、作り方だけ書き記しておきます。みなさん大体slackアプリは入れているだろうという前提で話していきます。まず左上のワークスペース名をクリックして、「Slackをカスタマイズ」をクリックします。

するとwebブラウザで管理画面が開きます。左上の「Menu」をクリックします。そこでメニューが表示されるので、その中の「App管理」をクリックします。

そして新しいページが開くの一番上の検索窓でbotsと検索してください。

botsという項目が表示されるのクリックするとbotを作成できるページに移行します。

「設定を追加」をクリックし進んでいきます。botの名前は自由につけられるので好きな名前をつけましょう。botを作成するとAPIトークンが手に入るので、これを大事に持っておきます。

アイコンの設定や、botの機能説明も書き加えられるので、ここで書いておくといいです。最後に一番下の「インテグレーションを保存」を押します。設定としてはこれで最後です。チャンネルにご招待しましょう。アプリページの右上の「アプリを追加する」から追加してあげてください。

これでslackボットの下準備は完了です。ついでにPythonで投稿できるところも作ってしまいます。

PythonでSlackにメッセージを投稿する

次回の記事でslackbotを利用しようと思いますが、まずは一方的にbotから送信する仕組みを作っておきたいので、slackerをインストールします。両方pipでインストールできます。

インストールが完了したら、Pythonのコードを書いていきます。まずはボットのAPI TOKENをconf.pyに保存します。

BOT_API_TOKE = "<botのAPI TOKEN>"

次にメインのPythonファイルを作成します。send_tips.pyと名付けました。

from conf import BOT_API_TOKE
from slacker import Slacker

slack = Slacker(BOT_API_TOKE)

slack.chat.post_message("#project-飲み会", "今日はさっさと帰って飲みに行こう!",
                        as_user=True)

conf.BOT_API_TOKEには先ほど変数定義に入れたbotのAPI TOKENが入っています。slackerはgit hubのREADMEに従いインポート。最後の行で実際にメッセージを送っています。1つ目の引数にチャンネル名、2つ目の引数にメッセージ、as_user=Trueにしておくと、botの「インテグレーションの設定」でしたアイコンと名前が適用されます。

実行してみた結果がこちらです。

めちゃくちゃいいこと言いますね彼。まだ16時40分ですけどね。

またas_user=False(もしくは何も書かない)にするとこうなります。

ちょっと寂しいですね。

次回に続く

今回はここまでです。Pythonを使ってslackに通知する最も簡単な構成が完成しました。

あとはtipsをまとめているファイルか、DBに接続して、send_tips.pyをcronで毎日回してやればそれでいいと思います。

ですが、私は問題視しているのはみんながこれを使ってくれるかどうかです。会社で使っている他のslackbotにもありがちなのですが、中身を変更するためにはソースを書き換えたり、データを更新したりする必要があります。(普通にことですが)

でもSlackで使っている機能なんだからSlack上で変更したいと思うのです。ですので次回、「Slack上で命令して新しいことを覚えるbot」をつくります。

読んでいただきありがとうございました。

git hubのソースコード

 

次回の記事

ABOUT ME
hirayuki
今年で社会人3年目になります。 日々体当たりで仕事を覚えています。 テーマはIT・教育です。 少しでも技術に親しんでもらえるよう、noteで4コマ漫画も書いています。 https://note.mu/hirayuki