import asyncio import os import re import nonebot # from nonebot.adapters.discord import Adapter as DiscordAdapter from nonebot.adapters.dodo import Adapter as DoDoAdapter from nonebot.adapters.kaiheila import Adapter as KaiheilaAdapter from nonebot.adapters.onebot.v11 import Adapter as OneBotV11Adapter from nonebot.log import logger nonebot.init() from zhenxun.services.db_context import disconnect, init driver = nonebot.get_driver() driver.register_adapter(OneBotV11Adapter) driver.register_adapter(KaiheilaAdapter) driver.register_adapter(DoDoAdapter) driver.on_startup(init) driver.on_shutdown(disconnect) # nonebot.load_builtin_plugins("echo") nonebot.load_plugins("zhenxun/builtin_plugins") nonebot.load_plugins("zhenxun/plugins") all_plugins = [name.replace(":", ".") for name in nonebot.get_available_plugin_names()] logger.info(f"所有插件:{all_plugins}") loaded_plugins = tuple( re.sub(r"^zhenxun\.(plugins|builtin_plugins)\.", "", plugin.module_name) for plugin in nonebot.get_loaded_plugins() ) logger.info(f"已加载插件:{loaded_plugins}") for plugin in all_plugins.copy(): if plugin.startswith(("platform",)): logger.info(f"平台插件:{plugin}") elif plugin.endswith(loaded_plugins): logger.info(f"已加载插件:{plugin}") else: logger.info(f"未加载插件:{plugin}") continue all_plugins.remove(plugin) if all_plugins: logger.info(f"出现未加载的插件:{all_plugins}") exit(1) else: logger.info("所有插件均已加载") @driver.on_startup async def _(): task = asyncio.create_task(asyncio.sleep(1)) task.add_done_callback(lambda _: driver._lifespan.on_ready(os._exit(0))) nonebot.run()