本記事では、SlackbotのSlack上での表示名(Hubotの名前)をPythonで取得する手順を紹介します。
Hubotの名前はSlack上での名前でしかないため、ソースコード上で使いたい場合はAPIを使用して取得する必要があります。
Hubotの名前を取得できればBotによって処理を変えることができるようになるため、サーバーの環境の違いによる処理の差を実装したい場合などに便利です。
目次
SlackのHubot名を取得する方法
SlackのAPIを操作できるライブラリslackerを使用することで取得できます。
Hubotの各種情報は「slacker.rtm.start()」メソッドにより取得可能です。
Hubot名は「body['self']['name']」に格納されています。
1 2 3 4 | from slacker import Slacker # APIトークンを指定してインスタンスを作成 slacker = Slacker('xxxxxxxxxxx') slacker.rtm.start().body['self']['name'] |
SlackbotにHubot名を応答させる処理を実装する
Slackbotに自分の名前を応答させる処理のコードと実行例です。
※Pythonで作るSlackbotの基本的な実装については「SlackbotをPythonで作成しよう」をお読みください。
名前を聞かれた場合に応答する
単純に自分の名前を応答する処理の実装例です。
1 2 3 4 5 6 7 8 9 10 11 12 | from slackbot.bot import respond_to from slacker import Slacker # APIトークンを指定してインスタンスを作成 slacker = Slacker('xxxxxxxxxxxxxx') # Bot名を取得する bot_name = slacker.rtm.start().body['self']['name'] @respond_to('^あなたの名前は??$') def send_bot_name(message): # 自分の名前を返す message.send('私の名前は `%s` です' % bot_name) |
◆名前が合っているか否かについて「はい」か「いいえ」で応答する
「あなたの名前は〇〇か?」と聞かれた時に「はい」か「いいえ」で応答する処理の実装例です。
1 2 3 4 5 6 7 8 9 10 11 | @respond_to('^あなたは(.*)ですか??$') def send_bot_name2(message, listen_name): out = '私は `%s` です' % bot_name # 名前が合っているかチェックする if listen_name == bot_name: out = 'はい。' + out else: out = 'いいえ。' + out # 自分の名前を返す message.send(out) |
以上、SlackbotのHubot名をPythonで取得する方法でした。
Slackbot+PythonまとめTOP>>Slackbotの作り方マニュアル〜Python編〜
◆関連記事
SlackbotをPythonで作成しよう
Slackbotにリアクションをさせる
Slackbotで今日の天気を確認する