今回は、指定した時間にPython+Slackbotで投稿する方法について説明します。
「SlackbotをPythonで作成しよう」で使用したslackbotライブラでは「bot.run()」が起動してしまうとコメント待ちのループに入ってしまうため、他の処理を割り込ませることは難しいです。
Botに任意のタイミングで投稿するためには「通常のBotのプログラムとは別にプログラムを起動すること」が最もシンプルな方法です。
目次
手動でSlackbotに投稿する方法
まずは手動でプログラムを起動する方法について紹介します。
前述の通り、Pythonのslackbotライブラリには任意のタイミングでコメントする機能はありません。
しかし、Slackbotライブラリをインストールした際に同時にインストールされる「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を起動したタイミングで動作させたい場合は「Slackbotが起動した時に挨拶をさせる」をお読みください。
特定の時刻になったらSlackbotで投稿する方法
OSのcrontabまたは、python-crontabライブラリを使用することで特定の時刻になった時にコメントを投稿することが可能です。
特定の時刻に投稿する方法については「PythonでSlackに天気を定期配信する〜crontabを使用したタスクスケジュール処理〜」をお読みください。
まとめ
slackbotライブラリでは任意のタイミングでは投稿できないため、指定した時刻に投稿したい場合はslackerを使用します。
指定した時刻に投稿する方法として、「手動でコメントする方法」、「起動時にコメントする方法」、「特定の時刻になったらコメントする方法」を紹介しました。
指定した時刻に投稿が実現できるとプログラムの終了を知らせたり定期的に天気やニュースを配信したりと行ったことも可能となります。
時刻指定をマスターしてSlack活用の幅を広げましょう。
Slackbot+PythonまとめTOP>>Slackbotの作り方マニュアル〜Python編〜