From 12db682c4141b4debbcd712f7121cba482358e8e Mon Sep 17 00:00:00 2001 From: TheWhiteDog9487 Date: Fri, 12 Dec 2025 09:00:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=9C=A8=E5=AE=89=E8=A3=85Sy?= =?UTF-8?q?stemd=E6=9C=8D=E5=8A=A1=E6=97=B6=E9=80=9A=E8=BF=87=E7=8E=AF?= =?UTF-8?q?=E5=A2=83=E5=8F=98=E9=87=8F=E8=AF=BB=E5=8F=96Discord=E4=BB=A4?= =?UTF-8?q?=E7=89=8C=20=E5=A6=82=E6=9E=9C=E5=91=BD=E4=BB=A4=E8=A1=8C?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E5=AD=98=E5=9C=A8=EF=BC=8C=E5=91=BD=E4=BB=A4?= =?UTF-8?q?=E8=A1=8C=E5=8F=82=E6=95=B0=E7=9A=84=E4=BC=98=E5=85=88=E7=BA=A7?= =?UTF-8?q?=E4=BB=8D=E7=84=B6=E9=AB=98=E4=BA=8E=E7=8E=AF=E5=A2=83=E5=8F=98?= =?UTF-8?q?=E9=87=8F=20=E5=8F=A6=E5=A4=96=EF=BC=8C=E6=88=91=E4=B8=8D?= =?UTF-8?q?=E5=A4=AA=E7=90=86=E8=A7=A3=E4=B8=BA=E4=BB=80=E4=B9=88=E4=B9=8B?= =?UTF-8?q?=E5=89=8D=E8=A6=81=E5=AF=B9=E4=B8=80=E4=B8=AA=E4=BB=85=E6=9C=89?= =?UTF-8?q?=E5=94=AF=E4=B8=80=E5=85=83=E7=B4=A0=E7=9A=84List=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E8=BF=AD=E4=BB=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle.kts | 4 +-- .../Configuration/OpenAPIConfiguration.java | 2 +- .../WebAPI/GlobalSharedBean.java | 7 ++--- .../Startup/SystemdInstallerManager.java | 26 +++++++++---------- 4 files changed, 20 insertions(+), 19 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 5a9efc3..a045124 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,7 +8,7 @@ plugins { } group = "xyz.thewhitedog9487" -version = "0.7.3" +version = "0.7.4" java { toolchain { @@ -35,7 +35,7 @@ dependencies { implementation("org.springframework.boot:spring-boot-starter-webmvc") compileOnly("org.projectlombok:lombok") developmentOnly("org.springframework.boot:spring-boot-devtools") -// developmentOnly("org.springframework.boot:spring-boot-docker-compose") + developmentOnly("org.springframework.boot:spring-boot-docker-compose") runtimeOnly("org.xerial:sqlite-jdbc") annotationProcessor("org.springframework.boot:spring-boot-configuration-processor") annotationProcessor("org.projectlombok:lombok") diff --git a/src/main/java/xyz/thewhitedog9487/WebAPI/Configuration/OpenAPIConfiguration.java b/src/main/java/xyz/thewhitedog9487/WebAPI/Configuration/OpenAPIConfiguration.java index e0a63a0..70554e0 100644 --- a/src/main/java/xyz/thewhitedog9487/WebAPI/Configuration/OpenAPIConfiguration.java +++ b/src/main/java/xyz/thewhitedog9487/WebAPI/Configuration/OpenAPIConfiguration.java @@ -23,7 +23,7 @@ class OpenAPIConfiguration { .contact(new Contact() .name("TheWhiteDog9487") .url("https://www.github.com/TheWhiteDog9487/WebAPI")) - .version("0.7.3") + .version("0.7.4") .license(new License() .name("WTFPL") .url("https://spdx.org/licenses/WTFPL")) ) diff --git a/src/main/java/xyz/thewhitedog9487/WebAPI/GlobalSharedBean.java b/src/main/java/xyz/thewhitedog9487/WebAPI/GlobalSharedBean.java index 81a5fd9..7122a3b 100644 --- a/src/main/java/xyz/thewhitedog9487/WebAPI/GlobalSharedBean.java +++ b/src/main/java/xyz/thewhitedog9487/WebAPI/GlobalSharedBean.java @@ -4,6 +4,7 @@ import discord4j.core.DiscordClientBuilder; import discord4j.core.GatewayDiscordClient; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.RandomStringUtils; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; @@ -18,17 +19,17 @@ import java.util.concurrent.locks.ReentrantLock; @Slf4j @Component class GlobalSharedBean { + @Value("${Discord_Bot_Token:}") String DiscordBotToken; + @Bean GatewayDiscordClient GetDiscordClient(){ - String DiscordBotToken = System.getenv("Discord_Bot_Token"); - if (DiscordBotToken == null) { + if (DiscordBotToken.isEmpty()) { log.error("未设置环境变量Discord_Bot_Token,请检查配置。"); System.exit(-1); } return DiscordClientBuilder.create(DiscordBotToken) .build() .login() .block();} - // TODO: ↑ 看看能不能优化下启动性能 @Bean List ApiKeyList() { diff --git a/src/main/java/xyz/thewhitedog9487/WebAPI/Startup/SystemdInstallerManager.java b/src/main/java/xyz/thewhitedog9487/WebAPI/Startup/SystemdInstallerManager.java index b9662f6..6769e22 100644 --- a/src/main/java/xyz/thewhitedog9487/WebAPI/Startup/SystemdInstallerManager.java +++ b/src/main/java/xyz/thewhitedog9487/WebAPI/Startup/SystemdInstallerManager.java @@ -10,6 +10,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.Arrays; import java.util.List; +import java.util.NoSuchElementException; @Slf4j public class SystemdInstallerManager{ @@ -41,7 +42,7 @@ public class SystemdInstallerManager{ static Path ServiceFileName = Path.of("WebAPI.service"); static String SoftLinkFileName = "Current"; static Path SymbolicLinkPath = WorkingDirectory.resolve(SoftLinkFileName); - + static String DiscordBotToken = System.getenv("Discord_Bot_Token"); /** * 检测当前运行环境是否为GraalVM生成的Native Image */ @@ -93,14 +94,16 @@ public class SystemdInstallerManager{ 在Native Image / Jar文件旁边生成指向自身的,名为Current的软连接 然后在软连接旁生成systemd服务文件,执行目标指向软连接 */ - List DiscordBotToken = Arrays.stream(CommandLineArguments) - .filter(s -> { - for (String o : List.of("--Discord_Bot_Token=")) { - if (s.startsWith(o) == true) { return true; } } - return false; } ) - .toList(); - if ( DiscordBotToken.isEmpty() == true ) { - log.error("必须通过\"--Discord_Bot_Token=\"参数提供Discord机器人的令牌以使本程序正常工作。"); + try { + DiscordBotToken = Arrays.stream(CommandLineArguments) + .filter(s -> s.startsWith("--Discord_Bot_Token=") == true) + .toList() + .getFirst() + .substring("--" + .length()); } + catch (NoSuchElementException _){ } + if ( DiscordBotToken == null ) { + log.error("必须通过\"--Discord_Bot_Token=\"参数或Discord_Bot_Token环境变量提供Discord机器人的令牌以使本程序正常工作。"); throw new IllegalArgumentException("缺少必须的--Discord_Bot_Token参数"); } log.info("开始安装systemd服务"); log.debug("SystemProperties.os.name: {}", CurrentOS); @@ -131,10 +134,7 @@ public class SystemdInstallerManager{ CurrentUser, WorkingDirectory, ExecCommand, - DiscordBotToken - .getFirst() - .substring("--" - .length())); + "Discord_Bot_Token=" + DiscordBotToken); log.debug("ServiceFileContent: \n{}", ServiceFileContent); Files.deleteIfExists( WorkingDirectory.resolve(ServiceFileName) ); Files.writeString(WorkingDirectory.resolve(ServiceFileName), ServiceFileContent);