はじめに

研究室の人たちとマイクラのマルチで遊んでるんですが、誰がインしているかを知りたいため、ログイン通知をつけています。せっかくなのでその方法を公開します。

前提条件

通知を送信する際に Python 製のライブラリを使用するので Python が使用できることが前提です。

僕の環境の場合は 3.8.0 で動作しています。

必要ライブラリのインストールは以下のコマンドでできます。

pip install git+https://github.com/higurashi-takuto/pynotify.git@v0.3.0

インストールした PyNotify は Slack、Discord、LINE にメッセージを送信することができるので、受け取り先を決めて必要なURL、トークンを以下から取得します。

-Slack: Slack API
-Discord: サーバー設定 > ウェブフック より、Webhook 用の URL を取得
-LINE: LINE Notify

通知用のスクリプト

マイクラのサーバ実行スクリプトからパイプで通知用コマンドにログを流します。

実行コマンドの大枠は以下のとおりです。

<マイクラのサーバ実行コマンド> | while read -r line
do
  if [[ $line == *joined\ the\ game* ]]; then echo "${line:33}" | <slack|discord|line>-notify -m "$(cut -d ' ' -f 1) がログインしました。" <URL|token> ; fi
  if [[ $line == *left\ the\ game* ]]; then echo "${line:33}" | <slack|discord|line>-notify -m "$(cut -d ' ' -f 1) がログアウトしました。" <URL|token> ; fi
done;

これをもとに Slack か Discord か LINE を選択して、上記の <> で囲まれた部分を書き換えてください。
例えば以下のようなコマンドになります。

java -jar server.jar nogui | while read -r line
do
  if [[ $line == *joined\ the\ game* ]]; then echo "${line:33}" | slack-notify -m "$(cut -d ' ' -f 1) がログインしました。" https://hooks.slack.com/services/xxx ; fi
  if [[ $line == *left\ the\ game* ]]; then echo "${line:33}" | slack-notify -m "$(cut -d ' ' -f 1) がログアウトしました。" https://hooks.slack.com/services/yyy ; fi
done;

動作例

僕の環境では Discordに送っているので、このようになります。

ちなみに、このスクリプトを少し応用すると、死亡通知などもつけることができるようになります。

おわりに

情報系の研究室っぽく、マイクラをやる環境もどんどん便利にしていきたいですね。

記事がよかったらシェアしてね!!
↓↓↓