From 62f339d431811c5908a7e5f2eaabd6d45ca1be84 Mon Sep 17 00:00:00 2001
From: Kyomotoi <0w0@imki.moe>
Date: Thu, 13 Oct 2022 16:22:02 +0800
Subject: =?UTF-8?q?=F0=9F=8E=A8=E2=9A=A1=EF=B8=8F=20=E8=B7=9F=E8=BF=9B=20c?=
 =?UTF-8?q?onfig=20=E9=A1=B9=E7=9A=84=E9=87=8D=E6=9E=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ATRI/__init__.py                        | 13 +++++++----
 ATRI/exceptions.py                      | 11 +++++----
 ATRI/log.py                             | 40 ++++++++++++++++-----------------
 ATRI/plugins/console/__init__.py        |  4 ++--
 ATRI/plugins/console/driver/__init__.py |  4 ++--
 ATRI/plugins/essential.py               | 20 ++++++++---------
 ATRI/plugins/help/data_source.py        |  5 ++---
 ATRI/plugins/repo.py                    |  4 ++--
 ATRI/plugins/setu/__init__.py           |  6 ++---
 ATRI/plugins/setu/data_source.py        |  6 ++---
 ATRI/plugins/status/__init__.py         |  4 ++--
 ATRI/utils/request.py                   |  8 +++----
 test/test_plugin_help.py                |  5 ++---
 13 files changed, 65 insertions(+), 65 deletions(-)

diff --git a/ATRI/__init__.py b/ATRI/__init__.py
index 79157ce..547e4bd 100644
--- a/ATRI/__init__.py
+++ b/ATRI/__init__.py
@@ -1,11 +1,16 @@
 from time import sleep
+from pathlib import Path
 
 import nonebot
 from nonebot.adapters.onebot.v11 import Adapter
 
-from .config import RUNTIME_CONFIG, BotSelfConfig, InlineGoCQHTTP
+from .configs import Config
 
 __version__ = "YHN-001-A07"
+__conf_path = Path(".") / "config.yml"
+__conf = Config(__conf_path)
+
+conf = __conf.parse()
 
 
 def asgi():
@@ -17,15 +22,15 @@ def driver():
 
 
 def init():
-    nonebot.init(**RUNTIME_CONFIG)
+    nonebot.init(**__conf.get_runtime_conf())
     driver().register_adapter(Adapter)
     nonebot.load_plugins("ATRI/plugins")
     nonebot.load_plugins("ATRI/plugins/rss")
-    if InlineGoCQHTTP.enabled:
+    if conf.WithGoCQHTTP.enabled:
         nonebot.load_plugin("nonebot_plugin_gocqhttp")
     sleep(3)
 
 
 def run():
-    log_level = "debug" if BotSelfConfig.debug else "warning"
+    log_level = "debug" if conf.BotConfig.debug else "warning"
     nonebot.run(log_level=log_level)
diff --git a/ATRI/exceptions.py b/ATRI/exceptions.py
index 27ba426..22f643f 100644
--- a/ATRI/exceptions.py
+++ b/ATRI/exceptions.py
@@ -10,8 +10,9 @@ from nonebot.adapters.onebot.v11 import ActionFailed
 from nonebot.adapters.onebot.v11 import Bot, PrivateMessageEvent, GroupMessageEvent
 from nonebot.message import run_postprocessor
 
-from .log import logger as log
-from .config import BotSelfConfig
+from ATRI import conf
+
+from .log import log
 from .utils import gen_random_str
 
 
@@ -103,9 +104,7 @@ class RssError(BaseBotException):
 
 
 @run_postprocessor
-async def _track_error(
-    bot: Bot, event, matcher: Matcher, exception: Optional[Exception]
-) -> None:
+async def _(bot: Bot, event, matcher: Matcher, exception: Optional[Exception]):
     if not exception:
         return
 
@@ -131,7 +130,7 @@ async def _track_error(
     log.error(f"Error Track ID: {track_id}")
     msg = f"呜——出错了...追踪: {track_id}\n来自: {_id}"
 
-    for superusers in BotSelfConfig.superusers:
+    for superusers in conf.BotConfig.superusers:
         try:
             await bot.send_private_msg(user_id=superusers, message=msg)
         except BaseBotException:
diff --git a/ATRI/log.py b/ATRI/log.py
index 77f16ef..75fe4e4 100644
--- a/ATRI/log.py
+++ b/ATRI/log.py
@@ -2,17 +2,17 @@ import sys
 from pathlib import Path
 from datetime import datetime
 
-from nonebot.log import logger
+from nonebot.log import logger as log
 
-from .config import BotSelfConfig
+from ATRI import conf
 
 
 LOGGER_DIR = Path(".") / "data" / "logs"
 LOGGER_DIR.mkdir(exist_ok=True, parents=True)
 
-NOW_TIME = datetime.now().strftime("%Y%m%d-%H")
+_NOW_TIME = datetime.now().strftime("%Y%m%d-%H")
 
-log_format = (
+_LOG_FORMAT = (
     "\033[36mATRI\033[0m "
     "| <g>{time:MM-DD HH:mm:ss}</g> "
     "| <lvl>{level}</lvl> "
@@ -36,47 +36,47 @@ class LoguruNameDealer:
         return record
 
 
-logger.remove()
-logger.add(
+log.remove()
+log.add(
     sys.stdout,
-    level="DEBUG" if BotSelfConfig.debug else "INFO",
+    level="DEBUG" if conf.BotConfig.debug else "INFO",
     colorize=True,
     filter=LoguruNameDealer(),
-    format=log_format,
+    format=_LOG_FORMAT,
 )
 
-logger.add(
-    LOGGER_DIR / "info" / f"{NOW_TIME}.log",
+log.add(
+    LOGGER_DIR / "info" / f"{_NOW_TIME}.log",
     rotation="10 MB",
     enqueue=True,
     level="INFO",
     encoding="utf-8",
-    format=log_format,
+    format=_LOG_FORMAT,
 )
 
-logger.add(
-    LOGGER_DIR / "warning" / f"{NOW_TIME}.log",
+log.add(
+    LOGGER_DIR / "warning" / f"{_NOW_TIME}.log",
     rotation="10 MB",
     enqueue=True,
     level="WARNING",
     encoding="utf-8",
-    format=log_format,
+    format=_LOG_FORMAT,
 )
 
-logger.add(
-    LOGGER_DIR / "error" / f"{NOW_TIME}.log",
+log.add(
+    LOGGER_DIR / "error" / f"{_NOW_TIME}.log",
     rotation="10 MB",
     enqueue=True,
     level="ERROR",
     encoding="utf-8",
-    format=log_format,
+    format=_LOG_FORMAT,
 )
 
-logger.add(
-    LOGGER_DIR / "debug" / f"{NOW_TIME}.log",
+log.add(
+    LOGGER_DIR / "debug" / f"{_NOW_TIME}.log",
     rotation="10 MB",
     enqueue=True,
     level="DEBUG",
     encoding="utf-8",
-    format=log_format,
+    format=_LOG_FORMAT,
 )
diff --git a/ATRI/plugins/console/__init__.py b/ATRI/plugins/console/__init__.py
index 0764ab8..522998d 100644
--- a/ATRI/plugins/console/__init__.py
+++ b/ATRI/plugins/console/__init__.py
@@ -3,7 +3,7 @@ import json
 from nonebot.params import ArgPlainText
 from nonebot.adapters.onebot.v11 import PrivateMessageEvent, GroupMessageEvent
 
-from ATRI.config import BotSelfConfig
+from ATRI import conf
 from ATRI.message import MessageBuilder
 from ATRI.exceptions import WriteFileError
 
@@ -27,7 +27,7 @@ async def _(event: PrivateMessageEvent, is_pub_n: str = ArgPlainText("is_pub_n")
     else:
         host = str(await Console().get_host_ip(True))
 
-    port = BotSelfConfig.port
+    port = conf.BotConfig.port
     token = Console().get_random_str(20)
 
     data = json.loads(data_path.read_bytes())
diff --git a/ATRI/plugins/console/driver/__init__.py b/ATRI/plugins/console/driver/__init__.py
index 970c91a..e4f8f71 100644
--- a/ATRI/plugins/console/driver/__init__.py
+++ b/ATRI/plugins/console/driver/__init__.py
@@ -3,8 +3,8 @@ from nonebot.drivers.fastapi import Driver
 from fastapi.staticfiles import StaticFiles
 from fastapi.middleware.cors import CORSMiddleware
 
+from ATRI import conf
 from ATRI.log import log
-from ATRI.log import BotSelfConfig
 from ATRI.plugins.console.data_source import FRONTEND_DIR
 from .view import (
     handle_auther,
@@ -64,6 +64,6 @@ def register_routes(driver: Driver):
 def init_driver():
     from ATRI import driver
 
-    c_url = f"{BotSelfConfig.host}:{BotSelfConfig.port}"
+    c_url = f"{conf.BotConfig.host}:{conf.BotConfig.port}"
     log.info(f"控制台将运行于: http://{c_url} 对应API节点为: /capi")
     register_routes(driver())  # type: ignore
diff --git a/ATRI/plugins/essential.py b/ATRI/plugins/essential.py
index d40856d..c9b48a7 100644
--- a/ATRI/plugins/essential.py
+++ b/ATRI/plugins/essential.py
@@ -27,11 +27,9 @@ from nonebot.adapters.onebot.v11 import (
     Message,
 )
 
-
+from ATRI import conf
 from ATRI.service import Service
 from ATRI.log import log
-from ATRI.config import BotSelfConfig
-
 from ATRI.utils import MessageChecker
 from ATRI.utils.apscheduler import scheduler
 
@@ -142,7 +140,7 @@ async def _friend_add(bot: Bot, event: FriendRequestEvent):
         f"申请码:{apply_code}\n"
         "Tip: 获取好友申请"
     )
-    for superuser in BotSelfConfig.superusers:
+    for superuser in conf.BotConfig.superusers:
         await bot.send_private_msg(user_id=superuser, message=repo)
 
 
@@ -188,7 +186,7 @@ async def _group_invite(bot: Bot, event: GroupRequestEvent):
         f"申请码:{apply_code}\n"
         "Tip: 获取邀请列表"
     )
-    for superuser in BotSelfConfig.superusers:
+    for superuser in conf.BotConfig.superusers:
         await bot.send_private_msg(user_id=superuser, message=repo)
 
 
@@ -198,7 +196,7 @@ group_member_event = Essential().on_notice("群成员变动", "群成员变动
 @group_member_event.handle()
 async def _group_member_join(bot: Bot, event: GroupIncreaseNoticeEvent):
     await asyncio.sleep(randint(1, 6))
-    msg = "好欸!事新人!\n" f"在下 {choice(list(BotSelfConfig.nickname))} 哒!w!"
+    msg = "好欸!事新人!\n" f"在下 {choice(list(conf.BotConfig.nickname))} 哒!w!"
     await group_member_event.finish(msg)
 
 
@@ -216,7 +214,7 @@ async def _group_admin_event(bot: Bot, event: GroupAdminNoticeEvent):
     if not event.is_tome():
         return
 
-    for superuser in BotSelfConfig.superusers:
+    for superuser in conf.BotConfig.superusers:
         await bot.send_private_msg(
             user_id=int(superuser), message=f"好欸!主人!我在群 {event.group_id} 成为了管理!!"
         )
@@ -236,11 +234,11 @@ async def _group_ban_event(bot: Bot, event: GroupBanNoticeEvent):
             f"咱在群 {event.group_id} 被 {event.operator_id} 塞上了口球...\n"
             f"时长...是 {event.duration} 秒"
         )
-        for superuser in BotSelfConfig.superusers:
+        for superuser in conf.BotConfig.superusers:
             await bot.send_private_msg(user_id=int(superuser), message=msg)
     else:
         msg = "好欸!主人\n" f"咱在群 {event.group_id} 的口球被 {event.operator_id} 解除了!"
-        for superuser in BotSelfConfig.superusers:
+        for superuser in conf.BotConfig.superusers:
             await bot.send_private_msg(user_id=int(superuser), message=msg)
 
 
@@ -277,7 +275,7 @@ async def _recall_group_event(bot: Bot, event: GroupRecallNoticeEvent):
         else:
             return
     msg = f"主人,咱拿到了一条撤回信息!\n{user}@[群:{group}]\n撤回了\n{m}"
-    for superuser in BotSelfConfig.superusers:
+    for superuser in conf.BotConfig.superusers:
         await bot.send_private_msg(user_id=int(superuser), message=Message(msg))
 
 
@@ -308,7 +306,7 @@ async def _recall_private_event(bot: Bot, event: FriendRecallNoticeEvent):
             return
 
     msg = f"主人,咱拿到了一条撤回信息!\n{user}@[私聊]撤回了\n{m}"
-    for superuser in BotSelfConfig.superusers:
+    for superuser in conf.BotConfig.superusers:
         await bot.send_private_msg(user_id=int(superuser), message=Message(msg))
 
 
diff --git a/ATRI/plugins/help/data_source.py b/ATRI/plugins/help/data_source.py
index e504818..a99b92e 100644
--- a/ATRI/plugins/help/data_source.py
+++ b/ATRI/plugins/help/data_source.py
@@ -3,10 +3,9 @@ import json
 
 from tabulate import tabulate
 
-from ATRI import __version__
+from ATRI import __version__, conf
 from ATRI.rule import to_bot
 from ATRI.service import Service, SERVICES_DIR, ServiceTools
-from ATRI.config import BotSelfConfig
 
 
 SERVICE_INFO_FORMAT = """
@@ -42,7 +41,7 @@ class Helper(Service):
     @staticmethod
     def about() -> str:
         temp_list = list()
-        for i in BotSelfConfig.nickname:
+        for i in conf.BotConfig.nickname:
             temp_list.append(i)
         nickname = "、".join(map(str, temp_list))
         return (
diff --git a/ATRI/plugins/repo.py b/ATRI/plugins/repo.py
index fe92a3f..561e20b 100644
--- a/ATRI/plugins/repo.py
+++ b/ATRI/plugins/repo.py
@@ -5,8 +5,8 @@ from nonebot.params import CommandArg, ArgPlainText
 from nonebot.adapters.onebot.v11 import Bot, MessageEvent, Message
 from nonebot.adapters.onebot.v11.helpers import Cooldown
 
+from ATRI import conf
 from ATRI.service import Service
-from ATRI.config import BotSelfConfig
 from ATRI.message import MessageBuilder
 
 
@@ -44,7 +44,7 @@ async def _deal_repo(
     user_id = event.get_user_id()
     repo_0 = _REPO_FORMAT.format(user=user_id, msg=repo_msg)
 
-    for superuser in BotSelfConfig.superusers:
+    for superuser in conf.BotConfig.superusers:
         try:
             await bot.send_private_msg(user_id=superuser, message=repo_0)
         except Exception:
diff --git a/ATRI/plugins/setu/__init__.py b/ATRI/plugins/setu/__init__.py
index 7962af8..1e8af97 100644
--- a/ATRI/plugins/setu/__init__.py
+++ b/ATRI/plugins/setu/__init__.py
@@ -8,7 +8,7 @@ from nonebot.params import CommandArg, ArgPlainText
 from nonebot.adapters.onebot.v11 import Bot, MessageEvent, Message, MessageSegment
 from nonebot.adapters.onebot.v11.helpers import extract_image_urls, Cooldown
 
-from ATRI.config import BotSelfConfig
+from ATRI import conf
 from .data_source import Setu
 
 
@@ -122,7 +122,7 @@ async def _setu_catcher(bot: Bot, event: MessageEvent):
             s_repo = f"多张涩图来咧!\n{ss}\n最涩的达到:{'{:.2%}'.format(hso[0])}"
 
         await bot.send(event, u_repo)
-        for superuser in BotSelfConfig.superusers:
+        for superuser in conf.BotConfig.superusers:
             await bot.send_private_msg(user_id=superuser, message=s_repo)
 
 
@@ -143,7 +143,7 @@ async def _deal_check(bot: Bot, event: MessageEvent):
     if hso >= 0.75:
         resu += "hso!不行我要发给别人看"
         repo = f"涩图来咧!\n{MessageSegment.image(args[0])}\n涩值:{'{:.2%}'.format(hso)}"
-        for superuser in BotSelfConfig.superusers:
+        for superuser in conf.BotConfig.superusers:
             await bot.send_private_msg(user_id=superuser, message=repo)
 
     elif 0.75 > hso >= 0.5:
diff --git a/ATRI/plugins/setu/data_source.py b/ATRI/plugins/setu/data_source.py
index 71649fe..faf8668 100644
--- a/ATRI/plugins/setu/data_source.py
+++ b/ATRI/plugins/setu/data_source.py
@@ -1,10 +1,10 @@
 import asyncio
 from nonebot.adapters.onebot.v11 import Bot, MessageSegment
 
+from ATRI import conf
 from ATRI.service import Service
 from ATRI.rule import is_in_service
 from ATRI.utils import request
-from ATRI.config import Setu as ST
 from .nsfw_checker import detect_image, init_model
 
 
@@ -20,8 +20,8 @@ class Setu(Service):
 
     @staticmethod
     def _use_proxy(url: str) -> str:
-        if ST.reverse_proxy:
-            return url.replace("i.pixiv.cat", ST.reverse_proxy_domain)
+        if conf.Setu.reverse_proxy:
+            return url.replace("i.pixiv.cat", conf.Setu.reverse_proxy_domain)
         else:
             return url
 
diff --git a/ATRI/plugins/status/__init__.py b/ATRI/plugins/status/__init__.py
index 9c43973..ee90c86 100644
--- a/ATRI/plugins/status/__init__.py
+++ b/ATRI/plugins/status/__init__.py
@@ -1,7 +1,7 @@
 from nonebot import get_bot
 
+from ATRI import conf
 from ATRI.log import log
-from ATRI.config import BotSelfConfig
 from ATRI.utils.apscheduler import scheduler
 
 from .data_source import Status
@@ -35,7 +35,7 @@ async def _():
         log.warning(msg)
 
         bot = get_bot()
-        for super in BotSelfConfig.superusers:
+        for super in conf.BotConfig.superusers:
             await bot.send_private_msg(user_id=super, message=msg)
 
     log.info("资源消耗正常")
diff --git a/ATRI/utils/request.py b/ATRI/utils/request.py
index db7614f..8310116 100644
--- a/ATRI/utils/request.py
+++ b/ATRI/utils/request.py
@@ -1,16 +1,16 @@
 import httpx
 
-from ATRI.config import BotSelfConfig
+from ATRI import conf
 from ATRI.log import log
 
-timeout = BotSelfConfig.request_timeout
+timeout = conf.BotConfig.request_timeout
 if timeout:
     timeout = httpx.Timeout(timeout)
 
-if not BotSelfConfig.proxy:
+if not conf.BotConfig.proxy:
     proxy = dict()
 else:
-    proxy = {"all://": BotSelfConfig.proxy}
+    proxy = {"all://": conf.BotConfig.proxy}
 
 
 async def get(url: str, **kwargs):
diff --git a/test/test_plugin_help.py b/test/test_plugin_help.py
index ee68f58..fa7616a 100644
--- a/test/test_plugin_help.py
+++ b/test/test_plugin_help.py
@@ -32,12 +32,11 @@ async def test_main_help(app: App):
 
 @pytest.mark.asyncio
 async def test_about_me(app: App):
-    from ATRI import __version__
-    from ATRI.config import BotSelfConfig
+    from ATRI import __version__, conf
     from ATRI.plugins.help import about
 
     temp_list = list()
-    for i in BotSelfConfig.nickname:
+    for i in conf.BotConfig.nickname:
         temp_list.append(i)
     nickname = "、".join(map(str, temp_list))
 
-- 
cgit v1.2.3