「Slackbotを起動した時など任意のタイミングでBotにコメントさせる方法はないの?」
という疑問に答えます。
Slackbotで指定した時間に投稿することは可能です。
今回はSlackbotを起動した時に処理を実行する方法について説明します。
目次
Slackbotが起動した時にコメントをさせる方法
「SlackbotをPythonで作成しよう」で使用していたslackbotライブラリは任意のタイミングでSlackにコメントを送る処理には対応していません。
今回は「slacker」というライブラリを使用します。
◆slackerの使い方
slackbotライブラリをインストールした場合は同時にインストールいるのでインストールは不要です。
◆slackerでのコメント記述方法
APIトークンを設定した後にpost_message()メソッドをコールします。
post_message()メソッドに引数はたくさんありますが、いずれも省略可能です。
今回は「channel(投稿するチャンネル名)」, 「text(投稿するコメント)」, 「as_user(Bot情報を使用するか否か)」を使用します。
1 2 3 4 | # APIトークンを指定する(slackBotと同じものでOK) slack = Slacker("xxxxxxxxxxxxxxxx") # メッセージを送信 slack.chat.post_message('channel_name', greeting + '!', as_user=True) |
ちなみに「as_usr」をfalseにするとBotの情報が反映されなくなります。「as_user」を省略した場合も同様です。
Slackbotが起動した時に「こんにちは」とコメントさせる方法
slackbotライブラリでは「bot.run()」を開始するとコメント受付のループ状態となるため、それ以降の処理は実行されません。
よって起動時の処理を入れる場合は「bot.run()」よりも前に処理を記述する必要があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 | from slackbot.bot import Bot from slacker import Slacker import slackbot_settings def main(): slack = Slacker(slackbot_settings.API_TOKEN) slack.chat.post_message('timeline', 'こんにちは!', as_user=True) bot = Bot() bot.run() if __name__ == "__main__": main() |
Slackbotが起動した時間帯によってコメントの内容を変える方法
いつも「こんにちは」では少々芸がないので立ち上げた時間によって挨拶を変えてみます。
挨拶の仕様は以下の通りです。
・6:00~:おはようございます
・10:00~:こんにちは
・18:00~:こんばんは
・24:00~:午前様です
◆checktime.pyの記述内容
現在の時刻をチェックして様々な処理をする為の自作モジュールです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | import datetime class CheckTime: def __init__(self): self.time = datetime.datetime.now() self.greeting = "こんにちは" def update_time(self): self.time = datetime.datetime.now() def get_greeting(self): if self.time.hour > 6: greeting = "午前様です" elif self.time.hour > 10: greeting = "おはようございます" elif self.time.hour > 18: greeting = "こんにちは" else: greeting = "こんばんは" self.greeting = greeting return greeting |
◆bot.pyの記述内容
挨拶を取得してその結果をSlackにコメントします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | from slackbot.bot import Bot from slacker import Slacker import slackbot_settings from checktime import CheckTime def main(): c = CheckTime() # 挨拶を取得 greeting = c.get_greeting() # トークンの設定 slack = Slacker(slackbot_settings.API_TOKEN) # 挨拶を投稿する slack.chat.post_message('channel_name', greeting + '!', as_user=True) bot = Bot() bot.run() if __name__ == "__main__": main() |
投稿した時刻が18:00以降のために挨拶が「こんばんは!」に変わりました。
以上、Slackbotが起動したタイミングでSlackに投稿する方法でした。
今回は挨拶をするだけでしたが、他の処理に置き換えることで、Slackbotを立ち上げた時に様々な処理を実施することも可能です。
いろいろ試してみてください。
Slackbot+PythonまとめTOP>>Slackbotの作り方マニュアル〜Python編〜