Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions .env.backup
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
ENV="dev"

WEB_SERVER_ENABLED=true
WEB_SERVER_PORT=60000

DISCORD_BOT_ENABLED=false
DISCORD_BOT_TOKEN=MTIwODMyNzUxMDc2NTM0Njg1Ng.GsAwlX.Q8NkA2FSUQVOjutYpK1mwfsPJditovtu5zYdDA
DISCORD_ADMIN_USERNAMES=juunini
DISCORD_COMMAND_IGNORE_CASE=false
DISCORD_COMMAND_PREFIX=!palbot

PALWORLD_RCON_ENABLED=false
PALWORLD_RCON_HOST=127.0.0.1
PALWORLD_RCON_PORT=25575
PALWORLD_ADMIN_PASSWORD=1234
PALWORLD_SERVER_FILE_PATH=C:\Program Files (x86)\Steam\steamapps\common\PalServer\PalServer.exe
PALWORLD_SERVER_EXECUTE_FLAGS=-useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS

DISCORD_DASHBOARD_CHANNEL_ID=
DISCORD_LOG_CHANNEL_ID=
DISCORD_DASHBOARD_PALWORLD_CONFIG_MESSAGE_ID=
DISCORD_DASHBOARD_ONLINE_PLAYERS_MESSAGE_ID=
DISCORD_DASHBOARD_BOT_CONFIG_MESSAGE_ID=

LANGUAGE=ko
26 changes: 25 additions & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,38 @@ import (
"time"

"github.com/juunini/palworld-discord-bot/src/bot"
"github.com/juunini/palworld-discord-bot/src/cli"
"github.com/juunini/palworld-discord-bot/src/config"
"github.com/juunini/palworld-discord-bot/src/console_decoration"
"github.com/juunini/palworld-discord-bot/src/i18n"
"github.com/juunini/palworld-discord-bot/src/web"
)

func init() {
config.Load()
if err := config.Load(); err != nil {
languages := make([]string, len(i18n.Languages))
for i, language := range i18n.Languages {
languages[i] = language["name"]
}
language, err := cli.Choose("Choose your language", languages)
if err != nil {
panic(err)
}

for _, l := range i18n.Languages {
if l["name"] == language {
config.LANGUAGE = l["code"]
break
}
}
}

i18n.SetLanguage(config.LANGUAGE)

if err := config.Save(); err != nil {
panic(err)
}

i18n.SetLanguage(config.LANGUAGE)
}

Expand Down
18 changes: 13 additions & 5 deletions src/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ var (
WEB_SERVER_ENABLED = true
WEB_SERVER_PORT = 60000

DISCORD_BOT_ENABLED = false
DISCORD_BOT_TOKEN = ""
DISCORD_ADMIN_USERNAMES = []string{}
DISCORD_COMMAND_IGNORE_CASE = false
DISCORD_COMMAND_PREFIX = "!palbot"
DISCORD_BOT_ENABLED = false
DISCORD_BOT_TOKEN = ""
DISCORD_ADMIN_USERNAMES = []string{}
DISCORD_COMMAND_CASE_SENSITIVE = false
DISCORD_COMMAND_PREFIX = "!palbot"

PALWORLD_RCON_ENABLED = false
PALWORLD_RCON_HOST = "127.0.0.1"
Expand All @@ -28,5 +28,13 @@ var (
DISCORD_DASHBOARD_PALWORLD_CONFIG_MESSAGE_ID = ""
DISCORD_DASHBOARD_BOT_CONFIG_MESSAGE_ID = ""

DISCORD_COMMAND_ALIAS_KICK = "kick"
DISCORD_COMMAND_ALIAS_BAN = "ban"
DISCORD_COMMAND_ALIAS_BROADCAST = "broadcast"
DISCORD_COMMAND_ALIAS_SHUTDOWN = "shutdown"
DISCORD_COMMAND_ALIAS_DO_EXIT = "doExit"
DISCORD_COMMAND_ALIAS_SAVE = "save"
DISCORD_COMMAND_ALIAS_START_SERVER = "startServer"

LANGUAGE = ""
)
10 changes: 9 additions & 1 deletion src/config/load.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ func Load() error {
DISCORD_BOT_ENABLED = getEnvOrDefaultBool("DISCORD_BOT_ENABLED", DISCORD_BOT_ENABLED)
DISCORD_BOT_TOKEN = os.Getenv("DISCORD_BOT_TOKEN")
DISCORD_ADMIN_USERNAMES = adminUsernamesFromEnv()
DISCORD_COMMAND_IGNORE_CASE = getEnvOrDefaultBool("DISCORD_COMMAND_IGNORE_CASE", DISCORD_COMMAND_IGNORE_CASE)
DISCORD_COMMAND_CASE_SENSITIVE = getEnvOrDefaultBool("DISCORD_COMMAND_CASE_SENSITIVE", DISCORD_COMMAND_CASE_SENSITIVE)
DISCORD_COMMAND_PREFIX = getEnvOrDefault("DISCORD_COMMAND_PREFIX", DISCORD_COMMAND_PREFIX)

PALWORLD_RCON_ENABLED = getEnvOrDefaultBool("PALWORLD_RCON_ENABLED", PALWORLD_RCON_ENABLED)
Expand All @@ -36,6 +36,14 @@ func Load() error {
DISCORD_DASHBOARD_PALWORLD_CONFIG_MESSAGE_ID = os.Getenv("DISCORD_DASHBOARD_PALWORLD_CONFIG_MESSAGE_ID")
DISCORD_DASHBOARD_BOT_CONFIG_MESSAGE_ID = os.Getenv("DISCORD_DASHBOARD_BOT_CONFIG_MESSAGE_ID")

DISCORD_COMMAND_ALIAS_KICK = os.Getenv("DISCORD_COMMAND_ALIAS_KICK")
DISCORD_COMMAND_ALIAS_BAN = os.Getenv("DISCORD_COMMAND_ALIAS_BAN")
DISCORD_COMMAND_ALIAS_BROADCAST = os.Getenv("DISCORD_COMMAND_ALIAS_BROADCAST")
DISCORD_COMMAND_ALIAS_SHUTDOWN = os.Getenv("DISCORD_COMMAND_ALIAS_SHUTDOWN")
DISCORD_COMMAND_ALIAS_DO_EXIT = os.Getenv("DISCORD_COMMAND_ALIAS_DO_EXIT")
DISCORD_COMMAND_ALIAS_SAVE = os.Getenv("DISCORD_COMMAND_ALIAS_SAVE")
DISCORD_COMMAND_ALIAS_START_SERVER = os.Getenv("DISCORD_COMMAND_ALIAS_START_SERVER")

LANGUAGE = os.Getenv("LANGUAGE")

return nil
Expand Down
109 changes: 57 additions & 52 deletions src/config/save.go
Original file line number Diff line number Diff line change
@@ -1,63 +1,68 @@
package config

import (
"fmt"
"os"
"strconv"
"strings"

"github.com/juunini/palworld-discord-bot/src/i18n"
)

func Save() error {
env := strings.TrimSpace(
fmt.Sprintf(`
WEB_SERVER_ENABLED=%t
WEB_SERVER_PORT=%d

DISCORD_BOT_ENABLED=%t
DISCORD_BOT_TOKEN=%s
DISCORD_ADMIN_USERNAMES=%s
DISCORD_COMMAND_IGNORE_CASE=%t
DISCORD_COMMAND_PREFIX=%s

PALWORLD_RCON_ENABLED=%t
PALWORLD_RCON_HOST=%s
PALWORLD_RCON_PORT=%d
PALWORLD_ADMIN_PASSWORD=%s
PALWORLD_SERVER_FILE_PATH=%s
PALWORLD_SERVER_EXECUTE_FLAGS=%s

DISCORD_DASHBOARD_CHANNEL_ID=%s
DISCORD_LOG_CHANNEL_ID=%s
DISCORD_DASHBOARD_PALWORLD_CONFIG_MESSAGE_ID=%s
DISCORD_DASHBOARD_ONLINE_PLAYERS_MESSAGE_ID=%s
DISCORD_DASHBOARD_BOT_CONFIG_MESSAGE_ID=%s

LANGUAGE=%s
`,
WEB_SERVER_ENABLED,
WEB_SERVER_PORT,

DISCORD_BOT_ENABLED,
DISCORD_BOT_TOKEN,
strings.Join(DISCORD_ADMIN_USERNAMES, ","),
DISCORD_COMMAND_IGNORE_CASE,
DISCORD_COMMAND_PREFIX,

PALWORLD_RCON_ENABLED,
PALWORLD_RCON_HOST,
PALWORLD_RCON_PORT,
PALWORLD_ADMIN_PASSWORD,
PALWORLD_SERVER_FILE_PATH,
strings.Join(PALWORLD_SERVER_EXECUTE_FLAGS, " "),

DISCORD_DASHBOARD_CHANNEL_ID,
DISCORD_LOG_CHANNEL_ID,
DISCORD_DASHBOARD_PALWORLD_CONFIG_MESSAGE_ID,
DISCORD_DASHBOARD_ONLINE_PLAYERS_MESSAGE_ID,
DISCORD_DASHBOARD_BOT_CONFIG_MESSAGE_ID,

LANGUAGE,
),
)
env := "WEB_SERVER_ENABLED=" + strconv.FormatBool(WEB_SERVER_ENABLED) + "\n"
env += "# " + i18n.WebServerPortTooltip + "\n"
env += "WEB_SERVER_PORT=" + strconv.Itoa(WEB_SERVER_PORT) + "\n\n"

env += "DISCORD_BOT_ENABLED=" + strconv.FormatBool(DISCORD_BOT_ENABLED) + "\n"
env += "# " + i18n.DiscordBotTokenDescription + "\n"
env += "DISCORD_BOT_TOKEN=" + DISCORD_BOT_TOKEN + "\n"
env += "# " + i18n.DiscordAdminUsernamesTooltip + "\n"
env += "DISCORD_ADMIN_USERNAMES=" + strings.Join(DISCORD_ADMIN_USERNAMES, ",") + "\n"
env += "# " + i18n.DiscordCommandCaseSensitiveTooltip + "\n"
env += "DISCORD_COMMAND_CASE_SENSITIVE=" + strconv.FormatBool(DISCORD_COMMAND_CASE_SENSITIVE) + "\n"
env += "# " + i18n.DiscordCommandPrefixTooltip + "\n"
env += "DISCORD_COMMAND_PREFIX=" + DISCORD_COMMAND_PREFIX + "\n\n"

env += "# " + i18n.EnablePalworldRconTooltip + "\n"
env += "PALWORLD_RCON_ENABLED=" + strconv.FormatBool(PALWORLD_RCON_ENABLED) + "\n"
env += "# " + i18n.PalworldRconHostTooltip + "\n"
env += "PALWORLD_RCON_HOST=" + PALWORLD_RCON_HOST + "\n"
env += "# " + i18n.PalworldRconPortTooltip + "\n"
env += "PALWORLD_RCON_PORT=" + strconv.Itoa(int(PALWORLD_RCON_PORT)) + "\n"
env += "# " + i18n.PalworldAdminPasswordTooltip + "\n"
env += "PALWORLD_ADMIN_PASSWORD=" + PALWORLD_ADMIN_PASSWORD + "\n"
env += "# " + i18n.PalworldServerFilePathTooltip + "\n"
env += "PALWORLD_SERVER_FILE_PATH=" + PALWORLD_SERVER_FILE_PATH + "\n"
env += "# " + i18n.PalworldServerExecuteFlagsTooltip + "\n"
env += "PALWORLD_SERVER_EXECUTE_FLAGS=" + strings.Join(PALWORLD_SERVER_EXECUTE_FLAGS, " ") + "\n\n"

env += "# " + i18n.DiscordDashboardChannelIDDescription + "\n"
env += "DISCORD_DASHBOARD_CHANNEL_ID=" + DISCORD_DASHBOARD_CHANNEL_ID + "\n"
env += "# " + i18n.DiscordLogChannelIDDescription + "\n"
env += "DISCORD_LOG_CHANNEL_ID=" + DISCORD_LOG_CHANNEL_ID + "\n"
env += "# " + i18n.DiscordDashboardPalworldConfigMessageIDTooltip + "\n"
env += "DISCORD_DASHBOARD_PALWORLD_CONFIG_MESSAGE_ID=" + DISCORD_DASHBOARD_PALWORLD_CONFIG_MESSAGE_ID + "\n"
env += "# " + i18n.DiscordDashboardOnlinePlayersMessageIDTooltip + "\n"
env += "DISCORD_DASHBOARD_ONLINE_PLAYERS_MESSAGE_ID=" + DISCORD_DASHBOARD_ONLINE_PLAYERS_MESSAGE_ID + "\n"
env += "# " + i18n.DiscordDashboardBotConfigMessageIDTooltip + "\n"
env += "DISCORD_DASHBOARD_BOT_CONFIG_MESSAGE_ID=" + DISCORD_DASHBOARD_BOT_CONFIG_MESSAGE_ID + "\n\n"

env += "# " + i18n.DiscordCommandAliasKickTooltip + "\n"
env += "DISCORD_COMMAND_ALIAS_KICK=" + DISCORD_COMMAND_ALIAS_KICK + "\n"
env += "# " + i18n.DiscordCommandAliasBanTooltip + "\n"
env += "DISCORD_COMMAND_ALIAS_BAN=" + DISCORD_COMMAND_ALIAS_BAN + "\n"
env += "# " + i18n.DiscordCommandAliasBroadcastTooltip + "\n"
env += "DISCORD_COMMAND_ALIAS_BROADCAST=" + DISCORD_COMMAND_ALIAS_BROADCAST + "\n"
env += "# " + i18n.DiscordCommandAliasShutdownTooltip + "\n"
env += "DISCORD_COMMAND_ALIAS_SHUTDOWN=" + DISCORD_COMMAND_ALIAS_SHUTDOWN + "\n"
env += "# " + i18n.DiscordCommandAliasDoExitTooltip + "\n"
env += "DISCORD_COMMAND_ALIAS_DO_EXIT=" + DISCORD_COMMAND_ALIAS_DO_EXIT + "\n"
env += "# " + i18n.DiscordCommandAliasSaveTooltip + "\n"
env += "DISCORD_COMMAND_ALIAS_SAVE=" + DISCORD_COMMAND_ALIAS_SAVE + "\n"
env += "# " + i18n.DiscordCommandAliasStartServerTooltip + "\n"
env += "DISCORD_COMMAND_ALIAS_START_SERVER=" + DISCORD_COMMAND_ALIAS_START_SERVER + "\n\n"

env += "LANGUAGE=" + LANGUAGE + "\n"

return os.WriteFile(".env", []byte(env), 0644)
}
10 changes: 8 additions & 2 deletions src/i18n/en.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ func en() {
}
UnknownCommand = "Unknown command"

WebServerOpeningMessage = "If you cannot access the web server, please modify the .env file and run it again."

WebConfig = "Web Config"
EnableWebServer = "Enable Web Server"
EnableWebServerDisablePrompt = "Do you want to disable web server? You need to modify .env file to enable it again."
Expand All @@ -48,15 +50,17 @@ func en() {
EnableDiscordBot = "Enable Discord Bot"
DiscordBotToken = "Discord Bot Token"
DiscordBotTokenTooltip = "Enter the token of the Discord bot. You can find out how to get the token by clicking the ? button you are currently hovering over."
DiscordBotTokenDescription = "Enter the token of the Discord bot. You can find out how to get the token at https://github.com/juunini/palworld-discord-bot/wiki"
DiscordAdminUsernames = "Discord Admin Usernames"
DiscordAdminUsernamesTooltip = "Enter the nicknames of Discord admins. If there are multiple, separate them with a comma."
DiscordAdminUsernamesTooltip = "Enter the 'Discord username' of the administrator. If there are multiple, separate them with a comma."
DiscordCommandCaseSensitive = "Discord Command Case Sensitive"
DiscordCommandCaseSensitiveTooltip = "Set whether to distinguish the case of Discord commands."
DiscordCommandPrefix = "Discord Bot Call Command"
DiscordCommandPrefixTooltip = "Set the command to call the Discord bot."

PalworldConfig = "Palworld Config"
EnablePalworldRcon = "Enable Palworld RCON (Please set RCONEnable value in PalWorldSettings.ini to true in advance.)"
EnablePalworldRcon = "Enable Palworld RCON"
EnablePalworldRconTooltip = "Enable the Palworld RCON function."
PalworldRconHost = "Palworld RCON Host"
PalworldRconHostTooltip = "Enter the address of the server where the Palworld server is running."
PalworldRconPort = "Palworld RCON Port"
Expand All @@ -71,8 +75,10 @@ func en() {
DiscordChannelConfig = "Discord Channel Config"
DiscordDashboardChannelID = "Discord Dashboard Channel ID"
DiscordDashboardChannelIDTooltip = "Enter the channel ID for using the dashboard function. If not entered, the function is not used. You can find out how to check the channel ID by clicking the ? button you are currently hovering over."
DiscordDashboardChannelIDDescription = "Enter the channel ID for using the dashboard function. If not entered, the function is not used. You can find out how to check the channel ID at https://github.com/juunini/palworld-discord-bot/wiki"
DiscordLogChannelID = "Discord Log Channel ID"
DiscordLogChannelIDTooltip = "Enter the channel ID to check the user's connection/disconnection record. If not entered, the function is not used. You can find out how to check the channel ID by clicking the ? button you are currently hovering over."
DiscordLogChannelIDDescription = "Enter the channel ID to check the user's connection/disconnection record. If not entered, the function is not used. You can find out how to check the channel ID at https://github.com/juunini/palworld-discord-bot/wiki"
DiscordDashboardOnlinePlayersMessageID = "Discord Dashboard Online Players Message ID"
DiscordDashboardOnlinePlayersMessageIDTooltip = "Automatically set value. If not necessary, do not modify."
DiscordDashboardPalworldConfigMessageID = "Discord Dashboard Palworld Config Message ID"
Expand Down
6 changes: 6 additions & 0 deletions src/i18n/i18n.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ var (
)

var (
WebServerOpeningMessage string

WebConfig string
EnableWebServer string
EnableWebServerDisablePrompt string
Expand All @@ -46,6 +48,7 @@ var (
EnableDiscordBot string
DiscordBotToken string
DiscordBotTokenTooltip string
DiscordBotTokenDescription string
DiscordAdminUsernames string
DiscordAdminUsernamesTooltip string
DiscordCommandCaseSensitive string
Expand All @@ -55,6 +58,7 @@ var (

PalworldConfig string
EnablePalworldRcon string
EnablePalworldRconTooltip string
PalworldRconHost string
PalworldRconHostTooltip string
PalworldRconPort string
Expand All @@ -69,8 +73,10 @@ var (
DiscordChannelConfig string
DiscordDashboardChannelID string
DiscordDashboardChannelIDTooltip string
DiscordDashboardChannelIDDescription string
DiscordLogChannelID string
DiscordLogChannelIDTooltip string
DiscordLogChannelIDDescription string
DiscordDashboardOnlinePlayersMessageID string
DiscordDashboardOnlinePlayersMessageIDTooltip string
DiscordDashboardPalworldConfigMessageID string
Expand Down
14 changes: 10 additions & 4 deletions src/i18n/ko.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ func ko() {
}
UnknownCommand = "알 수 없는 명령어입니다."

WebServerOpeningMessage = "웹 서버에 접속하실 수 없는 환경이라면, .env 파일을 수정하신 후 다시 실행해주세요."

WebConfig = "웹 설정"
EnableWebServer = "웹 서버 사용"
EnableWebServerDisablePrompt = "웹 서버를 사용하지 않으시겠습니까? 이후 다시 설정하시려면 .env 파일을 수정하셔야 합니다."
Expand All @@ -48,18 +50,20 @@ func ko() {
EnableDiscordBot = "디스코드 봇 사용"
DiscordBotToken = "디스코드 봇 토큰"
DiscordBotTokenTooltip = "디스코드 봇의 토큰을 입력하세요. 토큰을 얻는 방법은 현재 마우스를 올리고 있는 ? 버튼을 클릭하시면 확인하실 수 있습니다."
DiscordBotTokenDescription = "디스코드 봇의 토큰을 입력하세요. 토큰을 얻는 방법은 https://github.com/juunini/palworld-discord-bot/wiki 를 참고하세요."
DiscordAdminUsernames = "디스코드 관리자 닉네임"
DiscordAdminUsernamesTooltip = "디스코드 관리자의 닉네임을 입력하세요. 여러명일 경우 쉼표로 구분합니다."
DiscordAdminUsernamesTooltip = "관리자의 '디스코드 닉네임'을 입력하세요. 여러명일 경우 쉼표로 구분합니다."
DiscordCommandCaseSensitive = "디스코드 커맨드 대소문자 구분"
DiscordCommandCaseSensitiveTooltip = "디스코드 커맨드의 대소문자를 구분할지 설정합니다."
DiscordCommandPrefix = "디스코드 봇 호출 명령어"
DiscordCommandPrefixTooltip = "디스코드 봇 호출 명령어를 설정합니다."

PalworldConfig = "팰월드 설정"
EnablePalworldRcon = "팰월드 RCON 호출 기능을 사용합니다. (PalWorldSettings.ini의 RCONEnable 값을 미리 true로 설정해주세요.)"
PalworldRconHost = "팰월드 RCON 호스트"
EnablePalworldRcon = "팰월드 RCON 호출 기능을 사용합니다."
EnablePalworldRconTooltip = "PalWorldSettings.ini의 RCONEnable 값을 미리 true로 설정해주세요."
PalworldRconHost = "RCON Host"
PalworldRconHostTooltip = "팰월드 서버가 실행된 서버의 주소를 입력하세요."
PalworldRconPort = "팰월드 RCON 포트"
PalworldRconPort = "RCON Port"
PalworldRconPortTooltip = "PalWorldSettings.ini 파일에 설정된 RCONPort 값을 입력하세요. (포트포워딩이나 리버스 프록시를 이용해 변경하셨으면 해당 포트를 입력하세요.)"
PalworldAdminPassword = "팰월드 관리자 비밀번호"
PalworldAdminPasswordTooltip = "PalWorldSettings.ini 파일에 설정된 AdminPassword 값을 입력하세요."
Expand All @@ -71,8 +75,10 @@ func ko() {
DiscordChannelConfig = "디스코드 채널 설정"
DiscordDashboardChannelID = "대시보드 채널 ID"
DiscordDashboardChannelIDTooltip = "대시보드 기능을 이용하기 위한 채널 ID를 입력하세요. 입력하지 않으면 해당 기능을 사용하지 않습니다. 채널 ID를 확인하는 방법은 현재 마우스를 올리고 있는 ? 버튼을 클릭하시면 확인하실 수 있습니다."
DiscordDashboardChannelIDDescription = "대시보드 기능을 이용하기 위한 채널 ID를 입력하세요. 입력하지 않으면 해당 기능을 사용하지 않습니다. 채널 ID를 확인하는 방법은 https://github.com/juunini/palworld-discord-bot/wiki 를 참고하세요."
DiscordLogChannelID = "로그 채널 ID"
DiscordLogChannelIDTooltip = "유저의 접속/종료 기록을 확인하기 위한 채널 ID를 입력하세요. 입력하지 않으면 해당 기능을 사용하지 않습니다. 채널 ID를 확인하는 방법은 현재 마우스를 올리고 있는 ? 버튼을 클릭하시면 확인하실 수 있습니다."
DiscordLogChannelIDDescription = "유저의 접속/종료 기록을 확인하기 위한 채널 ID를 입력하세요. 입력하지 않으면 해당 기능을 사용하지 않습니다. 채널 ID를 확인하는 방법은 https://github.com/juunini/palworld-discord-bot/wiki 를 참고하세요."
DiscordDashboardOnlinePlayersMessageID = "온라인 상태 대시보드 Message ID"
DiscordDashboardOnlinePlayersMessageIDTooltip = "자동으로 설정되는 값입니다. 필요한 경우가 아니라면 수정하지 마세요."
DiscordDashboardPalworldConfigMessageID = "팰월드 설정 대시보드 Message ID"
Expand Down
Loading