今回は、指定した時間にでSlackbotで投稿する方法について説明します。

SlackbotをPythonで作成しよう」で使用したslackbotライブラでは「bot.run()」が起動してしまうとコメント待ちのループに入ってしまうため、他の処理を割り込ませることは難しいです。

Botに任意のタイミングで投稿するためには「通常のBotのプログラムとは別にプログラムを起動すること」が最もシンプルな方法です。

手動でSlackbotに投稿する方法

まずは手動でプログラムを起動する方法について紹介します。

前述の通り、slackbotライブラリには任意のタイミングでコメントする機能はありません。しかし、Slackbotライブラリをインストールした際に同時にインストールされる「slacker」というライブラリには任意のタイミングでコメントする機能が備わっています。

◆slackerの使い方
slackbotライブラリをインストールした場合は同時にインストールいるのでインストールは不要です。

pip install slacker

◆slackerでのコメント記述方法
APIトークンを設定した後にpost_message()メソッドをコールします。

post_message()メソッドに引数はたくさんありますが、いずれも省略可能です。
今回は「channel(投稿するチャンネル名)」, 「text(投稿するコメント)」, 「as_user(Bot情報を使用するか否か)」を使用します。

◆実行結果
slackerでコメント投稿

ちなみに「as_usr」をfalseにするとBotの情報が反映されなくなります。「as_user」を省略した場合も同様です。

slack.chat.post_message(‘channel_name’, ‘こんにちは!’, as_user=False)

◆実行結果
slackerでコメント投稿(Bot情報なし)

Slackbotを起動した時に投稿する方法

Slackbotが起動したタイミング、「bot.run()」が動作する前であれば他のコマンドを割り込ませることは可能です。
Botを起動したタイミングで動作させたい場合は「Slackbotが起動した時に挨拶をさせる」をお読みください。

特定の時刻になったらSlackbotで投稿する方法

OSのcrontabまたは、python-crontabライブラリを使用することで特定の時刻になった時にコメントを投稿することが可能です。

特定の時刻に投稿する方法については「PythonでSlackに天気を定期配信する〜crontabを使用したタスクスケジュール処理〜」をお読みください。

◆関連記事
python-crontabライブラリを試してみました〜Pythonでタスクスケジュール制御〜

まとめ

slackbotライブラリでは任意のタイミングでは投稿できないため、指定した時刻に投稿したい場合はslackerを使用します。

指定した時刻に投稿する方法として、「手動でコメントする方法」、「起動時にコメントする方法」、「特定の時刻になったらコメントする方法」を紹介しました。
指定した時刻に投稿が実現できるとプログラムの終了を知らせたり定期的に天気やニュースを配信したりと行ったことも可能となります。

時刻指定をマスターしてSlack活用の幅を広げましょう。

Slackbot+PythonまとめTOP>>Slackbotの作り方マニュアル〜Python編〜