#!/usr/bin/env python3 # -*- coding: utf-8 -*- import logging import importlib from typing import Optional from ipaddress import IPv4Address from .log import logger from .config import Env, Config from .drivers import BaseDriver _driver: Optional[BaseDriver] = None def get_driver() -> BaseDriver: if _driver is None: raise ValueError("NoneBot has not been initialized.") return _driver def get_app(): driver = get_driver() return driver.server_app def get_asgi(): driver = get_driver() return driver.asgi def init(*, _env_file=None, **kwargs): global _driver env = Env() config = Config(**kwargs, _env_file=_env_file or f".env.{env.environment}") logger.setLevel(logging.DEBUG if config.debug else logging.INFO) logger.debug(f"Loaded config: {config.dict()}") Driver = getattr(importlib.import_module(config.driver), "Driver") _driver = Driver(config) def run(host: Optional[IPv4Address] = None, port: Optional[int] = None, *args, **kwargs): get_driver().run(host, port, *args, **kwargs) from .plugin import load_plugins, get_loaded_plugins