PythonでSlackのBotを作成してみよう
こんにちは!Ysです。
今日は、チャットツールの「Slack」とプログラミング言語の「Python」を利用して、簡単なBotを作成して、自分の好きなメッセージを送ってみるプログラムを書いていこうと思います。
最終的には占いが出来るBotを作成したいと思います。
Python初学者、Slackを利用したbotの作成方法を知りたい方に必見です。
目次
- 事前準備編
- Slackに登録しよう!
- Pythonの環境構築をしよう!
- 実践編
- SlackのWebhookURLを取得しよう
- プログラムを書いていこう!
- プログラムを変更してみよう!(占いBotを作成してみよう)
事前準備編
事前準備編では、使用できる環境を整える準備をします。
既に、Slackのアカウントを持っている、Pythonの環境構築をしてあるといった方は読み飛ばしていただいて結構です。
Slackに登録しよう
Slackを使用するには、アカウント登録が必要なのでまずは、公式サイトからアカウント登録を行います。
Slack公式サイトにアクセスします。
[メールアドレス]を入力する欄に、自分のメールアドレスを入力して、[SLACKを始める]ボタンをクリックしてください。
そうすると、確認コードを入力してください、との画面が出るので、メールに送られてきた確認コードを入力します。
そうすると以下のような画面が出てくると思います。
ワークスペースは今回、新規作成なので、「ワークスペースを新規作成」の方をクリックします。
そうすると以下のような画面に遷移すると思います。
ここに自分の好きなチーム名を入力してください。
入力が完了すると、チャットルームが見られるようになります。
これでSlackの事前準備は完了です。
Pythonの環境構築をしよう
Pythonの環境構築に関しては、以下の記事で詳細を書いています。
既に、Pythonの環境構築を行なっている人は不要なので読み飛ばしていただいて結構です。
※ただし、この記事が推奨しているPythonのVersionは3系です。
2系の方は以下の記事を読んで、アップデートをお願いします。
環境構築が面倒だという方は、Google Colaboratoryというものを使用してPythonの実行環境をWeb上から実行してみましょう
実践編
SlackのWebhookURLを取得しよう
今回のプログラムでは、 自分が先ほと作成したチャンネルのWebhookURLというものが必要になります。
WebhookURLとは?
以下の記事で詳しく書いてあります。
詳細をここでは書きませんが、簡単に言うと、リアルタイムで情報を送ったり受信したりをするシステムと考えてくれればOKです。
WebhookURLを取得する
こちらにアクセスし、先ほど自分で設定したチャンネル名を入力します。
そうすると以下のような画面に遷移すると思います。
遷移したら、「チャンネルへの投稿」からどのチャットルームに飛ばしたいか選択できます。今回は、#generalを選択してみましょう。
選択すると、「Incoming Webhookインテグレーションの追加」ボタンが緑色になるので、ボタンを押してください。
そうすると、WebhookURLを取得することができます。
このURLは後で使用するので、控えておいてください。
プログラムを書いていこう
では、WebhookURLを取得したところで実際に、Pythonのプログラムを書いていきましょう。
プログラムの流れは以下のような感じ
- WebhookURLを指定する(Slackのチャットルームを指定する)
- 送りたい文字を入力
- チャットルームに送信する
上記の流れで作成すると以下のようになります。
import requests
import json
# webhookURLを指定
webhook_url = "先ほど取得した自分のチャットルームのWebhookURLを貼り付けてください"
# 送信するテキストを定義
text = "PythonでSlackにメッセージを送るよ"
# Slackに送信する
requests.post(webhook_url, data = json.dumps({
"text": text
}));
では、実際にこのファイルを保存して「ファイル名:postSlackMessage.py」、ファイルを実行してみましょう。
ターミナル画面と呼ばれる画面で、先ほど保存したファイルがある場所で以下のコマンドを実行してみましょう。
python postSlackMessage.py
Slackの方の画面を確認してみましょう。
以下のように#generalチャンネルにメッセージが送られていれば成功です。
たった数行のプログラムですが、Botを作成することができました。
ただ、これだけだと何か味気ないですね。
以下の項目で、ちょっとだけ簡易的な占いプログラムを作成してみましょう。
占いBotを作成してみよう
占いの結果を送信するBotを作成してみようと思います。ファイル名は「postSlackOmikuji.py」で作成してください。
プログラムの流れとしては、同じです。
- WebhookURLを指定する(Slackのチャットルームを指定する)
- 0-5のランダムな数字を発生させる(大吉、吉、中吉、小吉、凶、大凶を指定するため)
- ランダムな数字によっておみくじの結果を配列から抜き出す
- 占いの結果をチャットルームに送信する
import requests;
import json;
import random
# webhookURLを指定
webhook_url = "先ほど取得したWebhookURLをここに貼り付けてください"
# 送信するテキストを定義
# 数字によっておみくじの結果を変える
result = ['大吉', '吉', '中吉', '小吉', '凶', '大凶']
# 0-5までのランダムな数字を発生させる
rand = random.randint(0, 5)
# Slackに送信する
# url WebhookURL
# result おみくじ結果
def post_slack(url, result):
requests.post(url, data = json.dumps({
"text": '占いの結果は' + result + 'です。'
}));
post_slack(webhook_url, result[rand]);
ターミナル画面で、先ほどと同じように以下のコマンドを実行してみましょう。
python postSlackOmikuji.py
以下のように#generalチャンネルにメッセージが送られていれば成功です。
いかがでしょうか。
きちんと運勢が出力されたと思います。
何回か実行すると、運勢の結果が変わるので試してみてください。
まとめ
Pythonを使って簡単に、Botを作成することができました。
この作成を応用して、毎日見ているニュースサイトや、好きなサイトの情報が更新された時に、このBotを実行するプログラムとか書いてあげると情報の取得が簡単になります。
僕はPythonのスクレイピング技術を応用して、以下のような映画情報Botを作成してみました。
Pythonのスクレイピング技術を使って最新の映画情報をSlackに送るプログラムを作ってみた!
スクレイピングの技術はDaiさん(@never_be_a_pm)の技術チュートリアルを参考にしています。https://t.co/QjpQDLp1So#DAINOTE #駆け出しエンジニアと繋がりたい pic.twitter.com/vvyLKRGHlt— ys (@sy_sh7711) 2018年12月15日
何か応用して色々作成してみましょう!
人気記事【独学者おすすめ】プログラミング学習動画サービス3選