from nonebot_plugin_alconna import AlconnaMatch, Match
from nonebot_plugin_uninfo import Uninfo
from zhenxun_utils.log import logger
from zhenxun_utils.message import MessageUtils

from ...models.bot_console import BotConsole
from .command import bot_manage


@bot_manage.assign("full_function.enable")
async def enable_full_function(
    session: Uninfo,
    bot_id: Match[str] = AlconnaMatch("bot_id"),
):
    if not bot_id.available:
        await MessageUtils.build_message("bot_id 不能为空").finish()

    else:
        logger.info(
            f"开启 {bot_id.result} 的所有可用插件及被动",
            "bot_manage.full_function.enable",
            session=session,
        )
        await BotConsole.enable_all(bot_id.result, "tasks")
        await BotConsole.enable_all(bot_id.result, "plugins")

        await MessageUtils.build_message(
            f"已开启 {bot_id.result} 的所有插件及被动"
        ).finish()


@bot_manage.assign("full_function.disable")
async def diasble_full_function(
    session: Uninfo,
    bot_id: Match[str] = AlconnaMatch("bot_id"),
):
    if not bot_id.available:
        await MessageUtils.build_message("bot_id 不能为空").finish()

    else:
        logger.info(
            f"禁用 {bot_id.result} 的所有可用插件及被动",
            "bot_manage.full_function.disable",
            session=session,
        )
        await BotConsole.disable_all(bot_id.result, "tasks")
        await BotConsole.disable_all(bot_id.result, "plugins")

        await MessageUtils.build_message(
            f"已禁用 {bot_id.result} 的所有插件及被动"
        ).finish()
