From 553e0495d6a3a1a55d0740921c298cf82d5e09d1 Mon Sep 17 00:00:00 2001 From: minecraft1024a Date: Sat, 1 Nov 2025 21:15:29 +0800 Subject: [PATCH] =?UTF-8?q?fix(bot):=20=E4=BF=AE=E5=A4=8DEULA=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E5=BE=AA=E7=8E=AF=E4=B8=AD=E6=9C=AA=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD`.env`=E6=96=87=E4=BB=B6=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在EULA检查的循环中,程序没有在每次尝试时重新加载`.env`文件。这导致即使用户已经修改了`EULA_CONFIRMED`为`true`,程序也无法读取到最新的配置,从而陷入无限等待的循环。 本次修改通过在循环内部调用`load_dotenv(override=True)`,强制在每次检查前重新加载环境变量,确保能够及时获取用户的确认状态,解决了该问题。 --- bot.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/bot.py b/bot.py index 2fa744f2f..a48d38bad 100644 --- a/bot.py +++ b/bot.py @@ -121,7 +121,9 @@ class EULAManager: confirm_logger.critical("请阅读以下文件:") confirm_logger.critical(" - EULA.md (用户许可协议)") confirm_logger.critical(" - PRIVACY.md (隐私条款)") - confirm_logger.critical("然后编辑 .env 文件,将 'EULA_CONFIRMED=false' 改为 'EULA_CONFIRMED=true'") + confirm_logger.critical( + f"然后编辑 .env 文件,将 'EULA_CONFIRMED=false' 改为 'EULA_CONFIRMED=true'" + ) attempts = 0 while attempts < MAX_EULA_CHECK_ATTEMPTS: @@ -129,6 +131,9 @@ class EULAManager: await asyncio.sleep(EULA_CHECK_INTERVAL) attempts += 1 + # 重新加载.env文件以获取最新更改 + load_dotenv(override=True) + # 从 os.environ 读取,避免重复 I/O eula_confirmed = os.getenv("EULA_CONFIRMED", "").lower() if eula_confirmed == "true":