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
c36bb9771c
commit
51371ba954
3
.gitignore
vendored
3
.gitignore
vendored
@ -181,4 +181,5 @@ plugins/activity/
|
|||||||
!/resources/image/genshin/alc/back.png
|
!/resources/image/genshin/alc/back.png
|
||||||
!/data/genshin_alc/
|
!/data/genshin_alc/
|
||||||
.vscode/launch.json
|
.vscode/launch.json
|
||||||
/resources/template/my_info
|
/resources/template/my_info
|
||||||
|
plugins_/
|
||||||
@ -1,9 +1,9 @@
|
|||||||
from zhenxun.models.group_console import GroupConsole
|
|
||||||
from zhenxun.models.plugin_info import PluginInfo
|
|
||||||
from zhenxun.models.task_info import TaskInfo
|
from zhenxun.models.task_info import TaskInfo
|
||||||
|
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.utils.exception import GroupInfoNotFound
|
from zhenxun.utils.exception import GroupInfoNotFound
|
||||||
from zhenxun.utils.image_utils import BuildImage, ImageTemplate, RowStyle
|
from zhenxun.utils.image_utils import RowStyle, BuildImage, ImageTemplate
|
||||||
|
|
||||||
|
|
||||||
def plugin_row_style(column: str, text: str) -> RowStyle:
|
def plugin_row_style(column: str, text: str) -> RowStyle:
|
||||||
@ -17,16 +17,16 @@ def plugin_row_style(column: str, text: str) -> RowStyle:
|
|||||||
RowStyle: RowStyle
|
RowStyle: RowStyle
|
||||||
"""
|
"""
|
||||||
style = RowStyle()
|
style = RowStyle()
|
||||||
if column == "全局状态":
|
if (
|
||||||
if text == "开启":
|
column == "全局状态"
|
||||||
style.font_color = "#67C23A"
|
and text == "开启"
|
||||||
else:
|
or column != "全局状态"
|
||||||
style.font_color = "#F56C6C"
|
and column == "加载状态"
|
||||||
if column == "加载状态":
|
and text == "SUCCESS"
|
||||||
if text == "SUCCESS":
|
):
|
||||||
style.font_color = "#67C23A"
|
style.font_color = "#67C23A"
|
||||||
else:
|
elif column in {"全局状态", "加载状态"}:
|
||||||
style.font_color = "#F56C6C"
|
style.font_color = "#F56C6C"
|
||||||
return style
|
return style
|
||||||
|
|
||||||
|
|
||||||
@ -44,22 +44,21 @@ async def build_plugin() -> BuildImage:
|
|||||||
"金币花费",
|
"金币花费",
|
||||||
]
|
]
|
||||||
plugin_list = await PluginInfo.filter(plugin_type__not=PluginType.HIDDEN).all()
|
plugin_list = await PluginInfo.filter(plugin_type__not=PluginType.HIDDEN).all()
|
||||||
column_data = []
|
column_data = [
|
||||||
for plugin in plugin_list:
|
[
|
||||||
column_data.append(
|
plugin.id,
|
||||||
[
|
plugin.module,
|
||||||
plugin.id,
|
plugin.name,
|
||||||
plugin.module,
|
"开启" if plugin.status else "关闭",
|
||||||
plugin.name,
|
plugin.block_type,
|
||||||
"开启" if plugin.status else "关闭",
|
"SUCCESS" if plugin.load_status else "ERROR",
|
||||||
plugin.block_type,
|
plugin.menu_type,
|
||||||
"SUCCESS" if plugin.load_status else "ERROR",
|
plugin.author,
|
||||||
plugin.menu_type,
|
plugin.version,
|
||||||
plugin.author,
|
plugin.cost_gold,
|
||||||
plugin.version,
|
]
|
||||||
plugin.cost_gold,
|
for plugin in plugin_list
|
||||||
]
|
]
|
||||||
)
|
|
||||||
return await ImageTemplate.table_page(
|
return await ImageTemplate.table_page(
|
||||||
"Plugin",
|
"Plugin",
|
||||||
"插件状态",
|
"插件状态",
|
||||||
@ -80,11 +79,8 @@ def task_row_style(column: str, text: str) -> RowStyle:
|
|||||||
RowStyle: RowStyle
|
RowStyle: RowStyle
|
||||||
"""
|
"""
|
||||||
style = RowStyle()
|
style = RowStyle()
|
||||||
if column in ["群组状态", "全局状态"]:
|
if column in {"群组状态", "全局状态"}:
|
||||||
if text == "开启":
|
style.font_color = "#67C23A" if text == "开启" else "#F56C6C"
|
||||||
style.font_color = "#67C23A"
|
|
||||||
else:
|
|
||||||
style.font_color = "#F56C6C"
|
|
||||||
return style
|
return style
|
||||||
|
|
||||||
|
|
||||||
@ -159,12 +155,13 @@ class PluginManage:
|
|||||||
if plugin_name.isdigit():
|
if plugin_name.isdigit():
|
||||||
plugin = await PluginInfo.get_or_none(id=int(plugin_name))
|
plugin = await PluginInfo.get_or_none(id=int(plugin_name))
|
||||||
else:
|
else:
|
||||||
plugin = await PluginInfo.get_or_none(name=plugin_name)
|
plugin = await PluginInfo.get_or_none(name=plugin_name, load_status=True)
|
||||||
if plugin:
|
if plugin:
|
||||||
plugin.default_status = status
|
plugin.default_status = status
|
||||||
await plugin.save(update_fields=["default_status"])
|
await plugin.save(update_fields=["default_status"])
|
||||||
return f'成功将 {plugin.name} 进群默认状态修改为: {"开启" if status else "关闭"}'
|
status_text = "开启" if status else "关闭"
|
||||||
return f"没有找到这个功能喔..."
|
return f"成功将 {plugin.name} 进群默认状态修改为: {status_text}"
|
||||||
|
return "没有找到这个功能喔..."
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
async def set_all_plugin_status(
|
async def set_all_plugin_status(
|
||||||
@ -206,7 +203,7 @@ class PluginManage:
|
|||||||
return f'成功将此群组所有功能状态修改为: {"开启" if status else "关闭"}'
|
return f'成功将此群组所有功能状态修改为: {"开启" if status else "关闭"}'
|
||||||
return "获取群组失败..."
|
return "获取群组失败..."
|
||||||
await PluginInfo.filter(plugin_type=PluginType.NORMAL).update(
|
await PluginInfo.filter(plugin_type=PluginType.NORMAL).update(
|
||||||
status=status, block_type=BlockType.ALL if not status else None
|
status=status, block_type=None if status else BlockType.ALL
|
||||||
)
|
)
|
||||||
return f'成功将所有功能全局状态修改为: {"开启" if status else "关闭"}'
|
return f'成功将所有功能全局状态修改为: {"开启" if status else "关闭"}'
|
||||||
|
|
||||||
@ -417,19 +414,18 @@ class PluginManage:
|
|||||||
group.block_task = group.block_task.replace(f"{module},", "")
|
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:
|
elif task := await TaskInfo.get_or_none(name=task_name):
|
||||||
if task := await TaskInfo.get_or_none(name=task_name):
|
group, _ = await GroupConsole.get_or_create(
|
||||||
group, _ = await GroupConsole.get_or_create(
|
group_id=group_id, channel_id__isnull=True
|
||||||
group_id=group_id, channel_id__isnull=True
|
)
|
||||||
)
|
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:
|
||||||
else:
|
return f"{status_str} {task_name} 被动技能失败,当前群组该被动已被管理员禁用"
|
||||||
if f"super:{task.module}," in group.block_task:
|
else:
|
||||||
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} 被动技能!"
|
|
||||||
return "没有找到这个被动技能喔..."
|
return "没有找到这个被动技能喔..."
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ -450,12 +446,12 @@ class PluginManage:
|
|||||||
if plugin_name.isdigit():
|
if plugin_name.isdigit():
|
||||||
plugin = await PluginInfo.get_or_none(id=int(plugin_name))
|
plugin = await PluginInfo.get_or_none(id=int(plugin_name))
|
||||||
else:
|
else:
|
||||||
plugin = await PluginInfo.get_or_none(name=plugin_name)
|
plugin = await PluginInfo.get_or_none(name=plugin_name, load_status=True)
|
||||||
status_str = "开启" if status else "关闭"
|
|
||||||
if plugin:
|
if plugin:
|
||||||
group, _ = await GroupConsole.get_or_create(
|
group, _ = await GroupConsole.get_or_create(
|
||||||
group_id=group_id, channel_id__isnull=True
|
group_id=group_id, channel_id__isnull=True
|
||||||
)
|
)
|
||||||
|
status_str = "开启" if status else "关闭"
|
||||||
if status:
|
if status:
|
||||||
if plugin.module in group.block_plugin:
|
if plugin.module in group.block_plugin:
|
||||||
group.block_plugin = group.block_plugin.replace(
|
group.block_plugin = group.block_plugin.replace(
|
||||||
@ -463,11 +459,10 @@ class PluginManage:
|
|||||||
)
|
)
|
||||||
await group.save(update_fields=["block_plugin"])
|
await group.save(update_fields=["block_plugin"])
|
||||||
return f"已成功{status_str} {plugin.name} 功能!"
|
return f"已成功{status_str} {plugin.name} 功能!"
|
||||||
else:
|
elif plugin.module not in group.block_plugin:
|
||||||
if plugin.module not in group.block_plugin:
|
group.block_plugin += f"{plugin.module},"
|
||||||
group.block_plugin += f"{plugin.module},"
|
await group.save(update_fields=["block_plugin"])
|
||||||
await group.save(update_fields=["block_plugin"])
|
return f"已成功{status_str} {plugin.name} 功能!"
|
||||||
return f"已成功{status_str} {plugin.name} 功能!"
|
|
||||||
return f"该功能已经{status_str}了喔,不要重复{status_str}..."
|
return f"该功能已经{status_str}了喔,不要重复{status_str}..."
|
||||||
return "没有找到这个功能喔..."
|
return "没有找到这个功能喔..."
|
||||||
|
|
||||||
@ -485,22 +480,20 @@ class PluginManage:
|
|||||||
返回:
|
返回:
|
||||||
str: 返回信息
|
str: 返回信息
|
||||||
"""
|
"""
|
||||||
if task := await TaskInfo.get_or_none(name=task_name):
|
if not (task := await TaskInfo.get_or_none(name=task_name)):
|
||||||
|
return "没有找到这个功能喔..."
|
||||||
|
if group_id:
|
||||||
|
group, _ = await GroupConsole.get_or_create(
|
||||||
|
group_id=group_id, channel_id__isnull=True
|
||||||
|
)
|
||||||
|
if status:
|
||||||
|
group.block_task = group.block_task.replace(f"super:{task.module},", "")
|
||||||
|
else:
|
||||||
|
group.block_task += f"super:{task.module},"
|
||||||
|
await group.save(update_fields=["block_task"])
|
||||||
status_str = "开启" if status else "关闭"
|
status_str = "开启" if status else "关闭"
|
||||||
if group_id:
|
return f"已成功将群组 {group_id} 被动技能 {task_name} {status_str}!"
|
||||||
group, _ = await GroupConsole.get_or_create(
|
return "没有找到这个群组喔..."
|
||||||
group_id=group_id, channel_id__isnull=True
|
|
||||||
)
|
|
||||||
if status:
|
|
||||||
group.block_task = group.block_task.replace(
|
|
||||||
f"super:{task.module},", ""
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
group.block_task += f"super:{task.module},"
|
|
||||||
await group.save(update_fields=["block_task"])
|
|
||||||
return f"已成功将群组 {group_id} 被动技能 {task_name} {status_str}!"
|
|
||||||
return "没有找到这个群组喔..."
|
|
||||||
return "没有找到这个功能喔..."
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
async def superuser_block(
|
async def superuser_block(
|
||||||
@ -519,7 +512,7 @@ class PluginManage:
|
|||||||
if plugin_name.isdigit():
|
if plugin_name.isdigit():
|
||||||
plugin = await PluginInfo.get_or_none(id=int(plugin_name))
|
plugin = await PluginInfo.get_or_none(id=int(plugin_name))
|
||||||
else:
|
else:
|
||||||
plugin = await PluginInfo.get_or_none(name=plugin_name)
|
plugin = await PluginInfo.get_or_none(name=plugin_name, load_status=True)
|
||||||
if plugin:
|
if plugin:
|
||||||
if group_id:
|
if group_id:
|
||||||
if group := await GroupConsole.get_or_none(
|
if group := await GroupConsole.get_or_none(
|
||||||
@ -538,13 +531,12 @@ class PluginManage:
|
|||||||
await plugin.save(update_fields=["status", "block_type"])
|
await plugin.save(update_fields=["status", "block_type"])
|
||||||
if not block_type:
|
if not block_type:
|
||||||
return f"已成功将 {plugin.name} 全局启用!"
|
return f"已成功将 {plugin.name} 全局启用!"
|
||||||
else:
|
if block_type == BlockType.ALL:
|
||||||
if block_type == BlockType.ALL:
|
return f"已成功将 {plugin.name} 全局关闭!"
|
||||||
return f"已成功将 {plugin.name} 全局关闭!"
|
if block_type == BlockType.GROUP:
|
||||||
if block_type == BlockType.GROUP:
|
return f"已成功将 {plugin.name} 全局群组关闭!"
|
||||||
return f"已成功将 {plugin.name} 全局群组关闭!"
|
if block_type == BlockType.PRIVATE:
|
||||||
if block_type == BlockType.PRIVATE:
|
return f"已成功将 {plugin.name} 全局私聊关闭!"
|
||||||
return f"已成功将 {plugin.name} 全局私聊关闭!"
|
|
||||||
return "没有找到这个功能喔..."
|
return "没有找到这个功能喔..."
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ -564,7 +556,7 @@ class PluginManage:
|
|||||||
if plugin_name.isdigit():
|
if plugin_name.isdigit():
|
||||||
plugin = await PluginInfo.get_or_none(id=int(plugin_name))
|
plugin = await PluginInfo.get_or_none(id=int(plugin_name))
|
||||||
else:
|
else:
|
||||||
plugin = await PluginInfo.get_or_none(name=plugin_name)
|
plugin = await PluginInfo.get_or_none(name=plugin_name, load_status=True)
|
||||||
if plugin:
|
if plugin:
|
||||||
if group_id:
|
if group_id:
|
||||||
if group := await GroupConsole.get_or_none(
|
if group := await GroupConsole.get_or_none(
|
||||||
@ -585,11 +577,10 @@ class PluginManage:
|
|||||||
await plugin.save(update_fields=["status", "block_type"])
|
await plugin.save(update_fields=["status", "block_type"])
|
||||||
if not block_type:
|
if not block_type:
|
||||||
return f"已成功将 {plugin.name} 全局启用!"
|
return f"已成功将 {plugin.name} 全局启用!"
|
||||||
else:
|
if block_type == BlockType.ALL:
|
||||||
if block_type == BlockType.ALL:
|
return f"已成功将 {plugin.name} 全局开启!"
|
||||||
return f"已成功将 {plugin.name} 全局开启!"
|
if block_type == BlockType.GROUP:
|
||||||
if block_type == BlockType.GROUP:
|
return f"已成功将 {plugin.name} 全局群组开启!"
|
||||||
return f"已成功将 {plugin.name} 全局群组开启!"
|
if block_type == BlockType.PRIVATE:
|
||||||
if block_type == BlockType.PRIVATE:
|
return f"已成功将 {plugin.name} 全局私聊开启!"
|
||||||
return f"已成功将 {plugin.name} 全局私聊开启!"
|
|
||||||
return "没有找到这个功能喔..."
|
return "没有找到这个功能喔..."
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user