109 lines
4.0 KiB
Python
109 lines
4.0 KiB
Python
|
||
import os
|
||
import sys
|
||
import warnings
|
||
import traceback
|
||
import threading
|
||
from SparkleLogging.utils.core import LogManager
|
||
from logging import Formatter, Logger
|
||
|
||
warnings.filterwarnings("ignore")
|
||
abs_path = os.path.dirname(os.path.realpath(sys.argv[0])) + '/'
|
||
|
||
logger: Logger = None
|
||
|
||
logo_tmpl = """
|
||
___ _______.___________..______ .______ ______ .___________.
|
||
/ \ / | || _ \ | _ \ / __ \ | |
|
||
/ ^ \ | (----`---| |----`| |_) | | |_) | | | | | `---| |----`
|
||
/ /_\ \ \ \ | | | / | _ < | | | | | |
|
||
/ _____ \ .----) | | | | |\ \----.| |_) | | `--' | | |
|
||
/__/ \__\ |_______/ |__| | _| `._____||______/ \______/ |__|
|
||
|
||
"""
|
||
|
||
def make_necessary_dirs():
|
||
'''
|
||
创建必要的目录。
|
||
'''
|
||
os.makedirs("data/config", exist_ok=True)
|
||
os.makedirs("temp", exist_ok=True)
|
||
|
||
def update_dept():
|
||
'''
|
||
更新依赖库。
|
||
'''
|
||
# 获取 Python 可执行文件路径
|
||
py = sys.executable
|
||
# 更新依赖库
|
||
mirror = "https://mirrors.aliyun.com/pypi/simple/"
|
||
os.system(f"{py} -m pip install -r requirements.txt -i {mirror}")
|
||
|
||
def main():
|
||
try:
|
||
import botpy, logging
|
||
import astrbot.core as bot_core
|
||
# delete qqbotpy's logger
|
||
for handler in logging.root.handlers[:]:
|
||
logging.root.removeHandler(handler)
|
||
except ImportError as import_error:
|
||
logger.error(import_error)
|
||
logger.error("检测到一些依赖库没有安装。由于兼容性问题,AstrBot 此版本将不会自动为您安装依赖库。请您先自行安装,然后重试。")
|
||
logger.info("如何安装?如果:")
|
||
logger.info("- Windows 启动器部署且使用启动器下载了 Python的:在 launcher.exe 所在目录下的地址框输入 powershell,然后执行 .\python\python.exe -m pip install .\AstrBot\requirements.txt")
|
||
logger.info("- Windows 启动器部署且使用自己之前下载的 Python的:在 launcher.exe 所在目录下的地址框输入 powershell,然后执行 python -m pip install .\AstrBot\requirements.txt")
|
||
logger.info("- 自行 clone 源码部署的:python -m pip install -r requirements.txt")
|
||
logger.info("- 如果还不会,加群 322154837 ")
|
||
input("按任意键退出。")
|
||
exit()
|
||
except FileNotFoundError as file_not_found:
|
||
logger.error(file_not_found)
|
||
input("配置文件不存在,请检查是否已经下载配置文件。")
|
||
exit()
|
||
except BaseException as e:
|
||
logger.error(traceback.format_exc())
|
||
input("未知错误。")
|
||
exit()
|
||
|
||
make_necessary_dirs()
|
||
|
||
# 启动主程序(cores/qqbot/core.py)
|
||
bot_core.init()
|
||
|
||
|
||
def check_env():
|
||
if not (sys.version_info.major == 3 and sys.version_info.minor >= 9):
|
||
logger.error("请使用 Python3.9+ 运行本项目。按任意键退出。")
|
||
input("")
|
||
exit()
|
||
|
||
if __name__ == "__main__":
|
||
logger = LogManager.GetLogger(
|
||
log_name='astrbot-core',
|
||
out_to_console=True,
|
||
custom_formatter=Formatter('[%(asctime)s| %(name)s - %(levelname)s|%(filename)s:%(lineno)d]: %(message)s', datefmt="%H:%M:%S")
|
||
)
|
||
logger.info(logo_tmpl)
|
||
|
||
# 设置代理
|
||
from util.cmd_config import CmdConfig
|
||
cc = CmdConfig()
|
||
http_proxy = cc.get("http_proxy")
|
||
https_proxy = cc.get("https_proxy")
|
||
logger.info(f"使用代理: {http_proxy}, {https_proxy}")
|
||
if http_proxy:
|
||
os.environ['HTTP_PROXY'] = http_proxy
|
||
if https_proxy:
|
||
os.environ['HTTPS_PROXY'] = https_proxy
|
||
os.environ['NO_PROXY'] = 'https://api.sgroup.qq.com'
|
||
|
||
update_dept()
|
||
check_env()
|
||
t = threading.Thread(target=main, daemon=True)
|
||
t.start()
|
||
try:
|
||
t.join()
|
||
except KeyboardInterrupt as e:
|
||
logger.info("退出 AstrBot。")
|
||
exit()
|