0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Pal2Discord】PalworldとDiscordのチャットを連携するアプリ作ってみた

Last updated at Posted at 2024-08-31

概要

閲覧ありがとうございます!

DiscordからPalworld鯖を操作するアプリは見かけたのですが、チャットを連携させるアプリを作っている人はいなかったので今回作ってみました。

image.png

(マインクラフトとかだとよく使われているイメージ)

仕組み

Palworld自体にはもともとシステムログを保存する機能がありません。
そのため、journaldを叩いて最新のログを書き出しログファイルを生成→内容をフィルタリングしてDiscordへ送信 という流れで処理しています。
DiscordからのメッセージはRestAPIでワールドへ転送しています。

image.png

準備

1. 専用サーバの構築とSystemdへの登録

大前提として、Palworldのサーバをデーモン化する必要があります。
こちらの記事を元に専用サーバを構築すると、後で設定が楽になります。

2. ログの出力先設定と権限付与

ログの保存先設定

journaldのログはデフォルトでは揮発性領域へ保存するため、リブートすると破棄されます。
/var/log/journal にディレクトリを作成することで、自動的に保存先が変更されます。

mkdir -p /var/log/journal

journaldに関する詳しい記事
journaldの詳しい説明

権限付与

このままだとアプリケーション側からログファイルへアクセスできないのでアクセス権限を設定します。
また、journalctlを実行するためにユーザへjournalの実行権限を与えます。

仮想環境だとsudo pythonができないための処置です。
もし仮想環境を使わないのであれば、以下の設定は必要ありません。

# 権限付与
sudo chmod 777 /var/log/<palworld service name>.log

# ユーザへjournalctlの許可
sudo usermod -aG systemd-journal <username>

3. RestAPIの許可

Steam/palworld/Pal/Saved/Config/LinuxServer にある PalWorldSettings.ini からRestAPIを許可することでAPIを叩く事ができるようになります。
RESTAPIEnabled=True にしてください。

4. Pal2Discord のインストール

こちらからダウンロードしてください。

環境に合わせてrequirementsを使ってください。

pip install -r requirements.txt

5. Settings.iniの設定

次にSettings.iniの設定を行ってください。
未入力があるとエラーになります。

[default]
; discord botのtoken
token = 
; palworldと交信する専用チャンネルのID
channel_id = 
; logファイルのディレクトリ
logs_path = /var/log/ 
; palworldサーバのサービス名
service_name = palworld-dedicated      

[restapi]
restapi_port = 8212
restapi_user = admin
restapi_passwd = ; adminpasswd

6. 実行

python run.py

機能

設定したチャンネルでチャットができる以外に以下の機能が使えます。
鯖の起動に関する機能は追加しなかったのですが、時間があったらパーミッション設定の追加とともに鯖の再起動などもできるようにしようと考えています。

コマンド一覧:
!list ログインプレイヤー一覧
!info      サーバ情報
!metrics   サーバ状態
!settings  サーバ設定
!phelp     ヘルプ

おわりに

意外と外でゲーム内の人とやりとりできるのって便利なんですよね。
〇時からレイドいこーとか、昨日○○集めておいたよーとか。

少しでもパルワールドが盛り上がる一因になったら嬉しいなと思っています。
閲覧ありがとうございました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?