mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-15 14:22:55 +08:00
🐛 私聊时修改插件时删除私聊帮助
This commit is contained in:
parent
0a5ab83ffe
commit
807b2f6504
@ -1,16 +1,16 @@
|
|||||||
from nonebot.adapters import Bot
|
from nonebot.adapters import Bot
|
||||||
from nonebot.plugin import PluginMetadata
|
from nonebot.plugin import PluginMetadata
|
||||||
from nonebot_plugin_alconna import AlconnaQuery, Arparma, Match, Query
|
|
||||||
from nonebot_plugin_session import EventSession
|
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.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.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 _status_matcher, _group_status_matcher
|
||||||
from .command import _group_status_matcher, _status_matcher
|
from ._data_source import PluginManage, build_task, build_plugin, delete_help_image
|
||||||
|
|
||||||
base_config = Config.get("plugin_switch")
|
base_config = Config.get("plugin_switch")
|
||||||
|
|
||||||
@ -40,36 +40,35 @@ __plugin_meta__ = PluginMetadata(
|
|||||||
version="0.1",
|
version="0.1",
|
||||||
plugin_type=PluginType.SUPER_AND_ADMIN,
|
plugin_type=PluginType.SUPER_AND_ADMIN,
|
||||||
superuser_help="""
|
superuser_help="""
|
||||||
超级管理员额外命令
|
格式:
|
||||||
格式:
|
插件列表
|
||||||
插件列表
|
开启/关闭[功能名称] ?[-t ["private", "p", "group", "g"](关闭类型)] ?[-g 群组Id]
|
||||||
开启/关闭[功能名称] ?[-t ["private", "p", "group", "g"](关闭类型)] ?[-g 群组Id]
|
|
||||||
|
|
||||||
开启/关闭插件df[功能名称]: 开启/关闭指定插件进群默认状态
|
开启/关闭插件df[功能名称]: 开启/关闭指定插件进群默认状态
|
||||||
开启/关闭所有插件df: 开启/关闭所有插件进群默认状态
|
开启/关闭所有插件df: 开启/关闭所有插件进群默认状态
|
||||||
开启/关闭所有插件:
|
开启/关闭所有插件:
|
||||||
私聊中: 开启/关闭所有插件全局状态
|
私聊中: 开启/关闭所有插件全局状态
|
||||||
群组中: 开启/关闭当前群组所有插件状态
|
群组中: 开启/关闭当前群组所有插件状态
|
||||||
|
|
||||||
开启/关闭群被动[name] ?[-g [group_id]]
|
开启/关闭群被动[name] ?[-g [group_id]]
|
||||||
私聊中: 开启/关闭全局指定的被动状态
|
私聊中: 开启/关闭全局指定的被动状态
|
||||||
群组中: 开启/关闭当前群组指定的被动状态
|
群组中: 开启/关闭当前群组指定的被动状态
|
||||||
示例:
|
示例:
|
||||||
关闭群被动早晚安
|
关闭群被动早晚安
|
||||||
关闭群被动早晚安 -g 12355555
|
关闭群被动早晚安 -g 12355555
|
||||||
|
|
||||||
开启/关闭所有群被动 ?[-g [group_id]]
|
开启/关闭所有群被动 ?[-g [group_id]]
|
||||||
私聊中: 开启/关闭全局或指定群组被动状态
|
私聊中: 开启/关闭全局或指定群组被动状态
|
||||||
示例:
|
示例:
|
||||||
开启所有群被动: 开启全局所有被动
|
开启所有群被动: 开启全局所有被动
|
||||||
开启所有群被动 -g 12345678: 开启群组12345678所有被动
|
开启所有群被动 -g 12345678: 开启群组12345678所有被动
|
||||||
|
|
||||||
私聊下:
|
私聊下:
|
||||||
示例:
|
示例:
|
||||||
开启签到 : 全局开启签到
|
开启签到 : 全局开启签到
|
||||||
关闭签到 : 全局关闭签到
|
关闭签到 : 全局关闭签到
|
||||||
关闭签到 p : 全局私聊关闭签到
|
关闭签到 p : 全局私聊关闭签到
|
||||||
关闭签到 -g 12345678 : 关闭群组12345678的签到功能(普通管理员无法开启)
|
关闭签到 -g 12345678 : 关闭群组12345678的签到功能(普通管理员无法开启)
|
||||||
""",
|
""",
|
||||||
admin_level=base_config.get("CHANGE_GROUP_SWITCH_LEVEL", 2),
|
admin_level=base_config.get("CHANGE_GROUP_SWITCH_LEVEL", 2),
|
||||||
configs=[
|
configs=[
|
||||||
@ -117,8 +116,7 @@ async def _(
|
|||||||
if not all.result and not plugin_name.available:
|
if not all.result and not plugin_name.available:
|
||||||
await MessageUtils.build_message("请输入功能名称").finish(reply_to=True)
|
await MessageUtils.build_message("请输入功能名称").finish(reply_to=True)
|
||||||
name = plugin_name.result
|
name = plugin_name.result
|
||||||
gid = session.id3 or session.id2
|
if gid := session.id3 or session.id2:
|
||||||
if gid:
|
|
||||||
"""修改当前群组的数据"""
|
"""修改当前群组的数据"""
|
||||||
if task.result:
|
if task.result:
|
||||||
if all.result:
|
if all.result:
|
||||||
@ -129,31 +127,28 @@ async def _(
|
|||||||
logger.info(
|
logger.info(
|
||||||
f"开启群组被动 {name}", arparma.header_result, session=session
|
f"开启群组被动 {name}", arparma.header_result, session=session
|
||||||
)
|
)
|
||||||
|
elif session.id1 in bot.config.superusers and default_status.result:
|
||||||
|
"""单个插件的进群默认修改"""
|
||||||
|
result = await PluginManage.set_default_status(name, True)
|
||||||
|
logger.info(
|
||||||
|
f"超级用户开启 {name} 功能进群默认开关",
|
||||||
|
arparma.header_result,
|
||||||
|
session=session,
|
||||||
|
)
|
||||||
|
elif all.result:
|
||||||
|
"""所有插件"""
|
||||||
|
result = await PluginManage.set_all_plugin_status(
|
||||||
|
True, default_status.result, gid
|
||||||
|
)
|
||||||
|
logger.info(
|
||||||
|
"开启群组中全部功能",
|
||||||
|
arparma.header_result,
|
||||||
|
session=session,
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
if session.id1 in bot.config.superusers and default_status.result:
|
result = await PluginManage.unblock_group_plugin(name, gid)
|
||||||
"""单个插件的进群默认修改"""
|
logger.info(f"开启功能 {name}", arparma.header_result, session=session)
|
||||||
result = await PluginManage.set_default_status(name, True)
|
delete_help_image(gid)
|
||||||
logger.info(
|
|
||||||
f"超级用户开启 {name} 功能进群默认开关",
|
|
||||||
arparma.header_result,
|
|
||||||
session=session,
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
if all.result:
|
|
||||||
"""所有插件"""
|
|
||||||
result = await PluginManage.set_all_plugin_status(
|
|
||||||
True, default_status.result, gid
|
|
||||||
)
|
|
||||||
logger.info(
|
|
||||||
"开启群组中全部功能",
|
|
||||||
arparma.header_result,
|
|
||||||
session=session,
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
result = await PluginManage.unblock_group_plugin(name, gid)
|
|
||||||
logger.info(
|
|
||||||
f"开启功能 {name}", arparma.header_result, session=session
|
|
||||||
)
|
|
||||||
await MessageUtils.build_message(result).finish(reply_to=True)
|
await MessageUtils.build_message(result).finish(reply_to=True)
|
||||||
elif session.id1 in bot.config.superusers:
|
elif session.id1 in bot.config.superusers:
|
||||||
"""私聊"""
|
"""私聊"""
|
||||||
@ -170,7 +165,8 @@ async def _(
|
|||||||
True, default_status.result, group_id
|
True, default_status.result, group_id
|
||||||
)
|
)
|
||||||
logger.info(
|
logger.info(
|
||||||
f"超级用户开启全部功能全局开关 {f'指定群组: {group_id}' if group_id else ''}",
|
"超级用户开启全部功能全局开关"
|
||||||
|
f" {f'指定群组: {group_id}' if group_id else ''}",
|
||||||
arparma.header_result,
|
arparma.header_result,
|
||||||
session=session,
|
session=session,
|
||||||
)
|
)
|
||||||
@ -204,7 +200,6 @@ async def _(
|
|||||||
arparma.header_result,
|
arparma.header_result,
|
||||||
session=session,
|
session=session,
|
||||||
)
|
)
|
||||||
await MessageUtils.build_message(result).finish(reply_to=True)
|
|
||||||
else:
|
else:
|
||||||
result = await PluginManage.superuser_unblock(name, None, group_id)
|
result = await PluginManage.superuser_unblock(name, None, group_id)
|
||||||
logger.info(
|
logger.info(
|
||||||
@ -213,7 +208,8 @@ async def _(
|
|||||||
session=session,
|
session=session,
|
||||||
target=group_id,
|
target=group_id,
|
||||||
)
|
)
|
||||||
await MessageUtils.build_message(result).finish(reply_to=True)
|
delete_help_image()
|
||||||
|
await MessageUtils.build_message(result).finish(reply_to=True)
|
||||||
|
|
||||||
|
|
||||||
@_status_matcher.assign("close")
|
@_status_matcher.assign("close")
|
||||||
@ -231,43 +227,35 @@ async def _(
|
|||||||
if not all.result and not plugin_name.available:
|
if not all.result and not plugin_name.available:
|
||||||
await MessageUtils.build_message("请输入功能名称").finish(reply_to=True)
|
await MessageUtils.build_message("请输入功能名称").finish(reply_to=True)
|
||||||
name = plugin_name.result
|
name = plugin_name.result
|
||||||
gid = session.id3 or session.id2
|
if gid := session.id3 or session.id2:
|
||||||
if gid:
|
|
||||||
"""修改当前群组的数据"""
|
"""修改当前群组的数据"""
|
||||||
if task.result:
|
if task.result:
|
||||||
if all.result:
|
if all.result:
|
||||||
result = await PluginManage.block_group_all_task(gid)
|
result = await PluginManage.block_group_all_task(gid)
|
||||||
logger.info(f"开启所有群组被动", arparma.header_result, session=session)
|
logger.info("开启所有群组被动", arparma.header_result, session=session)
|
||||||
else:
|
else:
|
||||||
result = await PluginManage.block_group_task(name, gid)
|
result = await PluginManage.block_group_task(name, gid)
|
||||||
logger.info(
|
logger.info(
|
||||||
f"关闭群组被动 {name}", arparma.header_result, session=session
|
f"关闭群组被动 {name}", arparma.header_result, session=session
|
||||||
)
|
)
|
||||||
|
elif session.id1 in bot.config.superusers and default_status.result:
|
||||||
|
"""单个插件的进群默认修改"""
|
||||||
|
result = await PluginManage.set_default_status(name, False)
|
||||||
|
logger.info(
|
||||||
|
f"超级用户开启 {name} 功能进群默认开关",
|
||||||
|
arparma.header_result,
|
||||||
|
session=session,
|
||||||
|
)
|
||||||
|
elif all.result:
|
||||||
|
"""所有插件"""
|
||||||
|
result = await PluginManage.set_all_plugin_status(
|
||||||
|
False, default_status.result, gid
|
||||||
|
)
|
||||||
|
logger.info("关闭群组中全部功能", arparma.header_result, session=session)
|
||||||
else:
|
else:
|
||||||
if session.id1 in bot.config.superusers and default_status.result:
|
result = await PluginManage.block_group_plugin(name, gid)
|
||||||
"""单个插件的进群默认修改"""
|
logger.info(f"关闭功能 {name}", arparma.header_result, session=session)
|
||||||
result = await PluginManage.set_default_status(name, False)
|
delete_help_image(gid)
|
||||||
logger.info(
|
|
||||||
f"超级用户开启 {name} 功能进群默认开关",
|
|
||||||
arparma.header_result,
|
|
||||||
session=session,
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
if all.result:
|
|
||||||
"""所有插件"""
|
|
||||||
result = await PluginManage.set_all_plugin_status(
|
|
||||||
False, default_status.result, gid
|
|
||||||
)
|
|
||||||
logger.info(
|
|
||||||
f"关闭群组中全部功能",
|
|
||||||
arparma.header_result,
|
|
||||||
session=session,
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
result = await PluginManage.block_group_plugin(name, gid)
|
|
||||||
logger.info(
|
|
||||||
f"关闭功能 {name}", arparma.header_result, session=session
|
|
||||||
)
|
|
||||||
await MessageUtils.build_message(result).finish(reply_to=True)
|
await MessageUtils.build_message(result).finish(reply_to=True)
|
||||||
elif session.id1 in bot.config.superusers:
|
elif session.id1 in bot.config.superusers:
|
||||||
group_id = group.result if group.available else None
|
group_id = group.result if group.available else None
|
||||||
@ -283,7 +271,8 @@ async def _(
|
|||||||
False, default_status.result, group_id
|
False, default_status.result, group_id
|
||||||
)
|
)
|
||||||
logger.info(
|
logger.info(
|
||||||
f"超级用户关闭全部功能全局开关 {f'指定群组: {group_id}' if group_id else ''}",
|
"超级用户关闭全部功能全局开关"
|
||||||
|
f" {f'指定群组: {group_id}' if group_id else ''}",
|
||||||
arparma.header_result,
|
arparma.header_result,
|
||||||
session=session,
|
session=session,
|
||||||
)
|
)
|
||||||
@ -317,13 +306,13 @@ async def _(
|
|||||||
arparma.header_result,
|
arparma.header_result,
|
||||||
session=session,
|
session=session,
|
||||||
)
|
)
|
||||||
await MessageUtils.build_message(result).finish(reply_to=True)
|
|
||||||
else:
|
else:
|
||||||
_type = BlockType.ALL
|
_type = BlockType.ALL
|
||||||
if block_type.available:
|
if block_type.result in ["p", "private"]:
|
||||||
if block_type.result in ["p", "private"]:
|
if block_type.available:
|
||||||
_type = BlockType.PRIVATE
|
_type = BlockType.PRIVATE
|
||||||
elif block_type.result in ["g", "group"]:
|
elif block_type.result in ["g", "group"]:
|
||||||
|
if block_type.available:
|
||||||
_type = BlockType.GROUP
|
_type = BlockType.GROUP
|
||||||
result = await PluginManage.superuser_block(name, _type, group_id)
|
result = await PluginManage.superuser_block(name, _type, group_id)
|
||||||
logger.info(
|
logger.info(
|
||||||
@ -332,7 +321,8 @@ async def _(
|
|||||||
session=session,
|
session=session,
|
||||||
target=group_id,
|
target=group_id,
|
||||||
)
|
)
|
||||||
await MessageUtils.build_message(result).finish(reply_to=True)
|
delete_help_image()
|
||||||
|
await MessageUtils.build_message(result).finish(reply_to=True)
|
||||||
|
|
||||||
|
|
||||||
@_group_status_matcher.handle()
|
@_group_status_matcher.handle()
|
||||||
@ -362,11 +352,7 @@ async def _(
|
|||||||
):
|
):
|
||||||
image = await build_task(session.id3 or session.id2)
|
image = await build_task(session.id3 or session.id2)
|
||||||
if image:
|
if image:
|
||||||
logger.info(
|
logger.info("查看群被动列表", arparma.header_result, session=session)
|
||||||
f"查看群被动列表",
|
|
||||||
arparma.header_result,
|
|
||||||
session=session,
|
|
||||||
)
|
|
||||||
await MessageUtils.build_message(image).finish(reply_to=True)
|
await MessageUtils.build_message(image).finish(reply_to=True)
|
||||||
else:
|
else:
|
||||||
await MessageUtils.build_message("获取群被动任务失败...").finish(reply_to=True)
|
await MessageUtils.build_message("获取群被动任务失败...").finish(reply_to=True)
|
||||||
|
|||||||
@ -3,8 +3,23 @@ from zhenxun.models.plugin_info import PluginInfo
|
|||||||
from zhenxun.utils.enum import BlockType, PluginType
|
from zhenxun.utils.enum import BlockType, PluginType
|
||||||
from zhenxun.models.group_console import GroupConsole
|
from zhenxun.models.group_console import GroupConsole
|
||||||
from zhenxun.utils.exception import GroupInfoNotFound
|
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
|
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:
|
def plugin_row_style(column: str, text: str) -> RowStyle:
|
||||||
"""被动技能文本风格
|
"""被动技能文本风格
|
||||||
@ -421,7 +436,7 @@ class PluginManage:
|
|||||||
if status:
|
if status:
|
||||||
group.block_task += f"{task.module},"
|
group.block_task += f"{task.module},"
|
||||||
elif f"super:{task.module}," in group.block_task:
|
elif f"super:{task.module}," in group.block_task:
|
||||||
return f"{status_str} {task_name} 被动技能失败,当前群组该被动已被管理员禁用"
|
return f"{status_str} {task_name} 被动技能失败,当前群组该被动已被管理员禁用" # noqa: E501
|
||||||
else:
|
else:
|
||||||
group.block_task = group.block_task.replace(f"{task.module},", "")
|
group.block_task = group.block_task.replace(f"{task.module},", "")
|
||||||
await group.save(update_fields=["block_task"])
|
await group.save(update_fields=["block_task"])
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user