fix(bot): 修复EULA检查循环中未重新加载.env文件的问题

在EULA检查的循环中,程序没有在每次尝试时重新加载`.env`文件。这导致即使用户已经修改了`EULA_CONFIRMED`为`true`,程序也无法读取到最新的配置,从而陷入无限等待的循环。

本次修改通过在循环内部调用`load_dotenv(override=True)`,强制在每次检查前重新加载环境变量,确保能够及时获取用户的确认状态,解决了该问题。
This commit is contained in:
minecraft1024a
2025-11-01 21:15:29 +08:00
parent ce9727bdb0
commit 553e0495d6

7
bot.py
View File

@@ -121,7 +121,9 @@ class EULAManager:
confirm_logger.critical("请阅读以下文件:") confirm_logger.critical("请阅读以下文件:")
confirm_logger.critical(" - EULA.md (用户许可协议)") confirm_logger.critical(" - EULA.md (用户许可协议)")
confirm_logger.critical(" - PRIVACY.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 attempts = 0
while attempts < MAX_EULA_CHECK_ATTEMPTS: while attempts < MAX_EULA_CHECK_ATTEMPTS:
@@ -129,6 +131,9 @@ class EULAManager:
await asyncio.sleep(EULA_CHECK_INTERVAL) await asyncio.sleep(EULA_CHECK_INTERVAL)
attempts += 1 attempts += 1
# 重新加载.env文件以获取最新更改
load_dotenv(override=True)
# 从 os.environ 读取,避免重复 I/O # 从 os.environ 读取,避免重复 I/O
eula_confirmed = os.getenv("EULA_CONFIRMED", "").lower() eula_confirmed = os.getenv("EULA_CONFIRMED", "").lower()
if eula_confirmed == "true": if eula_confirmed == "true":