【Discord-Bot】ハードコア鯖管理botをcodexにつくってもらった

Minecraftのハードコアサーバーは、ワールドを作り直す場面がどうしても多くなります。

しかし、サーバーの作成やリセットのたびに管理者がVMへログインして操作するのは、手間も時間もかかります。そこで、Discordから必要な操作を行える「Discord Hardcore Admin BOT」を作りました。

参加者が普段使っているDiscord上で、ハードコアサーバーの作成、状態確認、ワールドリセット、削除まで完結できるBOTです。

このBOTでできること

主な機能は次のとおりです。

  • ハードコアMinecraftサーバーの作成
  • サーバーの起動状態・接続先の確認
  • ワールドのリセット
  • 不要になったサーバーの削除
  • 一定期間使われていないサーバーの自動削除
  • リセット前ワールドのバックアップ
  • 管理者向けの複数サーバー管理

Discordのスラッシュコマンドを使うため、複雑な操作を覚える必要はありません。

サーバーを作成する

サーバーを作るときは、Discordで以下のコマンドを実行します。

/create

最初にMinecraftのEULA(エンドユーザーライセンス契約)への同意を確認し、その後、近接ボイスチャットを使うかどうかを選択できます。

近接ボイスチャットを有効にした場合は、対応するPaperバージョンを選び、Simple Voice Chatを導入した状態でサーバーを作成します。使わない場合は、プラグインなしのPaperサーバーとして作成されます。

通常ユーザーは1人1台まで作成できます。管理者はサーバー名を指定することで、複数のサーバーを管理できます。

サーバーの状態を確認する

現在の状態は、以下のコマンドで確認できます。

/status

ここでは、サーバーが起動中か停止中か、接続先、Minecraftのバージョン、自動削除予定日などを確認できます。

接続先は、内部ポート番号ではなく専用のホスト名で表示されるため、利用者はそのままMinecraftから参加できます。

ワールドをリセットする

ハードコアサーバーでは、「全滅したから最初からやり直したい」「新しい企画を始めたい」といった理由で、ワールドをリセットしたくなることがあります。

自分のサーバーをリセットする場合は、以下を使います。

/reset

確認画面で「はい」を選択すると、対象サーバーのワールドがリセットされます。リセット前のワールドはバックアップとして退避されるため、万が一の場合にも備えられます。

リセットコードを共有して、ほかの人に対応を任せられる

このBOTの特徴のひとつが、リセットコードによる対応代行です。

/statusでは、各サーバーのリセットコードを確認できます。このコードを信頼できる運営メンバーやフレンドに共有すれば、サーバー所有者本人が操作できないときでも、その人がリセットを実行できます。

共有された側は、以下のようにコードを指定します。

/reset code:リセットコード

たとえば、急にサーバーのリセットが必要になったときでも、所有者がログインするまで待つ必要はありません。Discord上でコードを共有するだけで、対応を引き継げます。

ただし、コードを知っている人はリセットを実行できるため、共有先は信頼できる相手に限定してください。

使われなくなったサーバーを自動で整理

サーバーを作ったまま放置されると、VMのリソースや管理枠を消費してしまいます。

このBOTでは、最後のリセットから一定期間が経過したサーバーを自動で削除できます。期限は運用に合わせて設定可能です。

不要になったサーバーは、手動でも以下のコマンドから削除できます。

/delete

削除時には確認画面が表示されるため、誤操作を減らせます。

管理者の作業を減らし、遊ぶことに集中できる環境へ

このBOTを作った目的は、Minecraftサーバーの運用作業をできるだけDiscordへ集約することです。

サーバー作成、確認、リセット、削除といった定型作業をBOTに任せることで、管理者が毎回サーバーへ接続してコマンドを実行する必要がなくなります。

ハードコアという遊び方に合わせて、「リセットしやすいこと」「必要ならほかの人に対応を任せられること」「放置サーバーを整理できること」を重視しました。

これからも、実際の運用で使いやすいMinecraft・Discord連携の仕組みを整えていきます。

ソースコード

このBOTのソースコードはGitHubで公開しています。

Discord Hardcore Admin BOT(GitHub)

導入方法や設定方法、利用できるコマンドの詳細は、GitHubリポジトリ内のREADMEをご確認ください。

※ここまでの記事はcodexにより生成しました。

実際に使用してみる

/create

/reset

/status

/delete

コメントを残す