クラウドソリューション事業部の倉岡です。
Minecraft統合版サーバーからディスコードにログイン通知を投げるための方法を紹介したいと思います。
有名なものでいうと「DiscordSRV」と言ったものがありますが、プラグインの導入が必須です。ですが、公式サーバーである「BDS(Bedrock Dedicated Server)」などは、プラグインの導入ができません。
そのため今回はコンソールからdiscordなどのwebhookを利用してログイン通知を飛ばす方法を紹介したいと思います。完成したものはこのようになっております。ログインしたログアウトした通知を以下のように通知してくれます。
埋め込みメッセージ(embeds)で見やすく改良もしているので「DiscordSRV」と似たような通知になっていると思います。
それでは行きましょう。
今回の環境
・ubuntu 21.04
・統合版Minecraft BDS(Bedrock Dedicated Server)
・Discord
1.webhookの取得方法
discordのサーバー設定から「アプリ」の「連携サービス」を選択します。
「ウェブフック」を選択し、「新しいウェブフック」を選択します。その後、botの名前、発言するチャンネルを選択し、「ウェブフックURLをコピー」します。
これで準備は完了です。
2.Minecraftサーバーで通知スクリプト設定
以下の記事を参考にしました。
Minecraft のマルチサーバでログイン通知を Slack / Discord / LINE に送る
こちらはjava版のサーバーだったため今回は統合版MinecraftサーバーBDSに合わせて改良しております。
通常、統合版のMinecraftを起動する際「LD_LIBRARY_PATH=. ./bedrock_server」を入力して起動を行います。
それを以下のコマンドで実行することで、discordにログイン通知を可能にします。
1LD_LIBRARY_PATH=. ./bedrock_server| while read -r line
2do
3echo "${line}"
4if [[ $line == *Player\ connected* ]]; then echo "${line}" | curl -X POST -H "Content-Type: application/json" -d "{\"embeds\": [{\"title\": \"$(awk '{print$6}')がログインしました。\",\"color\": 5620992}]}" https://discord.com/api/webhooks/123456789/*********************** ; fi
5if [[ $line == *Player\ disconnected* ]]; then echo "${line}" | curl -X POST -H "Content-Type: application/json" -d "{\"embeds\": [{\"title\": \"$(awk '{print$6}')がログアウトしました。\",\"color\": 15925504}]}" https://discord.com/api/webhooks/123456789/***************** ; fi
6done;
「https://discord.com/api/webhooks/123456789/***********************」部分に先ほど控えたwebhookのURLを導入することで動作します。
この他にもwebhookが使用できるslackなどでも使用できます。
以下のように運用しており特に問題もなくこれでぼっちマイクラも回避できそうです。
ぜひお試しください。