Skip to content

About

Discordとスプレッドシートを利用した簡単な勤怠管理システムです。 出勤・退勤の打刻をDiscord上で行うことができます。

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

kintai-discord

License Platform

Discord で /start と /end を打つだけで勤怠がつけられる bot です。記録はサーバーごとの Google スプレッドシートにたまっていき、勤務時間も勝手に計算してくれます。無料です。

コマンド

コマンド 使える人 やること
/init 管理者 最初の設定。Google スプレッドシートとつなぐ
/config 管理者 設定の確認と接続テスト
/reset 管理者 設定をリセット
/start 全員 勤務開始
/end 全員 勤務終了。todo(やったこと)は必須

打ち忘れても大丈夫です。time で時刻を、/start なら day で日付もあとから指定できます。

/start                      # いまから勤務開始
/start time:0900 day:-1     # 昨日の 9:00 に開始
/end todo:コーディング        # いま勤務終了
/end todo:会議 time:18:00   # 18:00 に勤務終了
  • time: 09:00、0900、900
  • day: 2023-03-15、20230315、today、yesterday、または -1(昨日)・0(今日)・1(明日)

はじめかた

  1. 招待リンクからサーバーに追加します。権限は「チャンネルを見る」「メッセージを送信」「スラッシュコマンドを使用」の 3 つです。
  2. 管理者が /init を打つと、設定ガイドのページが出ます。その通りに Google Cloud でプロジェクトと OAuth クライアントを作って(無料)、Google でログインすれば、専用のスプレッドシートができあがります。
  3. 最後に、Google Cloud の OAuth の公開ステータスを「公開」にしておいてください。「テスト」のままだと、しばらくして記録できなくなることがあります。

これでメンバー全員が /start と /end を使えます。

スプレッドシートの中身

月ごとに yyyy-MM のシートができて、1 回の勤務が 1 行になります。

列 中身
プロジェクト名 コマンドを打ったチャンネルの名前
ユーザー名 Discord のユーザー名
やったこと /end の todo
差分 勤務時間(自動計算)
開始時刻・終了時刻 /start・/end の時刻
channel_id・discord_id・uuid チャンネル ID、ユーザー ID、記録の ID

チャンネルごとに名前が残るので、プロジェクトごとの作業時間も追えます。bot にチャンネルを見る権限がないとプロジェクト名が channel-XXXXXX になりますが、記録はちゃんとされます。

データはどこに保存される?

勤怠の記録は、サーバーの管理者の Google アカウントにあるスプレッドシートにだけ保存されます。kintai-discord 側のサーバーには、勤務時刻や「やったこと」を保存しません。

  • スプレッドシートは管理者のものなので、誰に見せるか、いつ消すかは管理者が決められます。
  • kintai-discord が Google に求める権限は、Google スプレッドシートの読み書きだけです。Gmail やカレンダー、ドライブのほかのファイルには触れません。
  • kintai-discord がサービスを終えても、スプレッドシートはそのまま手元に残ります。
  • スプレッドシートに書き込むための Google の認証情報は、暗号化して預かっています。そのため、仕組みのうえでは運営者がスプレッドシートを開けてしまいます。不具合の調査など必要なとき以外は開きません。
  • 改善のために、どのコマンドがいつ使われたか、成功したか、処理に何秒かかったかを、サーバー ID と一緒に記録しています。誰が使ったかは、日ごとに変わる値に置き換えてから記録するので、運営者にもわかりません。この記録は 3 か月で自動で消えます。
  • 連携をやめたいときは、/reset を打つか、Google アカウントの設定から kintai-discord のアクセスを外してください。

詳しくはプライバシーポリシーと利用規約に書いています。裏側でどう動いているかは 仕組み にまとめました。

うまくいかないとき

  • コマンドが出てこない: bot に「スラッシュコマンドを使用」の権限があるか見てみてください。だめなら、一度サーバーから外して招待し直してみてください。
  • 「管理者権限が必要です」と出る: /init と /reset はサーバーの管理者しか使えません。
  • 「サーバー設定が見つかりません」と出る: まだ /init されていません。設定がおかしくなったときは、/reset してから /init をやり直してください。
  • Google の認証でエラーになる: redirect_uri_mismatch なら Google Cloud Console のリダイレクト URI を、権限不足なら Google Sheets API が有効になっているかを見てみてください。
  • 記録されない: /config で設定と接続を確認して、スプレッドシートの共有設定も見てみてください。通信が悪いと自動でやり直すので、「処理中...」のあとは少し待ってみてください。ずっと返事がなければ、もう一度打ってみてください。
  • 前は記録できていたのに、急にできなくなった: OAuth の公開ステータスが「テスト」になっているかもしれません。Google Cloud の「APIとサービス」>「認証情報」から OAuth 2.0 クライアント ID を開いて、「公開ステータス」を確認し、「アプリを公開」してください。それでもだめなら /reset から設定し直してください。

解決しないときは、GitHub Issues かサポート用 Discord サーバーで気軽に聞いてください。

ライセンス

MIT です。詳しくは LICENSE をどうぞ。

作らないもの

シンプルさを優先して、次の機能は作らないことにしています。

  • 削除コマンド(/delete): 消したい記録はスプレッドシートで直接消してください
  • グラフ表示・ダッシュボード: スプレッドシートの機能で十分なので作りません

About

Discordとスプレッドシートを利用した簡単な勤怠管理システムです。 出勤・退勤の打刻をDiscord上で行うことができます。

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages