def init(*, _env_file: Optional[str] = None, **kwargs: Any) -> None: """初始化 NoneBot 以及 全局 {ref}`nonebot.drivers.Driver` 对象。 NoneBot 将会从 .env 文件中读取环境信息,并使用相应的 env 文件配置。 也可以传入自定义的 `_env_file` 来指定 NoneBot 从该文件读取配置。 参数: _env_file: 配置文件名,默认从 `.env.{env_name}` 中读取配置 kwargs: 任意变量,将会存储到 {ref}`nonebot.drivers.Driver.config` 对象里 用法: ```python nonebot.init(database=Database(...)) ``` """ global _driver if not _driver: logger.success("NoneBot is initializing...") env = Env() config = Config( **kwargs, _common_config=env.dict(), _env_file=_env_file or f".env.{env.environment}", ) default_filter.level = config.log_level logger.opt(colors=True).info( f"Current <y><b>Env: {escape_tag(env.environment)}</b></y>") logger.opt(colors=True).debug( f"Loaded <y><b>Config</b></y>: {escape_tag(str(config.dict()))}") DriverClass: Type[Driver] = _resolve_combine_expr(config.driver) _driver = DriverClass(env, config)
def __init__(self, env: Env, config: NoneBotConfig): super(Driver, self).__init__(env, config) self.fastapi_config: Config = Config(**config.dict()) self._server_app = FastAPI( openapi_url=self.fastapi_config.fastapi_openapi_url, docs_url=self.fastapi_config.fastapi_docs_url, redoc_url=self.fastapi_config.fastapi_redoc_url, )
def __init__(self, env: Env, config: NoneBotConfig): super().__init__(env, config) self.quart_config = Config(**config.dict()) self._server_app = Quart(self.__class__.__qualname__) self._server_app.add_url_rule("/<adapter>/http", methods=["POST"], view_func=self._handle_http) self._server_app.add_websocket("/<adapter>/ws", view_func=self._handle_ws_reverse)
def init(*, _env_file: Optional[str] = None, **kwargs): """ :说明: 初始化 NoneBot 以及 全局 Driver 对象。 NoneBot 将会从 .env 文件中读取环境信息,并使用相应的 env 文件配置。 你也可以传入自定义的 _env_file 来指定 NoneBot 从该文件读取配置。 :参数: * ``_env_file: Optional[str]``: 配置文件名,默认从 .env.{env_name} 中读取配置 * ``**kwargs``: 任意变量,将会存储到 Config 对象里 :返回: - ``None`` :用法: .. code-block:: python nonebot.init(database=Database(...)) """ global _driver if not _driver: logger.info("NoneBot is initializing...") env = Env() logger.opt( colors=True).info(f"Current <y><b>Env: {env.environment}</b></y>") config = Config(**kwargs, _env_file=_env_file or f".env.{env.environment}") default_filter.level = "DEBUG" if config.debug else "INFO" logger.opt(colors=True).debug( f"Loaded <y><b>Config</b></y>: {escape_tag(str(config.dict()))}") DriverClass: Type[Driver] = getattr( importlib.import_module(config.driver), "Driver") _driver = DriverClass(env, config) # register build-in adapters _driver.register_adapter("cqhttp", CQBot) # load nonebot test frontend if debug if config.debug and nonebot_test: logger.debug("Loading nonebot test frontend...") nonebot_test.init() if scheduler: _driver.on_startup(_start_scheduler)
def init(*, _env_file: Optional[str] = None, **kwargs): """ :说明: 初始化 NoneBot 以及 全局 Driver 对象。 NoneBot 将会从 .env 文件中读取环境信息,并使用相应的 env 文件配置。 你也可以传入自定义的 _env_file 来指定 NoneBot 从该文件读取配置。 :参数: * ``_env_file: Optional[str]``: 配置文件名,默认从 .env.{env_name} 中读取配置 * ``**kwargs``: 任意变量,将会存储到 Config 对象里 :返回: - ``None`` :用法: .. code-block:: python nonebot.init(database=Database(...)) """ global _driver if not _driver: logger.success("NoneBot is initializing...") env = Env() config = Config(**kwargs, _common_config=env.dict(), _env_file=_env_file or f".env.{env.environment}") default_filter.level = ( "DEBUG" if config.debug else "INFO") if config.log_level is None else config.log_level logger.opt(colors=True).info( f"Current <y><b>Env: {escape_tag(env.environment)}</b></y>") logger.opt(colors=True).debug( f"Loaded <y><b>Config</b></y>: {escape_tag(str(config.dict()))}") modulename, _, cls = config.driver.partition(":") module = importlib.import_module(modulename) instance = module for attr_str in (cls or "Driver").split("."): instance = getattr(instance, attr_str) DriverClass: Type[Driver] = instance # type: ignore _driver = DriverClass(env, config)
def __init__(self, env: Env, config: NoneBotConfig): super().__init__(env, config) self.fastapi_config = Config(**config.dict()) self._server_app = FastAPI( debug=config.debug, openapi_url=self.fastapi_config.fastapi_openapi_url, docs_url=self.fastapi_config.fastapi_docs_url, redoc_url=self.fastapi_config.fastapi_redoc_url, ) self._server_app.post("/{adapter}/")(self._handle_http) self._server_app.post("/{adapter}/http")(self._handle_http) self._server_app.websocket("/{adapter}/ws")(self._handle_ws_reverse) self._server_app.websocket("/{adapter}/ws/")(self._handle_ws_reverse)
def init(*, _env_file: Optional[str] = None, **kwargs): """ :说明: 初始化 NoneBot 以及 全局 Driver 对象。 NoneBot 将会从 .env 文件中读取环境信息,并使用相应的 env 文件配置。 你也可以传入自定义的 _env_file 来指定 NoneBot 从该文件读取配置。 :参数: * ``_env_file: Optional[str]``: 配置文件名,默认从 .env.{env_name} 中读取配置 * ``**kwargs``: 任意变量,将会存储到 Config 对象里 :返回: - ``None`` :用法: .. code-block:: python nonebot.init(database=Database(...)) """ global _driver if not _driver: logger.success("NoneBot is initializing...") env = Env() config = Config( **kwargs, _common_config=env.dict(), _env_file=_env_file or f".env.{env.environment}", ) default_filter.level = config.log_level logger.opt(colors=True).info( f"Current <y><b>Env: {escape_tag(env.environment)}</b></y>" ) logger.opt(colors=True).debug( f"Loaded <y><b>Config</b></y>: {escape_tag(str(config.dict()))}" ) DriverClass: Type[Driver] = _resolve_combine_expr(config.driver) _driver = DriverClass(env, config)
def init(*, _env_file: Optional[str] = None, **kwargs): """ :说明: 初始化 NoneBot 以及 全局 Driver 对象。 NoneBot 将会从 .env 文件中读取环境信息,并使用相应的 env 文件配置。 你也可以传入自定义的 _env_file 来指定 NoneBot 从该文件读取配置。 :参数: * ``_env_file: Optional[str]``: 配置文件名,默认从 .env.{env_name} 中读取配置 * ``**kwargs``: 任意变量,将会存储到 Config 对象里 :返回: - `None` :用法: .. code-block:: python nonebot.init(database=Database(...)) """ global _driver env = Env() logger.debug(f"Current Env: {env.environment}") 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()}") DriverClass: Type[Driver] = getattr(importlib.import_module(config.driver), "Driver") _driver = DriverClass(env, config) # register build-in adapters _driver.register_adapter("cqhttp", CQBot) # load nonebot test frontend if debug if config.debug and nonebot_test: logger.debug("Loading nonebot test frontend...") nonebot_test.init()
def __init__(self, env: Env, config: NoneBotConfig): super().__init__(env, config) self.fastapi_config: Config = Config(**config.dict()) self.http_pollings: List[HTTPPOLLING_SETUP] = [] self.websockets: List[WEBSOCKET_SETUP] = [] self.shutdown: asyncio.Event = asyncio.Event() self.connections: List[asyncio.Task] = [] self._server_app = FastAPI( debug=config.debug, openapi_url=self.fastapi_config.fastapi_openapi_url, docs_url=self.fastapi_config.fastapi_docs_url, redoc_url=self.fastapi_config.fastapi_redoc_url, ) self._server_app.post("/{adapter}/")(self._handle_http) self._server_app.post("/{adapter}/http")(self._handle_http) self._server_app.websocket("/{adapter}/ws")(self._handle_ws_reverse) self._server_app.websocket("/{adapter}/ws/")(self._handle_ws_reverse) self.on_startup(self._run_forward) self.on_shutdown(self._shutdown_forward)
def __init__(self, env: Env, config: NoneBotConfig): super().__init__(env, config) self.quart_config = Config(**config.dict()) self._server_app = Quart(self.__class__.__qualname__)