Slackbotに大学図書館の返却期限を教えてもらおう

この記事は、klis Advent Calendar 2019の記事です。

adventar.org

元klis15, 現slis19のkajyuuenです。

概要

以下のようなことが出来ます。

f:id:kajyuuen:20191213181053p:plain

目録

より細かい概要

筑波大学附属図書館のTulipsを操作するツールを公開しました。(パッケージングしてなくてすみません。)

github.com

中身は大きく分けてSlackbot, CLI, APIラッパー(実際にはクローラのラッパー)の3つです。

この記事ではその中のSlackbotの利用方法について説明します。

Botを作成したきっかけ

私はまずまずの頻度で大学図書館から本を借りるのですが、たまに返却期限を忘れて司書の方に怒られることがあります。申し訳ないです。

返却期限を過ぎると延滞した日数の分、本が借りれなくなるというペナルティが課される上に、その本を借りたい人がいた場合多大なる迷惑をかけてしまうことになります。

このような事態を避けるためには借りている本を気軽にチェック出来るようなシステムが必要だと考え、その手始めにSlackBotを作ってみました。

Slackbotの使い方

https://api.slack.com/apps にアクセスして"Create an App"を押しましょう。

f:id:kajyuuen:20191212001810p:plain

適当な名前を入力しましょう。

f:id:kajyuuen:20191213174132p:plain

Scopesからパーミッションスコープを持たせましょう。write権限以上の権限を付与して下さい。

f:id:kajyuuen:20191213174411p:plain

Bot UserからBotの追加を行いましょう。

f:id:kajyuuen:20191213174520p:plain

アイコンも設定できます。

f:id:kajyuuen:20191213175155p:plain

"Install App to Workspace"を押して、Botワークスペースに追加します。

f:id:kajyuuen:20191213175303p:plain

ここからは自前のサーバにログインして、進めていきましょう(ローカルでもいいです)。

まずはGitHubリポジトリからtulips-toolsをダウンロードしましょう。

git clone git@github.com:kajyuuen/tulips-tools.git

次にTulipsにログインをしましょう。以下のコマンドを実行して下さい。

python tulips-tools/cli.py config set -u <ユーザ名> -p <パスワード>

次にSlack BotAPIトークンを取得しましょう。 APIトークンはOAuth & Permissionsから取得出来ます。下のBot User OAuth Access Tokenをコピーして下さい。

f:id:kajyuuen:20191213173056p:plain

取得したトークンを環境変数として保存しましょう。

$ export SLACK_API_TOKEN=xxxx-xxxxxxxxxxxx-xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx

後はBotを起動させるだけです。お疲れ様でした。

$ python tulips-tools/slack-bot.py

「返却日」を含んだメッセージに反応して、借りている本の返却日を教えてくれます。

f:id:kajyuuen:20191213181405p:plain

最後に

貸し出し期間を延長する機能も追加したかったのですが、ペナルティのため本を借りることが出来ず、テストが行えないため諦めました。また、このslackbotは複数人のユーザを扱うことは出来ません。

ここで話は変わるのですが、coins Advent Calendarで以下のようなブログ記事を見ました。

tako-programing.hatenablog.com

今回作成したSlackbotもOSSとして公開しています。機能の追加要望や上記の問題を解決するようなPRお待ちしています!

ボツにした記事の案

以下、ボツにした記事の案です。興味がある人は連絡下さい。

  • CRF, Fuzzy-CRFのライブラリを公開しました
    • ボツにした理由: klisに関係ない(けど今度書きたい)
  • おすすめの東方アレンジ
    • ボツにした理由: klisに関係ない
  • おすすめの漫画・小説
    • ボツにした理由: klisに関係ない
  • 技術書典に出ます
    • ボツにした理由: klisに関係ない
  • テキサス大学オースティン校図書館とミュンヘン市立図書館に行ってきました
    • ボツにした理由: 詳しい人からマサカリが飛んできそう
  • GPAが低くてもslisへの大学院推薦を貰う方法
    • ボツにした理由: 誰も興味が無い