1414import platform
1515from src .common .logger import get_module_logger
1616
17-
18- # 配置主程序日志格式
1917logger = get_module_logger ("main_bot" )
2018
2119# 获取没有加载env时的环境变量
@@ -103,7 +101,6 @@ def dev():
103101 RuntimeError (f"ENVIRONMENT 配置错误,请检查 .env 文件中的 ENVIRONMENT 变量及对应 .env.{ env } 是否存在" )
104102
105103
106-
107104def scan_provider (env_config : dict ):
108105 provider = {}
109106
@@ -166,12 +163,13 @@ async def uvicorn_main():
166163 uvicorn_server = server
167164 await server .serve ()
168165
166+
169167def check_eula ():
170168 eula_confirm_file = Path ("eula.confirmed" )
171169 privacy_confirm_file = Path ("privacy.confirmed" )
172170 eula_file = Path ("EULA.md" )
173171 privacy_file = Path ("PRIVACY.md" )
174-
172+
175173 eula_updated = True
176174 eula_new_hash = None
177175 privacy_updated = True
@@ -205,6 +203,9 @@ def check_eula():
205203 if eula_new_hash == confirmed_content :
206204 eula_confirmed = True
207205 eula_updated = False
206+ if eula_new_hash == os .getenv ("EULA_AGREE" ):
207+ eula_confirmed = True
208+ eula_updated = False
208209
209210 # 检查隐私条款确认文件是否存在
210211 if privacy_confirm_file .exists ():
@@ -213,42 +214,46 @@ def check_eula():
213214 if privacy_new_hash == confirmed_content :
214215 privacy_confirmed = True
215216 privacy_updated = False
217+ if privacy_new_hash == os .getenv ("PRIVACY_AGREE" ):
218+ privacy_confirmed = True
219+ privacy_updated = False
216220
217221 # 如果EULA或隐私条款有更新,提示用户重新确认
218222 if eula_updated or privacy_updated :
219223 print ("EULA或隐私条款内容已更新,请在阅读后重新确认,继续运行视为同意更新后的以上两款协议" )
220- print ('输入"同意"或"confirmed"继续运行' )
224+ print (f '输入"同意"或"confirmed"或设置环境变量"EULA_AGREE= { eula_new_hash } "和"PRIVACY_AGREE= { privacy_new_hash } "继续运行' )
221225 while True :
222226 user_input = input ().strip ().lower ()
223- if user_input in ['同意' , ' confirmed' ]:
227+ if user_input in ["同意" , " confirmed" ]:
224228 # print("确认成功,继续运行")
225229 # print(f"确认成功,继续运行{eula_updated} {privacy_updated}")
226230 if eula_updated :
227231 print (f"更新EULA确认文件{ eula_new_hash } " )
228- eula_confirm_file .write_text (eula_new_hash ,encoding = "utf-8" )
232+ eula_confirm_file .write_text (eula_new_hash , encoding = "utf-8" )
229233 if privacy_updated :
230234 print (f"更新隐私条款确认文件{ privacy_new_hash } " )
231- privacy_confirm_file .write_text (privacy_new_hash ,encoding = "utf-8" )
235+ privacy_confirm_file .write_text (privacy_new_hash , encoding = "utf-8" )
232236 break
233237 else :
234238 print ('请输入"同意"或"confirmed"以继续运行' )
235239 return
236240 elif eula_confirmed and privacy_confirmed :
237241 return
238242
243+
239244def raw_main ():
240245 # 利用 TZ 环境变量设定程序工作的时区
241246 # 仅保证行为一致,不依赖 localtime(),实际对生产环境几乎没有作用
242247 if platform .system ().lower () != "windows" :
243248 time .tzset ()
244-
249+
245250 check_eula ()
246251 print ("检查EULA和隐私条款完成" )
247252 easter_egg ()
248253 init_config ()
249254 init_env ()
250255 load_env ()
251-
256+
252257 # load_logger()
253258
254259 env_config = {key : os .getenv (key ) for key in os .environ }
@@ -280,15 +285,15 @@ def raw_main():
280285 app = nonebot .get_asgi ()
281286 loop = asyncio .new_event_loop ()
282287 asyncio .set_event_loop (loop )
283-
288+
284289 try :
285290 loop .run_until_complete (uvicorn_main ())
286291 except KeyboardInterrupt :
287292 logger .warning ("收到中断信号,正在优雅关闭..." )
288293 loop .run_until_complete (graceful_shutdown ())
289294 finally :
290295 loop .close ()
291-
296+
292297 except Exception as e :
293298 logger .error (f"主程序异常: { str (e )} " )
294299 if loop and not loop .is_closed ():
0 commit comments