作成日 2021/07/01 01:22

更新日 2021/07/01 01:32

Discordで社員が休憩中かどうかを判定するBOTを作成する

作成経緯

弊社ではコミュニケーションツールをSlackとDiscordを使っている。

Slackで取引先との連絡がメインとなっている。 一方でDiscordでは社員同士で開発に関する質問、相談や雑談などが行われている。

また、休憩の管理もDiscordで行われており、休憩する際は qkimage

このようにチャットすることで社員が休憩中であることを示す文化がある(めっちゃ可愛い)

しかし、これには少し問題がある。

例えば

Aさんの休憩する

BさんとCさんがチャットで盛り上がり、Discordではログが流れる

Aさんが現在休憩中?? 確認のためにわざわざチャットのログを遡る必要がありめんどくさい。

そこで開発された休憩ちゃん

npmにDiscordのBotに関するライブラリが存在していたためこれを利用することにした。

内容はシンプルで休憩に入る場合にとあるコマンドを入力する。 すると、自分の名前に休憩中のマークが表示されるようにすることにした。 image (可愛い)

休憩が終わった場合は、休憩を終わったことを表すコマンドを入力する。 boneqk こうすることで名前の横に付いていた絵文字が自動的に外れる、というものである。

この機能を実装したことにより休憩時間が長すぎる社員を発掘することに成功した例もある(全て打ち忘れであるが。)

Discordに現在オンライン中のリストが表示される仕様となっており、休憩中の人間がひと目で分かるようになった。 imageqklist

一つだけ問題点

管理者に対してはニックネームの変更を行うことが出来ない。

なので弊社では社長だけ、BOTが休憩判定をしてくれない仕様となっているw

ただ、社長に用があるタイミングが急ぎではないことが多いため、今のところは問題は出ていない。

プロジェクトが同じ且つ密接に関わりある人間の休憩状況だけ知れればいいと僕は思っているのでこのままでいいかなと思っている。

開発情報

https://github.com/masaru514/discord-bot

node + Cloud Functionsで実装している。

元々完全無料で実装するために、Herokuでサーバーを立てて使っていたが、設定不足だったのもあり、月の上限利用を超えてしまうことが多々あり、月末に使えなくなってしまうことがあった。

という話を社長にしたところCloud Functionsはほぼ料金がかからないとのことだったので、Cloud Functionsに移行して今の形となった。

また、休憩中であることを示す幅を広げるために下記の絵文字は全て休憩中判定とすることにするなど遊び心を加えている。

const foodArr = [
  '🍞',
  '🥐',
  '🥖',
  '🥯',
  '🧀',
  '🍖',
  '🍗',
  '🥩',
  '🍔',
  '🌭',
  '🥪',
  '🍲',
  '🍙',
  '🍚',
  '🍛',
  '🍜',
  '🍝',
  '🍣',
  '☕',
  '🥂',
  '🍽️',
  '🍴',
]

少しだけつまづいたところは環境変数の設定だった。

ランタイム環境変数とビルド環境変数があり、どっち!?となっていたが、基本的にランタイム環境変数を設定するので問題ないみたいだったのですぐに解決した。

良い暇つぶしになりました。

会社に感謝。