🐛 私聊时修改插件时删除私聊帮助

This commit is contained in:
HibiKier 2024-09-07 13:16:41 +08:00
parent 0a5ab83ffe
commit 807b2f6504
2 changed files with 101 additions and 100 deletions

View File

@ -1,16 +1,16 @@
from nonebot.adapters import Bot
from nonebot.plugin import PluginMetadata
from nonebot_plugin_alconna import AlconnaQuery, Arparma, Match, Query
from nonebot_plugin_session import EventSession
from nonebot_plugin_alconna import Match, Query, Arparma, AlconnaQuery
from zhenxun.configs.config import Config
from zhenxun.configs.utils import PluginExtraData, RegisterConfig
from zhenxun.services.log import logger
from zhenxun.utils.enum import BlockType, PluginType
from zhenxun.configs.config import Config
from zhenxun.utils.message import MessageUtils
from zhenxun.utils.enum import BlockType, PluginType
from zhenxun.configs.utils import RegisterConfig, PluginExtraData
from ._data_source import PluginManage, build_plugin, build_task
from .command import _group_status_matcher, _status_matcher
from .command import _status_matcher, _group_status_matcher
from ._data_source import PluginManage, build_task, build_plugin, delete_help_image
base_config = Config.get("plugin_switch")
@ -40,7 +40,6 @@ __plugin_meta__ = PluginMetadata(
version="0.1",
plugin_type=PluginType.SUPER_AND_ADMIN,
superuser_help="""
超级管理员额外命令
格式:
插件列表
开启/关闭[功能名称] ?[-t ["private", "p", "group", "g"](关闭类型)] ?[-g 群组Id]
@ -117,8 +116,7 @@ async def _(
if not all.result and not plugin_name.available:
await MessageUtils.build_message("请输入功能名称").finish(reply_to=True)
name = plugin_name.result
gid = session.id3 or session.id2
if gid:
if gid := session.id3 or session.id2:
"""修改当前群组的数据"""
if task.result:
if all.result:
@ -129,8 +127,7 @@ async def _(
logger.info(
f"开启群组被动 {name}", arparma.header_result, session=session
)
else:
if session.id1 in bot.config.superusers and default_status.result:
elif session.id1 in bot.config.superusers and default_status.result:
"""单个插件的进群默认修改"""
result = await PluginManage.set_default_status(name, True)
logger.info(
@ -138,8 +135,7 @@ async def _(
arparma.header_result,
session=session,
)
else:
if all.result:
elif all.result:
"""所有插件"""
result = await PluginManage.set_all_plugin_status(
True, default_status.result, gid
@ -151,9 +147,8 @@ async def _(
)
else:
result = await PluginManage.unblock_group_plugin(name, gid)
logger.info(
f"开启功能 {name}", arparma.header_result, session=session
)
logger.info(f"开启功能 {name}", arparma.header_result, session=session)
delete_help_image(gid)
await MessageUtils.build_message(result).finish(reply_to=True)
elif session.id1 in bot.config.superusers:
"""私聊"""
@ -170,7 +165,8 @@ async def _(
True, default_status.result, group_id
)
logger.info(
f"超级用户开启全部功能全局开关 {f'指定群组: {group_id}' if group_id else ''}",
"超级用户开启全部功能全局开关"
f" {f'指定群组: {group_id}' if group_id else ''}",
arparma.header_result,
session=session,
)
@ -204,7 +200,6 @@ async def _(
arparma.header_result,
session=session,
)
await MessageUtils.build_message(result).finish(reply_to=True)
else:
result = await PluginManage.superuser_unblock(name, None, group_id)
logger.info(
@ -213,6 +208,7 @@ async def _(
session=session,
target=group_id,
)
delete_help_image()
await MessageUtils.build_message(result).finish(reply_to=True)
@ -231,20 +227,18 @@ async def _(
if not all.result and not plugin_name.available:
await MessageUtils.build_message("请输入功能名称").finish(reply_to=True)
name = plugin_name.result
gid = session.id3 or session.id2
if gid:
if gid := session.id3 or session.id2:
"""修改当前群组的数据"""
if task.result:
if all.result:
result = await PluginManage.block_group_all_task(gid)
logger.info(f"开启所有群组被动", arparma.header_result, session=session)
logger.info("开启所有群组被动", arparma.header_result, session=session)
else:
result = await PluginManage.block_group_task(name, gid)
logger.info(
f"关闭群组被动 {name}", arparma.header_result, session=session
)
else:
if session.id1 in bot.config.superusers and default_status.result:
elif session.id1 in bot.config.superusers and default_status.result:
"""单个插件的进群默认修改"""
result = await PluginManage.set_default_status(name, False)
logger.info(
@ -252,22 +246,16 @@ async def _(
arparma.header_result,
session=session,
)
else:
if all.result:
elif all.result:
"""所有插件"""
result = await PluginManage.set_all_plugin_status(
False, default_status.result, gid
)
logger.info(
f"关闭群组中全部功能",
arparma.header_result,
session=session,
)
logger.info("关闭群组中全部功能", arparma.header_result, session=session)
else:
result = await PluginManage.block_group_plugin(name, gid)
logger.info(
f"关闭功能 {name}", arparma.header_result, session=session
)
logger.info(f"关闭功能 {name}", arparma.header_result, session=session)
delete_help_image(gid)
await MessageUtils.build_message(result).finish(reply_to=True)
elif session.id1 in bot.config.superusers:
group_id = group.result if group.available else None
@ -283,7 +271,8 @@ async def _(
False, default_status.result, group_id
)
logger.info(
f"超级用户关闭全部功能全局开关 {f'指定群组: {group_id}' if group_id else ''}",
"超级用户关闭全部功能全局开关"
f" {f'指定群组: {group_id}' if group_id else ''}",
arparma.header_result,
session=session,
)
@ -317,13 +306,13 @@ async def _(
arparma.header_result,
session=session,
)
await MessageUtils.build_message(result).finish(reply_to=True)
else:
_type = BlockType.ALL
if block_type.available:
if block_type.result in ["p", "private"]:
if block_type.available:
_type = BlockType.PRIVATE
elif block_type.result in ["g", "group"]:
if block_type.available:
_type = BlockType.GROUP
result = await PluginManage.superuser_block(name, _type, group_id)
logger.info(
@ -332,6 +321,7 @@ async def _(
session=session,
target=group_id,
)
delete_help_image()
await MessageUtils.build_message(result).finish(reply_to=True)
@ -362,11 +352,7 @@ async def _(
):
image = await build_task(session.id3 or session.id2)
if image:
logger.info(
f"查看群被动列表",
arparma.header_result,
session=session,
)
logger.info("查看群被动列表", arparma.header_result, session=session)
await MessageUtils.build_message(image).finish(reply_to=True)
else:
await MessageUtils.build_message("获取群被动任务失败...").finish(reply_to=True)

View File

@ -3,8 +3,23 @@ from zhenxun.models.plugin_info import PluginInfo
from zhenxun.utils.enum import BlockType, PluginType
from zhenxun.models.group_console import GroupConsole
from zhenxun.utils.exception import GroupInfoNotFound
from zhenxun.configs.path_config import DATA_PATH, IMAGE_PATH
from zhenxun.utils.image_utils import RowStyle, BuildImage, ImageTemplate
HELP_FILE = IMAGE_PATH / "SIMPLE_HELP.png"
GROUP_HELP_PATH = DATA_PATH / "group_help"
def delete_help_image(gid: str | None = None):
"""删除帮助图片"""
if gid:
file = GROUP_HELP_PATH / f"{gid}.png"
if file.exists():
file.unlink()
elif HELP_FILE.exists():
HELP_FILE.unlink()
def plugin_row_style(column: str, text: str) -> RowStyle:
"""被动技能文本风格
@ -421,7 +436,7 @@ class PluginManage:
if status:
group.block_task += f"{task.module},"
elif f"super:{task.module}," in group.block_task:
return f"{status_str} {task_name} 被动技能失败,当前群组该被动已被管理员禁用"
return f"{status_str} {task_name} 被动技能失败,当前群组该被动已被管理员禁用" # noqa: E501
else:
group.block_task = group.block_task.replace(f"{task.module},", "")
await group.save(update_fields=["block_task"])