diff --git a/PrismBotTShockAdapter/Models/Config.cs b/PrismBotTShockAdapter/Models/Config.cs new file mode 100644 index 0000000..320f708 --- /dev/null +++ b/PrismBotTShockAdapter/Models/Config.cs @@ -0,0 +1,7 @@ +namespace PrismBotTShockAdapter.Models; + +public class Config +{ + public string Host = "127.0.0.1"; + public int Port = 8081; +} \ No newline at end of file diff --git a/PrismBotTShockAdapter/Models/ElegantWhitelistConfig.cs b/PrismBotTShockAdapter/Models/ElegantWhitelist.cs similarity index 79% rename from PrismBotTShockAdapter/Models/ElegantWhitelistConfig.cs rename to PrismBotTShockAdapter/Models/ElegantWhitelist.cs index b844314..8c79893 100644 --- a/PrismBotTShockAdapter/Models/ElegantWhitelistConfig.cs +++ b/PrismBotTShockAdapter/Models/ElegantWhitelist.cs @@ -1,10 +1,8 @@ namespace PrismBotTShockAdapter.Models; -public class ElegantWhitelistConfig +public class ElegantWhitelist { public string AccountFrozenMessage = "你的账号已被冻结,请联系服务器管理员"; public string ConnectionErrorMessage = "无法连接到白名单服务器,请联系服务器管理员"; - public string Host = "127.0.0.1"; public string NotInWhitelistMessage = "你还没有添加白名单,请在群内发送“添加白名单 <角色昵称>”来添加白名单"; - public int Port = 8081; } \ No newline at end of file diff --git a/PrismBotTShockAdapter/PrismBotTShockAdapter.cs b/PrismBotTShockAdapter/PrismBotTShockAdapter.cs index 8761b09..22a9e6a 100644 --- a/PrismBotTShockAdapter/PrismBotTShockAdapter.cs +++ b/PrismBotTShockAdapter/PrismBotTShockAdapter.cs @@ -19,16 +19,32 @@ public PrismBotTShockAdapter(Main game) : base(game) public override string Name => "PrismBotTShockAdapter"; - public override Version Version => new("1.0.2"); + public override Version Version => new("1.0.3"); public override void Initialize() { - if (!File.Exists(Path.Combine(Environment.CurrentDirectory, "tshock", "ElegantWhitelistTShockAdapter.json"))) + var prismBotDirectory = Path.Combine(AppContext.BaseDirectory, "tshock", "PrismBot"); + if (!Directory.Exists(prismBotDirectory)) + { + Directory.CreateDirectory(prismBotDirectory); + } + + var configPath = Path.Combine(AppContext.BaseDirectory, "tshock", "PrismBot", "config.json"); + if (!File.Exists(configPath)) + { + File.WriteAllText( + configPath, + JsonConvert.SerializeObject(new Config())); + TShock.Log.ConsoleWarn("未找到配置文件(tshock/PrismBot/config.json),已自动生成"); + } + + var elegantWhitelistPath = Path.Combine(AppContext.BaseDirectory, "tshock", "PrismBot", "elegantWhitelist.json"); + if (!File.Exists(elegantWhitelistPath)) { File.WriteAllText( - Path.Combine(Environment.CurrentDirectory, "tshock", "ElegantWhitelistTShockAdapter.json"), - JsonConvert.SerializeObject(new ElegantWhitelistConfig())); - TShock.Log.ConsoleWarn("未找到配置文件(ElegantWhitelistTShockAdapter.json),已自动生成"); + elegantWhitelistPath, + JsonConvert.SerializeObject(new ElegantWhitelist())); + TShock.Log.ConsoleWarn("未找到配置文件(tshock/PrismBot/elegantWhitelist.json),已自动生成"); } ServerApi.Hooks.ServerJoin.Register(this, OnJoin); @@ -38,8 +54,8 @@ private async void OnJoin(JoinEventArgs args) { var player = TShock.Players[args.Who]; using var httpClient = new HttpClient(); - var config = JsonConvert.DeserializeObject(File.ReadAllText(Path.Combine(Environment.CurrentDirectory, - "tshock", "ElegantWhitelistTShockAdapter.json"))); + var elegantWhitelistConfig = JsonConvert.DeserializeObject(File.ReadAllText(Path.Combine(AppContext.BaseDirectory, "tshock", "PrismBot", "elegantWhitelist.json"))); + var config = JsonConvert.DeserializeObject(File.ReadAllText(Path.Combine(AppContext.BaseDirectory, "tshock", "PrismBot", "config.json"))); HttpResponseMessage response; try { @@ -49,13 +65,13 @@ private async void OnJoin(JoinEventArgs args) } catch (HttpRequestException) { - player.Disconnect(config.ConnectionErrorMessage); + player.Disconnect(elegantWhitelistConfig.ConnectionErrorMessage); return; } var result = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); - if (!result.Data.IsRegistered) player.Disconnect(config.NotInWhitelistMessage); - if (result.Data.IsFreeze) player.Disconnect(config.AccountFrozenMessage); + if (!result.Data.IsRegistered) player.Disconnect(elegantWhitelistConfig.NotInWhitelistMessage); + if (result.Data.IsFreeze) player.Disconnect(elegantWhitelistConfig.AccountFrozenMessage); } } \ No newline at end of file