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
45ad5d8e4e
commit
e07851aecf
@ -51,6 +51,19 @@ __plugin_meta__ = PluginMetadata(
|
|||||||
私聊中: 开启/关闭所有插件全局状态
|
私聊中: 开启/关闭所有插件全局状态
|
||||||
群组中: 开启/关闭当前群组所有插件状态
|
群组中: 开启/关闭当前群组所有插件状态
|
||||||
|
|
||||||
|
开启/关闭群被动[name] ?[-g [group_id]]
|
||||||
|
私聊中: 开启/关闭全局指定的被动状态
|
||||||
|
群组中: 开启/关闭当前群组指定的被动状态
|
||||||
|
示例:
|
||||||
|
关闭群被动早晚安
|
||||||
|
关闭群被动早晚安 -g 12355555
|
||||||
|
|
||||||
|
开启/关闭所有群被动 -[g ?[group_id]]
|
||||||
|
私聊中: 开启/关闭全局或指定群组被动状态
|
||||||
|
示例:
|
||||||
|
开启所有群被动: 开启全局所有被动
|
||||||
|
开启所有群被动 -g 12345678: 开启群组12345678所有被动
|
||||||
|
|
||||||
私聊下:
|
私聊下:
|
||||||
示例:
|
示例:
|
||||||
开启签到 : 全局开启签到
|
开启签到 : 全局开启签到
|
||||||
@ -106,7 +119,7 @@ async def _(
|
|||||||
name = plugin_name.result
|
name = plugin_name.result
|
||||||
gid = session.id3 or session.id2
|
gid = session.id3 or session.id2
|
||||||
if gid:
|
if gid:
|
||||||
"""群组中使用命令"""
|
"""修改当前群组的数据"""
|
||||||
if task.result:
|
if task.result:
|
||||||
if all.result:
|
if all.result:
|
||||||
result = await PluginManage.unblock_group_all_task(gid)
|
result = await PluginManage.unblock_group_all_task(gid)
|
||||||
@ -137,7 +150,7 @@ async def _(
|
|||||||
session=session,
|
session=session,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
result = await PluginManage.block_group_plugin(name, gid)
|
result = await PluginManage.unblock_group_plugin(name, gid)
|
||||||
logger.info(
|
logger.info(
|
||||||
f"开启功能 {name}", arparma.header_result, session=session
|
f"开启功能 {name}", arparma.header_result, session=session
|
||||||
)
|
)
|
||||||
@ -146,14 +159,21 @@ async def _(
|
|||||||
"""私聊"""
|
"""私聊"""
|
||||||
group_id = group.result if group.available else None
|
group_id = group.result if group.available else None
|
||||||
if all.result:
|
if all.result:
|
||||||
result = await PluginManage.set_all_plugin_status(
|
if task.result:
|
||||||
True, default_status.result, group_id
|
"""关闭全局或指定群全部被动"""
|
||||||
)
|
if group_id:
|
||||||
logger.info(
|
result = await PluginManage.unblock_group_all_task(group_id)
|
||||||
f"超级用户开启全部功能全局开关 {f'指定群组: {group_id}' if group_id else ''}",
|
else:
|
||||||
arparma.header_result,
|
result = await PluginManage.unblock_global_all_task()
|
||||||
session=session,
|
else:
|
||||||
)
|
result = await PluginManage.set_all_plugin_status(
|
||||||
|
True, default_status.result, group_id
|
||||||
|
)
|
||||||
|
logger.info(
|
||||||
|
f"超级用户开启全部功能全局开关 {f'指定群组: {group_id}' if group_id else ''}",
|
||||||
|
arparma.header_result,
|
||||||
|
session=session,
|
||||||
|
)
|
||||||
await Text(result).finish(reply=True)
|
await Text(result).finish(reply=True)
|
||||||
if default_status.result:
|
if default_status.result:
|
||||||
result = await PluginManage.set_default_status(name, True)
|
result = await PluginManage.set_default_status(name, True)
|
||||||
@ -165,13 +185,25 @@ async def _(
|
|||||||
)
|
)
|
||||||
await Text(result).finish(reply=True)
|
await Text(result).finish(reply=True)
|
||||||
if task.result:
|
if task.result:
|
||||||
result = await PluginManage.superuser_task_handle(name, group_id, True)
|
split_list = name.split()
|
||||||
logger.info(
|
if len(split_list) > 1:
|
||||||
f"超级用户开启被动技能 {name}",
|
name = split_list[0]
|
||||||
arparma.header_result,
|
group_id = split_list[1]
|
||||||
session=session,
|
if group_id:
|
||||||
target=group_id,
|
result = await PluginManage.superuser_task_handle(name, group_id, True)
|
||||||
)
|
logger.info(
|
||||||
|
f"超级用户开启被动技能 {name}",
|
||||||
|
arparma.header_result,
|
||||||
|
session=session,
|
||||||
|
target=group_id,
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
result = await PluginManage.unblock_global_task(name)
|
||||||
|
logger.info(
|
||||||
|
f"超级用户开启全局被动技能 {name}",
|
||||||
|
arparma.header_result,
|
||||||
|
session=session,
|
||||||
|
)
|
||||||
await Text(result).finish(reply=True)
|
await Text(result).finish(reply=True)
|
||||||
else:
|
else:
|
||||||
result = await PluginManage.superuser_block(name, None, group_id)
|
result = await PluginManage.superuser_block(name, None, group_id)
|
||||||
@ -201,6 +233,7 @@ async def _(
|
|||||||
name = plugin_name.result
|
name = plugin_name.result
|
||||||
gid = session.id3 or session.id2
|
gid = session.id3 or session.id2
|
||||||
if gid:
|
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)
|
||||||
@ -231,7 +264,7 @@ async def _(
|
|||||||
session=session,
|
session=session,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
result = await PluginManage.unblock_group_plugin(name, gid)
|
result = await PluginManage.block_group_plugin(name, gid)
|
||||||
logger.info(
|
logger.info(
|
||||||
f"关闭功能 {name}", arparma.header_result, session=session
|
f"关闭功能 {name}", arparma.header_result, session=session
|
||||||
)
|
)
|
||||||
@ -239,14 +272,21 @@ async def _(
|
|||||||
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
|
||||||
if all.result:
|
if all.result:
|
||||||
result = await PluginManage.set_all_plugin_status(
|
if task.result:
|
||||||
False, default_status.result, group_id
|
"""关闭全局或指定群全部被动"""
|
||||||
)
|
if group_id:
|
||||||
logger.info(
|
result = await PluginManage.block_group_all_task(group_id)
|
||||||
f"超级用户关闭全部功能全局开关 {f'指定群组: {group_id}' if group_id else ''}",
|
else:
|
||||||
arparma.header_result,
|
result = await PluginManage.block_global_all_task()
|
||||||
session=session,
|
else:
|
||||||
)
|
result = await PluginManage.set_all_plugin_status(
|
||||||
|
False, default_status.result, group_id
|
||||||
|
)
|
||||||
|
logger.info(
|
||||||
|
f"超级用户关闭全部功能全局开关 {f'指定群组: {group_id}' if group_id else ''}",
|
||||||
|
arparma.header_result,
|
||||||
|
session=session,
|
||||||
|
)
|
||||||
await Text(result).finish(reply=True)
|
await Text(result).finish(reply=True)
|
||||||
if default_status.result:
|
if default_status.result:
|
||||||
result = await PluginManage.set_default_status(name, False)
|
result = await PluginManage.set_default_status(name, False)
|
||||||
@ -258,13 +298,25 @@ async def _(
|
|||||||
)
|
)
|
||||||
await Text(result).finish(reply=True)
|
await Text(result).finish(reply=True)
|
||||||
if task.result:
|
if task.result:
|
||||||
result = await PluginManage.superuser_task_handle(name, group_id, False)
|
split_list = name.split()
|
||||||
logger.info(
|
if len(split_list) > 1:
|
||||||
f"超级用户关闭被动技能 {name}",
|
name = split_list[0]
|
||||||
arparma.header_result,
|
group_id = split_list[1]
|
||||||
session=session,
|
if group_id:
|
||||||
target=group_id,
|
result = await PluginManage.superuser_task_handle(name, group_id, False)
|
||||||
)
|
logger.info(
|
||||||
|
f"超级用户关闭被动技能 {name}",
|
||||||
|
arparma.header_result,
|
||||||
|
session=session,
|
||||||
|
target=group_id,
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
result = await PluginManage.block_global_task(name)
|
||||||
|
logger.info(
|
||||||
|
f"超级用户关闭全局被动技能 {name}",
|
||||||
|
arparma.header_result,
|
||||||
|
session=session,
|
||||||
|
)
|
||||||
await Text(result).finish(reply=True)
|
await Text(result).finish(reply=True)
|
||||||
else:
|
else:
|
||||||
_type = BlockType.ALL
|
_type = BlockType.ALL
|
||||||
|
|||||||
@ -189,8 +189,14 @@ class PluginManage:
|
|||||||
if group := await GroupConsole.get_or_none(
|
if group := await GroupConsole.get_or_none(
|
||||||
group_id=group_id, channel_id__isnull=True
|
group_id=group_id, channel_id__isnull=True
|
||||||
):
|
):
|
||||||
|
module_list = await PluginInfo.filter(
|
||||||
|
plugin_type=PluginType.NORMAL
|
||||||
|
).values_list("module", flat=True)
|
||||||
if status:
|
if status:
|
||||||
group.block_plugin = ""
|
for module in module_list:
|
||||||
|
group.block_plugin = group.block_plugin.replace(
|
||||||
|
f"{module},", ""
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
module_list = await PluginInfo.filter(
|
module_list = await PluginInfo.filter(
|
||||||
plugin_type=PluginType.NORMAL
|
plugin_type=PluginType.NORMAL
|
||||||
@ -271,7 +277,7 @@ class PluginManage:
|
|||||||
返回:
|
返回:
|
||||||
str: 返回信息
|
str: 返回信息
|
||||||
"""
|
"""
|
||||||
return await cls._change_group_plugin(plugin_name, group_id, True)
|
return await cls._change_group_plugin(plugin_name, group_id, False)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
async def unblock_group_task(cls, task_name: str, group_id: str) -> str:
|
async def unblock_group_task(cls, task_name: str, group_id: str) -> str:
|
||||||
@ -323,6 +329,52 @@ class PluginManage:
|
|||||||
"""
|
"""
|
||||||
return await cls._change_group_task("", group_id, True, True)
|
return await cls._change_group_task("", group_id, True, True)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
async def block_global_all_task(cls) -> str:
|
||||||
|
"""禁用全局被动技能
|
||||||
|
|
||||||
|
返回:
|
||||||
|
str: 返回信息
|
||||||
|
"""
|
||||||
|
await TaskInfo.all().update(status=False)
|
||||||
|
return "已全局禁用所有被动状态"
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
async def block_global_task(cls, name: str) -> str:
|
||||||
|
"""禁用全局被动技能
|
||||||
|
|
||||||
|
参数:
|
||||||
|
name: 被动技能名称
|
||||||
|
|
||||||
|
返回:
|
||||||
|
str: 返回信息
|
||||||
|
"""
|
||||||
|
await TaskInfo.filter(name=name).update(status=False)
|
||||||
|
return f"已全局禁用被动状态 {name}"
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
async def unblock_global_all_task(cls) -> str:
|
||||||
|
"""开启全局被动技能
|
||||||
|
|
||||||
|
返回:
|
||||||
|
str: 返回信息
|
||||||
|
"""
|
||||||
|
await TaskInfo.all().update(status=True)
|
||||||
|
return "已全局开启所有被动状态"
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
async def unblock_global_task(cls, name: str) -> str:
|
||||||
|
"""开启全局被动技能
|
||||||
|
|
||||||
|
参数:
|
||||||
|
name: 被动技能名称
|
||||||
|
|
||||||
|
返回:
|
||||||
|
str: 返回信息
|
||||||
|
"""
|
||||||
|
await TaskInfo.filter(name=name).update(status=True)
|
||||||
|
return f"已全局开启被动状态 {name}"
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
async def unblock_group_plugin(cls, plugin_name: str, group_id: str) -> str:
|
async def unblock_group_plugin(cls, plugin_name: str, group_id: str) -> str:
|
||||||
"""启用群组插件
|
"""启用群组插件
|
||||||
@ -334,7 +386,7 @@ class PluginManage:
|
|||||||
返回:
|
返回:
|
||||||
str: 返回信息
|
str: 返回信息
|
||||||
"""
|
"""
|
||||||
return await cls._change_group_plugin(plugin_name, group_id, False)
|
return await cls._change_group_plugin(plugin_name, group_id, True)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
async def _change_group_task(
|
async def _change_group_task(
|
||||||
@ -361,7 +413,8 @@ class PluginManage:
|
|||||||
if status:
|
if status:
|
||||||
group.block_task = ",".join(modules) + "," # type: ignore
|
group.block_task = ",".join(modules) + "," # type: ignore
|
||||||
else:
|
else:
|
||||||
group.block_task = ""
|
for module in modules:
|
||||||
|
group.block_task = group.block_task.replace(f"{module},", "")
|
||||||
await group.save(update_fields=["block_task"])
|
await group.save(update_fields=["block_task"])
|
||||||
return f"已成功{status_str}全部被动技能!"
|
return f"已成功{status_str}全部被动技能!"
|
||||||
else:
|
else:
|
||||||
@ -372,6 +425,8 @@ class PluginManage:
|
|||||||
if status:
|
if status:
|
||||||
group.block_task += f"{task.module},"
|
group.block_task += f"{task.module},"
|
||||||
else:
|
else:
|
||||||
|
if f"super:{task.module}," in group.block_task:
|
||||||
|
return f"{status_str} {task_name} 被动技能失败,当前群组该被动已被管理员禁用"
|
||||||
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"])
|
||||||
return f"已成功{status_str} {task_name} 被动技能!"
|
return f"已成功{status_str} {task_name} 被动技能!"
|
||||||
@ -443,10 +498,8 @@ class PluginManage:
|
|||||||
else:
|
else:
|
||||||
group.block_task += f"super:{task.module},"
|
group.block_task += f"super:{task.module},"
|
||||||
await group.save(update_fields=["block_task"])
|
await group.save(update_fields=["block_task"])
|
||||||
else:
|
return f"已成功将群组 {group_id} 被动技能 {task_name} {status_str}!"
|
||||||
task.status = status
|
return "没有找到这个群组喔..."
|
||||||
await task.save(update_fields=["status"])
|
|
||||||
return f"已成功将被动技能 {task_name} 全局{status_str}!"
|
|
||||||
return "没有找到这个功能喔..."
|
return "没有找到这个功能喔..."
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|||||||
@ -16,24 +16,17 @@ _status_matcher = on_alconna(
|
|||||||
Option("-t|--task", action=store_true, help_text="被动技能"),
|
Option("-t|--task", action=store_true, help_text="被动技能"),
|
||||||
Option("-df|--default", action=store_true, help_text="进群默认开关"),
|
Option("-df|--default", action=store_true, help_text="进群默认开关"),
|
||||||
Option("--all", action=store_true, help_text="全部插件/被动"),
|
Option("--all", action=store_true, help_text="全部插件/被动"),
|
||||||
|
Option("-g|--group", Args["group?", str], help_text="指定群组"),
|
||||||
Subcommand(
|
Subcommand(
|
||||||
"open",
|
"open",
|
||||||
Args["plugin_name?", [str, int]],
|
Args["plugin_name?", [str, int]],
|
||||||
Option(
|
|
||||||
"-g|--group",
|
|
||||||
Args["group", str],
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
Subcommand(
|
Subcommand(
|
||||||
"close",
|
"close",
|
||||||
Args["plugin_name?", [str, int]],
|
Args["plugin_name?", [str, int]],
|
||||||
Option(
|
Option(
|
||||||
"-t|--type",
|
"-t|--type",
|
||||||
Args["block_type", ["all", "a", "private", "p", "group", "g"]],
|
Args["block_type?", ["all", "a", "private", "p", "group", "g"]],
|
||||||
),
|
|
||||||
Option(
|
|
||||||
"-g|--group",
|
|
||||||
Args["group", str],
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -67,12 +60,20 @@ _status_matcher.shortcut(
|
|||||||
|
|
||||||
|
|
||||||
_status_matcher.shortcut(
|
_status_matcher.shortcut(
|
||||||
r"开启群被动(?P<name>.+)",
|
r"开启群被动\s*(?P<name>.+)",
|
||||||
command="switch",
|
command="switch",
|
||||||
arguments=["open", "{name}", "--task"],
|
arguments=["open", "{name}", "--task"],
|
||||||
prefix=True,
|
prefix=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
_status_matcher.shortcut(
|
||||||
|
r"关闭群被动\s*(?P<name>.+)",
|
||||||
|
command="switch",
|
||||||
|
arguments=["close", "{name}", "--task"],
|
||||||
|
prefix=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
_status_matcher.shortcut(
|
_status_matcher.shortcut(
|
||||||
r"开启(所有|全部)群被动",
|
r"开启(所有|全部)群被动",
|
||||||
command="switch",
|
command="switch",
|
||||||
@ -117,14 +118,6 @@ _status_matcher.shortcut(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
_status_matcher.shortcut(
|
|
||||||
r"关闭群被动(?P<name>.+)",
|
|
||||||
command="switch",
|
|
||||||
arguments=["close", "{name}", "--task"],
|
|
||||||
prefix=True,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
_status_matcher.shortcut(
|
_status_matcher.shortcut(
|
||||||
r"关闭所有(插件|功能)",
|
r"关闭所有(插件|功能)",
|
||||||
command="switch",
|
command="switch",
|
||||||
@ -139,6 +132,13 @@ _status_matcher.shortcut(
|
|||||||
prefix=True,
|
prefix=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
_status_matcher.shortcut(
|
||||||
|
r"关闭(?P<name>.+)",
|
||||||
|
command="switch",
|
||||||
|
arguments=["close", "{name}"],
|
||||||
|
prefix=True,
|
||||||
|
)
|
||||||
|
|
||||||
_status_matcher.shortcut(
|
_status_matcher.shortcut(
|
||||||
r"关闭(插件|功能)df(?P<name>.+)",
|
r"关闭(插件|功能)df(?P<name>.+)",
|
||||||
command="switch",
|
command="switch",
|
||||||
@ -146,12 +146,6 @@ _status_matcher.shortcut(
|
|||||||
prefix=True,
|
prefix=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
_status_matcher.shortcut(
|
|
||||||
r"关闭(?P<name>.+)",
|
|
||||||
command="switch",
|
|
||||||
arguments=["close", "{name}"],
|
|
||||||
prefix=True,
|
|
||||||
)
|
|
||||||
|
|
||||||
_group_status_matcher.shortcut(
|
_group_status_matcher.shortcut(
|
||||||
r"醒来",
|
r"醒来",
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user