前書き
YouTubeでBots
使用してSlackBotを制作する動画を拝見しましたので、メモとして残します。
Botsの新規追加
Botsはslack botの一種であります、Appにbots
で検索していただければ出てきます。
追加
を押して頂けると、ユーザー名
入力の画面が表示されます、入力してボットインテグレーションを追加する
をクリックしましょう。
追加完了後、APIトークン表示されますので、それをコピーしましょう、後で使用することになります。
ここまでの操作終わっていれば、SlackのApp一覧に追加されたBotsが表示されるはずです。
Botsの基本操作
下準備
pythonのプロジェクトを新規に作ります、以下のパッケージインストールしましょう。
pip install slackbot
フォルダ構成は以下になります。
|-- slackbot_project
|-- |-- main.py
|-- |-- slackbot_settings.py
API_TOKENにインテグレーションの設定
に表示されてるAPIトークンを入れてあげましょう。
DEFAULT_REPLYはデフォルト返信の文言になります、適当に何かいれてあげましょう。
API_TOKEN = "xxx"
DEFAULT_REPLY = "botです"
from slackbot.bot import Bot
bot = Bot()
bot.run()
この状態でmain.py
を実行して、slackのAppからBotsにDMしてみましょう、以下の返信帰ってきたら完成です。
指定メッセージの処理
from slackbot.bot import Bot
from slackbot.bot import respond_to
bot = Bot()
@respond_to('練習')
def sample(message):
message.send("練習です。")
bot.run()
追加完了後、再度メッセージを送ってみましょう、特定のキーワードに反応できるようになってるはずです。
チャンネル内の指定メッセージの処理
この状態では、メンションしなければ、Botsはキーワードに反応できません。
特定のキーワードを反応してもらうために、listen_to
使うように修正を行います。
from slackbot.bot import Bot
from slackbot.bot import listen_to
bot = Bot()
@listen_to('練習')
def sample(message):
message.send("練習ですか?")
bot.run()
再度slackのチャンネルでメッセージを送信してみます、ちゃんとBotsがキーワード拾えるようになりました。
打刻時間を記録
出勤
と退勤
二つのキーワード拾えて、Excelに記録できるBotsを作ります。
ファイル構成は以下になります。
|-- slackbot_project
|-- |-- plugins
|-- |-- |-- __init__.py
|-- |-- |-- my_mention.py
|-- |-- run.py
|-- |-- slackbot_settings.py
from slackbot.bot import Bot
def main():
bot = Bot()
bot.run()
if __name__ == "__main__":
print('start bot')
main()
from datetime import datetime
from slackbot.bot import respond_to
import openpyxl
@respond_to('出勤')
def punch_in(message):
print('出勤時刻登録します')
timestamp = datetime.now()
wb = openpyxl.load_workbook('勤怠管理.xlsx')
ws = wb.worksheets[0]
max_row = ws.max_row
ws[max_row + 1][0].value = timestamp.strftime("%Y/%m/%d")
ws[max_row + 1][1].value = timestamp.strftime("%H:%M")
wb.save('勤怠管理.xlsx')
message.send(f'出勤時刻登録完了しました:{timestamp.strftime("%H:%M")}')
@respond_to('退勤')
def punch_out(message):
print('退勤時刻登録します')
timestamp = datetime.now()
wb = openpyxl.load_workbook('勤怠管理.xlsx')
ws = wb.worksheets[0]
max_row = ws.max_row
ws[max_row][2].value = timestamp.strftime("%H:%M")
wb.save('勤怠管理.xlsx')
message.send(f'退勤時刻登録しました:{timestamp.strftime("%H:%M")}')
__init__.py
は空でオーケー、slackbot_settings.pyに変更加えません。
この状態でslackbotを起動します。
作られたエクセルファイルにもちゃんと記録が残りました。
後書き
Botsを使ってみて、主流のBoltと比べて、どうしてもドキュメントが少ないため、多少使いづらいと思いました。