昨今の感染症の影響で時差出勤が始まったので
出勤時間を投稿すると退勤時間を教えてくれるBotを作ってみました。
環境
- python 3.6.6
- Heroku
参考
SlackBotプロジェクトのディレクトリ構成、Herokuとの連携については以下サイトを参考にさせていただきました。
https://qiita.com/akabei/items/ec5179794f9e4e1df203
ソースコード
上記、参考にさせていただいたサイトを元にSlackBotの動作が確認できた(おみくじ引けた)ので、退勤時間を計算するコードを作成していきます
・投稿時刻を出社時刻として退勤時間を計算する
from datetime import datetime, timedelta, timezone
from slackbot.bot import listen_to
@listen_to(r'^出勤$')
def work_time(message):
JST = timezone(timedelta(hours=+9), 'JST')
start_now = datetime.now(JST)
end_time = start_now + timedelta(hours=8, minutes=45)
message.reply(end_time.strftime("%H:%M"))
これだと出社してすぐにメッセージを送らないといけないので、時間指定できるパターンも作ります
・出勤時刻を指定して退勤時刻を計算する
import re
from datetime import datetime, timedelta, timezone
from slackbot.bot import respond_to, listen_to
@listen_to(r'^出勤\s[0-9]+:[0-9]+$')
def work_time(message):
JST = timezone(timedelta(hours=+9), 'JST')
current = datetime.now(JST)
text = message.body['text']
result = re.match(".*\s([0-9]+):([0-9]+)", text)
hour = result.group(1)
minute = result.group(2)
start_now = datetime(
year=current.year,
month=current.month,
day=current.day,
hour=int(hour),
minute=int(minute))
end_time = start_now + timedelta(hours=8, minutes=45)
message.reply(end_time.strftime("%H:%M"))
こでれ何時に出社しても、定時は何時だ?と悩まなくてもよくなりました
まとめ
・(わかりやすくまとめていただけていた記事があったので)SlackBotをデプロイしてやりとりできるようになるまでが簡単だった
・多くの人が時差出勤になったことで、遅い時間の電車が混んできたので結局元の時間に戻って、Botの活躍の場はなくなってしまった