update 0.0.7.0

This commit is contained in:
HibiKier
2021-12-16 11:16:28 +08:00
parent b892617824
commit 2653f67193
141 changed files with 2693 additions and 547 deletions
+5 -1
View File
@@ -19,7 +19,11 @@ class StaticData:
if file.exists():
with open(file, "r", encoding="utf8") as f:
if file.name.endswith("json"):
self._data: dict = json.load(f)
try:
self._data: dict = json.load(f)
except ValueError:
if f.read().strip():
raise ValueError(f"{file} 文件加载错误,请检查文件内容格式.")
elif file.name.endswith("yaml"):
self._data = yaml.load(f)
+97 -24
View File
@@ -10,10 +10,14 @@ Config.add_plugin_config(
"group_manager", "DEFAULT_GROUP_LEVEL", 5, help_="默认群权限", default_value=5
)
Config.add_plugin_config(
"group_manager", "DEFAULT_GROUP_BOT_STATUS", True, help_="默认进群总开关状态", default_value=True
)
class GroupManager(StaticData):
"""
群权限 | 功能 | 聊天时间 管理器
群权限 | 功能 | 总开关 | 聊天时间 管理器
"""
def __init__(self, file: Path):
@@ -45,6 +49,41 @@ class GroupManager(StaticData):
"""
self._set_plugin_status(module, "unblock", group_id)
def turn_on_group_bot_status(self, group_id: int):
"""
说明:
开启群bot开关
参数:
:param group_id: 群号
"""
self._set_group_bot_status(group_id, True)
def shutdown_group_bot_status(self, group_id: int):
"""
说明:
关闭群bot开关
参数:
:param group_id: 群号
"""
self._set_group_bot_status(group_id, False)
def check_group_bot_status(self, group_id: int) -> bool:
"""
说明:
检查群聊bot总开关状态
参数:
:param group_id: 说明
"""
group_id = str(group_id)
if not self._data["group_manager"].get(group_id):
self._init_group(group_id)
if self._data["group_manager"][group_id].get("status") is None:
default_group_bot_status = Config.get_config("group_manager", "DEFAULT_GROUP_BOT_STATUS")
if default_group_bot_status:
default_group_bot_status = True
self._data["group_manager"][group_id]["status"] = default_group_bot_status
return self._data["group_manager"][group_id]["status"]
def set_group_level(self, group_id: int, level: int):
"""
说明:
@@ -125,8 +164,10 @@ class GroupManager(StaticData):
def delete_group(self, group_id: int):
"""
删除群配置
:param group_id: 群号
说明:
删除群配置
参数:
:param group_id: 群号
"""
if group_id in self._data["group_manager"]:
del self._data["group_manager"][str(group_id)]
@@ -136,25 +177,31 @@ class GroupManager(StaticData):
async def open_group_task(self, group_id: int, task: str):
"""
开启群被动技能
:param group_id: 群号
:param task: 被动技能名称
说明:
开启群被动技能
参数:
:param group_id: 群号
:param task: 被动技能名称
"""
await self._set_group_task_status(group_id, task, True)
async def close_group_task(self, group_id: int, task: str):
"""
关闭群被动技能
:param group_id: 群号
:param task: 被动技能名称
说明:
关闭群被动技能
参数:
:param group_id: 群号
:param task: 被动技能名称
"""
await self._set_group_task_status(group_id, task, False)
async def check_group_task_status(self, group_id: int, task: str) -> bool:
"""
查看群被动技能状态
:param group_id: 群号
:param task: 被动技能名称
说明:
查看群被动技能状态
参数:
:param group_id: 群号
:param task: 被动技能名称
"""
group_id = str(group_id)
if (
@@ -167,14 +214,17 @@ class GroupManager(StaticData):
def get_task_data(self) -> Dict[str, str]:
"""
获取所有被动任务
说明:
获取所有被动任务
"""
return self._task
async def group_task_status(self, group_id: int) -> str:
"""
查看群被全部动技能状态
:param group_id: 群号
说明:
查看群被全部动技能状态
参数:
:param group_id: 群号
"""
x = "[群被动技能]:\n"
group_id = str(group_id)
@@ -186,10 +236,12 @@ class GroupManager(StaticData):
async def _set_group_task_status(self, group_id: int, task: str, status: bool):
"""
管理群被动技能状态
:param group_id: 群号
:param task: 被动技能
:param status: 状态
说明:
管理群被动技能状态
参数:
:param group_id: 群号
:param task: 被动技能
:param status: 状态
"""
group_id = str(group_id)
if not self._data["group_manager"].get(group_id):
@@ -205,7 +257,8 @@ class GroupManager(StaticData):
async def init_group_task(self, group_id: Optional[Union[int, str]] = None):
"""
初始化群聊 被动技能 状态
说明:
初始化群聊 被动技能 状态
"""
if not self._task:
for matcher in get_matchers():
@@ -238,7 +291,8 @@ class GroupManager(StaticData):
):
self._data["group_manager"][group_id]["group_task_status"][
task
] = True
] = Config.get_config('_task', f'DEFAULT_{task}', default=True)
print(task, Config.get_config('_task', f'DEFAULT_{task}'))
for task in list(
self._data["group_manager"][group_id]["group_task_status"]
):
@@ -271,7 +325,7 @@ class GroupManager(StaticData):
else:
if module in self._data["group_manager"][group_id]["close_plugins"]:
self._data["group_manager"][group_id]["close_plugins"].remove(module)
self.save()
self.save()
def _init_group(self, group_id: str):
"""
@@ -281,18 +335,37 @@ class GroupManager(StaticData):
:param group_id: 群号
"""
default_group_level = Config.get_config("group_manager", "DEFAULT_GROUP_LEVEL")
if not default_group_level:
if default_group_level is None:
default_group_level = 5
default_group_bot_status = Config.get_config("group_manager", "DEFAULT_GROUP_BOT_STATUS")
if default_group_bot_status:
default_group_bot_status = True
if not self._data["group_manager"].get(group_id):
self._data["group_manager"][group_id] = {
"level": default_group_level,
"status": default_group_bot_status,
"close_plugins": [],
"group_task_status": {},
}
def _set_group_bot_status(self, group_id: Union[int, str], status: bool):
"""
说明:
设置群聊bot总开关
参数:
:param group_id: 群号
:param status: 开关状态
"""
group_id = str(group_id)
if not self._data["group_manager"].get(group_id):
self._init_group(group_id)
self._data["group_manager"][group_id]["status"] = status
self.save()
def get_super_old_data(self) -> Optional[dict]:
"""
获取旧数据,平时使用请不要调用
说明:
获取旧数据,平时使用请不要调用
"""
if self._data["super"].get("close_plugins"):
_x = self._data["super"].get("close_plugins")
+11 -11
View File
@@ -3,7 +3,7 @@ from nonebot.adapters.cqhttp import Bot
from nonebot.adapters.cqhttp.exception import ActionFailed
from services.log import logger
from typing import Optional
from utils.image_utils import CreateImg
from utils.image_utils import BuildImage
from utils.utils import get_user_avatar
from pathlib import Path
from io import BytesIO
@@ -128,27 +128,27 @@ class RequestManager(StaticData):
comment = data[id_]["comment"] if type_ == "private" else ""
from_ = data[id_]["from"]
sex = data[id_]["sex"]
ava = CreateImg(
ava = BuildImage(
80, 80, background=BytesIO(await get_user_avatar(data[id_]["id"]))
)
ava.circle()
age_bk = CreateImg(
age_bk = BuildImage(
len(str(age)) * 10 - 5,
15,
color="#04CAF7" if sex == "male" else "#F983C1",
)
age_bk.text((3, 1), f"{age}", fill=(255, 255, 255))
x = CreateImg(
x = BuildImage(
90, 32, font_size=15, color="#EEEFF4", font="HYWenHei-85W.ttf"
)
x.text((0, 0), "同意/拒绝", center_type="center")
x.circle_corner(10)
A = CreateImg(500, 100, font_size=24, font="msyh.ttf")
A = BuildImage(500, 100, font_size=24, font="msyh.ttf")
A.paste(ava, (15, 0), alpha=True, center_type="by_height")
A.text((120, 15), nickname)
A.paste(age_bk, (120, 50), True)
A.paste(
CreateImg(
BuildImage(
200,
0,
font_size=12,
@@ -160,7 +160,7 @@ class RequestManager(StaticData):
)
if type_ == "private":
A.paste(
CreateImg(
BuildImage(
200,
0,
font_size=12,
@@ -172,7 +172,7 @@ class RequestManager(StaticData):
)
else:
A.paste(
CreateImg(
BuildImage(
200,
0,
font_size=12,
@@ -184,7 +184,7 @@ class RequestManager(StaticData):
)
A.paste(x, (380, 35), True)
A.paste(
CreateImg(
BuildImage(
0,
0,
plain_text=f"id:{id_}",
@@ -195,10 +195,10 @@ class RequestManager(StaticData):
True,
)
img_list.append(A)
A = CreateImg(500, len(img_list) * 100, 500, 100)
A = BuildImage(500, len(img_list) * 100, 500, 100)
for img in img_list:
A.paste(img)
bk = CreateImg(A.w, A.h + 50, color="#F8F9FB", font_size=20)
bk = BuildImage(A.w, A.h + 50, color="#F8F9FB", font_size=20)
bk.paste(A, (0, 50))
bk.text(
(15, 13), "好友请求" if type_ == "private" else "群聊请求", fill=(140, 140, 143)
+4 -4
View File
@@ -69,11 +69,11 @@ class ResourcesManager(StaticData):
for module in self._data.keys():
for source_path in self._data[module].keys():
move_path = Path(self._data[module][source_path])
source_path = Path(source_path)
file_name = source_path.name
move_path = move_path / file_name
move_path.mkdir(exist_ok=True, parents=True)
try:
source_path = Path(source_path)
file_name = source_path.name
move_path = move_path / file_name
move_path.mkdir(exist_ok=True, parents=True)
if source_path.exists():
if move_path.exists():
shutil.rmtree(str(move_path.absolute()), ignore_errors=True)