mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-15 14:22:55 +08:00
✨ 初始化Bot管理插件
This commit is contained in:
parent
b0a5371574
commit
ee272ec07b
@ -1,10 +1,17 @@
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
import nonebot
|
import nonebot
|
||||||
|
from nonebot.adapters import Bot
|
||||||
from nonebot.plugin import PluginMetadata
|
from nonebot.plugin import PluginMetadata
|
||||||
|
|
||||||
from zhenxun.utils.enum import PluginType
|
from zhenxun.utils.enum import PluginType
|
||||||
|
from zhenxun.models.task_info import TaskInfo
|
||||||
|
from zhenxun.utils.platform import PlatformUtils
|
||||||
from zhenxun.configs.utils import PluginExtraData
|
from zhenxun.configs.utils import PluginExtraData
|
||||||
|
from zhenxun.models.bot_console import BotConsole
|
||||||
|
from zhenxun.models.plugin_info import PluginInfo
|
||||||
|
|
||||||
|
driver = nonebot.get_driver()
|
||||||
|
|
||||||
_sub_plugins = set()
|
_sub_plugins = set()
|
||||||
_sub_plugins |= nonebot.load_plugins(str(Path(__file__).parent.resolve()))
|
_sub_plugins |= nonebot.load_plugins(str(Path(__file__).parent.resolve()))
|
||||||
@ -17,6 +24,41 @@ __plugin_meta__ = PluginMetadata(
|
|||||||
extra=PluginExtraData(
|
extra=PluginExtraData(
|
||||||
author="",
|
author="",
|
||||||
version="0.1",
|
version="0.1",
|
||||||
plugin_type=PluginType.SUPERUSER,
|
plugin_type=PluginType.PARENT,
|
||||||
).dict(),
|
).dict(),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@driver.on_bot_connect
|
||||||
|
async def _(bot: Bot):
|
||||||
|
"""初始化Bot管理
|
||||||
|
|
||||||
|
参数:
|
||||||
|
bot: Bot
|
||||||
|
"""
|
||||||
|
plugin_list = await PluginInfo.get_plugins(
|
||||||
|
plugin_type__in=[PluginType.NORMAL, PluginType.DEPENDANT, PluginType.ADMIN]
|
||||||
|
)
|
||||||
|
available_tasks: list[str] = await TaskInfo.filter(status=True).values_list(
|
||||||
|
"module", flat=True
|
||||||
|
) # type: ignore
|
||||||
|
available_plugins = [p.module for p in plugin_list]
|
||||||
|
# for _, bot in nonebot.get_bots().items():
|
||||||
|
platform = PlatformUtils.get_platform(bot)
|
||||||
|
bot_data, is_create = await BotConsole.get_or_create(
|
||||||
|
bot_id=bot.self_id, platform=platform
|
||||||
|
)
|
||||||
|
if not is_create:
|
||||||
|
block_plugins = await bot_data.get_plugins(bot.self_id, False)
|
||||||
|
block_plugins = BotConsole._convert_module_format(block_plugins)
|
||||||
|
for module in available_plugins.copy():
|
||||||
|
if module in block_plugins:
|
||||||
|
available_plugins.remove(module)
|
||||||
|
block_tasks = await bot_data.get_tasks(bot.self_id, False)
|
||||||
|
block_tasks = BotConsole._convert_module_format(block_tasks)
|
||||||
|
for module in available_tasks.copy():
|
||||||
|
if module in block_plugins:
|
||||||
|
available_tasks.remove(module)
|
||||||
|
bot_data.available_plugins = BotConsole._convert_module_format(available_plugins)
|
||||||
|
bot_data.available_tasks = BotConsole._convert_module_format(available_tasks)
|
||||||
|
await bot_data.save(update_fields=["available_plugins", "available_tasks"])
|
||||||
|
|||||||
@ -50,10 +50,10 @@ class BotConsole(Model):
|
|||||||
"""
|
"""
|
||||||
获取bot状态
|
获取bot状态
|
||||||
|
|
||||||
Args:
|
参数:
|
||||||
bot_id (str, optional): bot_id. Defaults to None.
|
bot_id (str, optional): bot_id. Defaults to None.
|
||||||
|
|
||||||
Returns:
|
返回:
|
||||||
list[tuple[str, bool]] | bool: bot状态
|
list[tuple[str, bool]] | bool: bot状态
|
||||||
"""
|
"""
|
||||||
if not bot_id:
|
if not bot_id:
|
||||||
@ -82,11 +82,11 @@ class BotConsole(Model):
|
|||||||
"""
|
"""
|
||||||
获取bot被动技能
|
获取bot被动技能
|
||||||
|
|
||||||
Args:
|
参数:
|
||||||
bot_id (str | None, optional): bot_id. Defaults to None.
|
bot_id (str | None, optional): bot_id. Defaults to None.
|
||||||
status (bool | None, optional): 被动状态. Defaults to True.
|
status (bool | None, optional): 被动状态. Defaults to True.
|
||||||
|
|
||||||
Returns:
|
返回:
|
||||||
list[tuple[str, str]] | str: 被动技能
|
list[tuple[str, str]] | str: 被动技能
|
||||||
"""
|
"""
|
||||||
if not bot_id:
|
if not bot_id:
|
||||||
@ -119,11 +119,11 @@ class BotConsole(Model):
|
|||||||
"""
|
"""
|
||||||
获取bot插件
|
获取bot插件
|
||||||
|
|
||||||
Args:
|
参数:
|
||||||
bot_id (str | None, optional): bot_id. Defaults to None.
|
bot_id (str | None, optional): bot_id. Defaults to None.
|
||||||
status (bool, optional): 插件状态. Defaults to True.
|
status (bool, optional): 插件状态. Defaults to True.
|
||||||
|
|
||||||
Returns:
|
返回:
|
||||||
list[tuple[str, str]] | str: 插件
|
list[tuple[str, str]] | str: 插件
|
||||||
"""
|
"""
|
||||||
if not bot_id:
|
if not bot_id:
|
||||||
@ -140,7 +140,7 @@ class BotConsole(Model):
|
|||||||
"""
|
"""
|
||||||
设置bot状态
|
设置bot状态
|
||||||
|
|
||||||
Args:
|
参数:
|
||||||
status (bool): 状态
|
status (bool): 状态
|
||||||
bot_id (str, optional): bot_id. Defaults to None.
|
bot_id (str, optional): bot_id. Defaults to None.
|
||||||
|
|
||||||
@ -167,10 +167,10 @@ class BotConsole(Model):
|
|||||||
"""
|
"""
|
||||||
在 `<aaa,<bbb,<ccc,` 和 `["aaa", "bbb", "ccc"]` 之间进行相互转换。
|
在 `<aaa,<bbb,<ccc,` 和 `["aaa", "bbb", "ccc"]` 之间进行相互转换。
|
||||||
|
|
||||||
Args:
|
参数:
|
||||||
data (str | list[str]): 输入数据,可能是格式化字符串或字符串列表。
|
data (str | list[str]): 输入数据,可能是格式化字符串或字符串列表。
|
||||||
|
|
||||||
Returns:
|
返回:
|
||||||
str | list[str]: 根据输入类型返回转换后的数据。
|
str | list[str]: 根据输入类型返回转换后的数据。
|
||||||
"""
|
"""
|
||||||
if isinstance(data, str):
|
if isinstance(data, str):
|
||||||
@ -189,7 +189,7 @@ class BotConsole(Model):
|
|||||||
"""
|
"""
|
||||||
在 from_field 和 to_field 之间移动指定的 data
|
在 from_field 和 to_field 之间移动指定的 data
|
||||||
|
|
||||||
Args:
|
参数:
|
||||||
bot_id (str): 目标 bot 的 ID
|
bot_id (str): 目标 bot 的 ID
|
||||||
from_field (str): 源字段名称
|
from_field (str): 源字段名称
|
||||||
to_field (str): 目标字段名称
|
to_field (str): 目标字段名称
|
||||||
@ -222,7 +222,7 @@ class BotConsole(Model):
|
|||||||
"""
|
"""
|
||||||
禁用插件
|
禁用插件
|
||||||
|
|
||||||
Args:
|
参数:
|
||||||
bot_id (str | None): bot_id
|
bot_id (str | None): bot_id
|
||||||
plugin_name (str): 插件名称
|
plugin_name (str): 插件名称
|
||||||
"""
|
"""
|
||||||
@ -248,7 +248,7 @@ class BotConsole(Model):
|
|||||||
"""
|
"""
|
||||||
启用插件
|
启用插件
|
||||||
|
|
||||||
Args:
|
参数:
|
||||||
bot_id (str | None): bot_id
|
bot_id (str | None): bot_id
|
||||||
plugin_name (str): 插件名称
|
plugin_name (str): 插件名称
|
||||||
"""
|
"""
|
||||||
@ -274,7 +274,7 @@ class BotConsole(Model):
|
|||||||
"""
|
"""
|
||||||
禁用被动技能
|
禁用被动技能
|
||||||
|
|
||||||
Args:
|
参数:
|
||||||
bot_id (str | None): bot_id
|
bot_id (str | None): bot_id
|
||||||
task_name (str): 被动技能名称
|
task_name (str): 被动技能名称
|
||||||
"""
|
"""
|
||||||
@ -300,7 +300,7 @@ class BotConsole(Model):
|
|||||||
"""
|
"""
|
||||||
启用被动技能
|
启用被动技能
|
||||||
|
|
||||||
Args:
|
参数:
|
||||||
bot_id (str | None): bot_id
|
bot_id (str | None): bot_id
|
||||||
task_name (str): 被动技能名称
|
task_name (str): 被动技能名称
|
||||||
"""
|
"""
|
||||||
@ -330,7 +330,7 @@ class BotConsole(Model):
|
|||||||
"""
|
"""
|
||||||
禁用全部插件或被动技能
|
禁用全部插件或被动技能
|
||||||
|
|
||||||
Args:
|
参数:
|
||||||
bot_id (str): bot_id
|
bot_id (str): bot_id
|
||||||
feat (Literal["plugins", "tasks"]): 插件或被动技能
|
feat (Literal["plugins", "tasks"]): 插件或被动技能
|
||||||
"""
|
"""
|
||||||
@ -352,7 +352,7 @@ class BotConsole(Model):
|
|||||||
"""
|
"""
|
||||||
启用全部插件或被动技能
|
启用全部插件或被动技能
|
||||||
|
|
||||||
Args:
|
参数:
|
||||||
bot_id (str): bot_id
|
bot_id (str): bot_id
|
||||||
feat (Literal["plugins", "tasks"]): 插件或被动技能
|
feat (Literal["plugins", "tasks"]): 插件或被动技能
|
||||||
"""
|
"""
|
||||||
@ -370,11 +370,11 @@ class BotConsole(Model):
|
|||||||
"""
|
"""
|
||||||
检查插件是否被禁用
|
检查插件是否被禁用
|
||||||
|
|
||||||
Args:
|
参数:
|
||||||
bot_id (str): bot_id
|
bot_id (str): bot_id
|
||||||
plugin_name (str): 插件名称
|
plugin_name (str): 插件名称
|
||||||
|
|
||||||
Returns:
|
返回:
|
||||||
bool: 是否被禁用
|
bool: 是否被禁用
|
||||||
"""
|
"""
|
||||||
bot_data, _ = await cls.get_or_create(bot_id=bot_id)
|
bot_data, _ = await cls.get_or_create(bot_id=bot_id)
|
||||||
@ -385,11 +385,11 @@ class BotConsole(Model):
|
|||||||
"""
|
"""
|
||||||
检查被动技能是否被禁用
|
检查被动技能是否被禁用
|
||||||
|
|
||||||
Args:
|
参数:
|
||||||
bot_id (str): bot_id
|
bot_id (str): bot_id
|
||||||
task_name (str): 被动技能名称
|
task_name (str): 被动技能名称
|
||||||
|
|
||||||
Returns:
|
返回:
|
||||||
bool: 是否被禁用
|
bool: 是否被禁用
|
||||||
"""
|
"""
|
||||||
bot_data, _ = await cls.get_or_create(bot_id=bot_id)
|
bot_data, _ = await cls.get_or_create(bot_id=bot_id)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user