summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuoqi Yang <[email protected]>2022-09-25 15:35:49 +0800
committerRuoqi Yang <[email protected]>2022-09-25 22:53:39 +0800
commitd4ba45afd544e7d0f532eff5011bd289e10e26bf (patch)
tree940c01d7422047c5eed330f9e2dc92988d6f9161
parentc234d65b536a21e40d9edde00bbbd546273a5464 (diff)
downloadATRI-d4ba45afd544e7d0f532eff5011bd289e10e26bf.tar.gz
ATRI-d4ba45afd544e7d0f532eff5011bd289e10e26bf.tar.bz2
ATRI-d4ba45afd544e7d0f532eff5011bd289e10e26bf.zip
fix: handle text msg recall
fix: BaseBotException is not catched by nonebot (and printed) fix: database startup at module level to enable load a single plugin
-rw-r--r--ATRI/exceptions.py2
-rw-r--r--ATRI/plugins/__init__.py43
-rw-r--r--ATRI/plugins/essential.py47
3 files changed, 50 insertions, 42 deletions
diff --git a/ATRI/exceptions.py b/ATRI/exceptions.py
index 4d97799..27ba426 100644
--- a/ATRI/exceptions.py
+++ b/ATRI/exceptions.py
@@ -45,7 +45,7 @@ def load_error(track_id: str) -> dict:
return json.loads(path.read_bytes())
-class BaseBotException(BaseException):
+class BaseBotException(Exception):
prompt: Optional[str] = "ignore"
def __init__(self, prompt: Optional[str]) -> None:
diff --git a/ATRI/plugins/__init__.py b/ATRI/plugins/__init__.py
new file mode 100644
index 0000000..6ca629c
--- /dev/null
+++ b/ATRI/plugins/__init__.py
@@ -0,0 +1,43 @@
+from ATRI.database import init_database, close_database_connection
+from ATRI.utils.check_update import CheckUpdate
+from ATRI.log import logger as log
+from ATRI.utils.apscheduler import scheduler
+import ATRI
+
+from time import sleep
+
+driver = ATRI.driver()
+
+
+async def startup():
+ await init_database()
+
+ log.info(f"Now running: {ATRI.__version__}")
+
+ log.info("Starting to check update...")
+ commit_info = await CheckUpdate.show_latest_commit_info()
+ if commit_info:
+ log.info(commit_info)
+
+ l_v, l_v_t = await CheckUpdate.show_latest_version()
+ if l_v and l_v_t:
+ if l_v != ATRI.__version__:
+ log.warning("新版本已发布, 请更新.")
+ log.warning(f"最新版本: {l_v} 更新时间: {l_v_t}")
+ sleep(3)
+
+ if not scheduler.running:
+ scheduler.start()
+ log.info("Scheduler Started.")
+
+ log.info("アトリは、高性能ですから!")
+
+
+async def shutdown():
+ await close_database_connection()
+
+ scheduler.shutdown(False)
+
+ log.info("Thanks for using.")
diff --git a/ATRI/plugins/essential.py b/ATRI/plugins/essential.py
index df1618e..0559cce 100644
--- a/ATRI/plugins/essential.py
+++ b/ATRI/plugins/essential.py
@@ -6,6 +6,7 @@ from datetime import datetime
from pydantic.main import BaseModel
from random import choice, randint
from pathlib import Path
+from typing import Union
import nonebot
from nonebot.permission import SUPERUSER
@@ -27,17 +28,15 @@ from nonebot.adapters.onebot.v11 import (
Message,
)
-import ATRI
+
from ATRI.service import Service
from ATRI.log import logger as log
from ATRI.config import BotSelfConfig
-from ATRI.database import init_database, close_database_connection
+
from ATRI.utils import MessageChecker
from ATRI.utils.apscheduler import scheduler
-from ATRI.utils.check_update import CheckUpdate
-driver = ATRI.driver()
bots = nonebot.get_bots()
@@ -49,40 +48,6 @@ MANEGE_DIR.mkdir(parents=True, exist_ok=True)
TEMP_PATH.mkdir(parents=True, exist_ok=True)
-async def startup():
- await init_database()
-
- log.info(f"Now running: {ATRI.__version__}")
-
- log.info("Starting to check update...")
- commit_info = await CheckUpdate.show_latest_commit_info()
- if commit_info:
- log.info(commit_info)
-
- l_v, l_v_t = await CheckUpdate.show_latest_version()
- if l_v and l_v_t:
- if l_v != ATRI.__version__:
- log.warning("新版本已发布, 请更新.")
- log.warning(f"最新版本: {l_v} 更新时间: {l_v_t}")
- sleep(3)
-
- if not scheduler.running:
- scheduler.start()
- log.info("Scheduler Started.")
-
- log.info("アトリは、高性能ですから!")
-
-
-async def shutdown():
- await close_database_connection()
-
- scheduler.shutdown(False)
-
- log.info("Thanks for using.")
-
-
@run_preprocessor
async def _check_block(event: MessageEvent):
user_file = "block_user.json"
@@ -312,7 +277,6 @@ async def _recall_group_event(bot: Bot, event: GroupRecallNoticeEvent):
m = repo
else:
return
-
msg = f"主人,咱拿到了一条撤回信息!\n{user}@[群:{group}]\n撤回了\n{m}"
for superuser in BotSelfConfig.superusers:
await bot.send_private_msg(user_id=int(superuser), message=Message(msg))
@@ -378,9 +342,10 @@ async def _clear_cache():
log.warning("清除缓存失败,请手动清除:data/temp")
-def recall_msg_dealer(msg: dict) -> str:
+def recall_msg_dealer(msg: Union[str, dict]) -> str:
+ if isinstance(msg, str):
+ return msg
temp_m = list()
-
for i in msg:
_type = i.get("type", "idk")
_data = i.get("data", "idk")