mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-10-01 17:49:58 +08:00
update 0.0.7.0
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user