zhenxun_bot/basic_plugins/hooks/task_hook.py

47 lines
1.6 KiB
Python
Raw Normal View History

2023-03-19 21:05:34 +08:00
import re
from typing import Any, Dict
2023-05-28 22:57:18 +08:00
from nonebot.adapters.onebot.v11 import Bot, Message, unescape
2023-03-19 21:05:34 +08:00
from nonebot.exception import MockApiException
2022-12-26 18:40:34 +08:00
from services.log import logger
2023-03-19 21:05:34 +08:00
from utils.manager import group_manager
2022-02-19 18:20:19 +08:00
@Bot.on_calling_api
2022-07-31 17:30:29 +08:00
async def _(bot: Bot, api: str, data: Dict[str, Any]):
2022-02-19 18:20:19 +08:00
r = None
2022-12-26 19:11:52 +08:00
task = None
group_id = None
2022-12-26 18:40:34 +08:00
try:
if (
2023-05-29 21:33:53 +08:00
api == "send_msg" and data.get("message_type") == "group"
) or api == "send_group_msg":
msg = unescape(
data["message"].strip()
if isinstance(data["message"], str)
else str(data["message"]["text"]).strip()
2022-03-03 00:18:59 +08:00
)
2023-05-29 21:33:53 +08:00
if r := re.search(
"^\[\[_task\|(.*)]]",
2023-05-30 20:55:46 +08:00
msg,
2023-05-29 21:33:53 +08:00
):
if r.group(1) in group_manager.get_task_data().keys():
task = r.group(1)
group_id = data["group_id"]
2022-12-26 19:11:52 +08:00
except Exception as e:
2023-03-19 21:05:34 +08:00
logger.error(f"TaskHook ERROR", "HOOK", e=e)
2022-12-26 19:11:52 +08:00
else:
if task and group_id:
2023-03-19 21:05:34 +08:00
if group_manager.get_group_level(
group_id
) < 0 or not group_manager.check_task_status(task, group_id):
logger.debug(f"被动技能 {task} 处于关闭状态")
2022-12-26 18:40:34 +08:00
raise MockApiException(f"被动技能 {task} 处于关闭状态...")
else:
msg = str(data["message"]).strip()
msg = msg.replace(f"&#91;&#91;_task|{task}&#93;&#93;", "").replace(
f"[[_task|{task}]]", ""
)
data["message"] = Message(msg)