仮想サーファーの波乗り

仮想化エンジニアの日常

プログラミング・SNS分析・仮想通貨・自動化などに関してよく書く雑記ブログ

PythonでSlackBot開発①「APIキーの取得と簡単な返答」


職場でSlackを使っているのですが、「同じような定期連絡を定期でつぶやくのがめんどくさい...。自動化したい!」ということで、PythonでSlackBotを開発することにしました!今日から複数回に渡ってPythonで自動でSlack通知・受け応えをしてくれるSlack-Botを開発する方法をご紹介していこうと思います。

非エンジニアの方でも真似すれば実装できるように紹介していくので、「日々のSlack投稿自動化したい!」という方はぜひ参考にしてみてください!

今回は、Slack上でBotに話しかけたらデフォルトの回答をしてくれるまで実装していきます。

f:id:virtual-surfer:20180331161836p:plain

↑この状態を目指します。


SlackでBotの作成

まずは、SlackアプリケーションにアクセスしてSlackでBotを作成していきます。


f:id:virtual-surfer:20180331162303p:plain

「Bots」を検索して、選択します。


f:id:virtual-surfer:20180331162447p:plain

Botsのページに遷移するので、「Add Configuration」をクリックします。


f:id:virtual-surfer:20180331162750p:plain

Botsの名前を入力して、「Add Bot Integration」をクリックします。


f:id:virtual-surfer:20180331165927p:plain

遷移先でAPIトークンが確認できるので、これをメモっておきましょう。このAPIトークンは他人に知られてしまうとSlackに自由に投稿されたりしてしまうので、他人には知られないように注意してください。


f:id:virtual-surfer:20180331163625p:plain

同じページで下にスクロールしていくと、「Customize icon」という画像をアップロードできる箇所があるので、そこでbotの画像を登録し、「Save Integration」をクリックします。

ここまででSlack側の設定はOKです。


PythonでSlackBotの実装

次に、PythonでSlackBotの実装を進めていきます。Pythonの環境構築ができていない方はこちら ↓ を参考にPythonを実行できる環境構築をしておいてください。

www.virtual-surfer.com


環境構築ができたら、Botアプリケーションを作りたいディレクトリに移動して、まずは以下のコマンドを打ってSlackBotをインストールします。

$ pip install slackbot
...
Successfully built slacker
Installing collected packages: chardet, urllib3, idna, certifi, requests, slacker, websocket-client, slackbot
Successfully installed certifi-2018.1.18 chardet-3.0.4 idna-2.6 requests-2.18.4 slackbot-0.5.1 slacker-0.9.65 urllib3-1.22 websocket-client-0.47.0

↑のように、「Successfully built slacker」と表示されればインストール成功です。


次に、以下のコマンドをTerminalに打ち込んで、ファイルを作成します。

$ touch slackbot_settings.py
$ touch run.py

作成したファイルに、それぞれ以下のように記述をしていきます。API_TOKENのxxxxxxxには、自分のSlackのAPIトークンを貼り付けます。

slackbot_settings.py

API_TOKEN = "xxxxxxx"
DEFAULT_REPLY = "HEY!!!"

「DEFAULT_REPLY = "HEY!!!"」と記述していますが、ここの文字列を変えることで、Botに話しかけた時に返答してくれる内容を変えることができます。

run.py

from slackbot.bot import Bot

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

if __name__ == "__main__":
    main()

ここまでファイルの記述ができたら、以下のコマンドを打ち込んでrun.pyファイルを実行します。

$ python run.py

ファイルを実行したら「SlackでBotに話しかけてみて!」とTerminal上で表示され、処理受付状態のままになると思います。

f:id:virtual-surfer:20180331170525p:plain


ここまででPython側の実装は完了です。


f:id:virtual-surfer:20180331170658p:plain

Slackの特定のチャンネルでBotをinviteします。


f:id:virtual-surfer:20180331165152p:plain

Botを招待したチャンネルで「@bot名」でメンションをつけて話しかけると、「HEY!!!」とデフォルト返信設定をした文章でメンションをつけて返答をしてくれます!


まとめ

これで、超簡単に最低限の返答Botを実装することができました。ここからこのSlackBotを拡張していき、連絡の自動化など機能を強めていきます!


ちなみに、今回の実装はこちらのGithubのREADMEを参考にしています。

github.com


Pythonの書き方が分からないという方はこちら、安いし分かりやすいのでオススメです。

いちばんやさしいPythonの教本 人気講師が教える基礎からサーバサイド開発まで 「いちばんやさしい教本」シリーズ
鈴木たかのり (著), 杉谷弥月 (著), 株式会社ビープラウド (著)
インプレス (2017/8/10)


Pythonでのプログラミング学習中の方向けに、Noteでより詳細なプログラミングチュートリアルを配信しているので、そちらもチェックしてみてください( ・v・)/

note.mu


↓UdemyでPythonの基礎が丁寧に解説されている講座があるので、基本的な文法はこちらで学んだ方がいいです。

世界最大級のオンライン学習サイトUdemy


では!