はじめに
研究室の人たちとマイクラのマルチで遊んでるんですが、誰がインしているかを知りたいため、ログイン通知をつけています。せっかくなのでその方法を公開します。
前提条件
通知を送信する際に Python 製のライブラリを使用するので Python が使用できることが前提です。
僕の環境の場合は 3.8.0
で動作しています。
必要ライブラリのインストールは以下のコマンドでできます。
pip install pynotificator
インストールした PyNotificator は 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に送っているので、このようになります。
ちなみに、このスクリプトを少し応用すると、死亡通知などもつけることができるようになります。
おわりに
情報系の研究室っぽく、マイクラをやる環境もどんどん便利にしていきたいですね。