Posting Minecraft login events to Telegram

My friends and I wanted to be notified whenever someone logins or logouts from the Minecraft server I host.

I studied a lot of overly complicated solutions until I thought of the easiest way to implement it: continuously read the Minecraft log, search for the ‘logged in’ or ‘logged out’ keywords and make an API call when there’s a result.

Translated in simplified Unix commands:

tail -F logfile | grep ‘login’ | curl api.telegram.org

The API call is made to a Telegram bot that sends the message to a group chat.

I started working from the script from this blog post and edited it a bit:

#!/bin/bash

tail -n0 -F /home/dzamir/minecraft-docker/logs/latest.log | while read LINE; do
 (echo "$LINE" | grep -e "logged in" -e "left the game") && curl -X POST \
 https://api.telegram.org/bot<insert-your-bot-token>/sendMessage \
 -H 'Accept: */*' \
 -H 'Cache-Control: no-cache' \
 -H 'Connection: keep-alive' \
 -H 'Host: api.telegram.org' \
 -F chat_id=<insert-chat-id> \
 -F text="$LINE";
done

The script can be improved by filtering only the valuable data from the log messages or posting to other platforms (e.g. Slack).