---
sidebar_position: 1
description: nonebot.config 模块
---

# nonebot.config

本模块定义了 NoneBot 本身运行所需的配置项。

NoneBot 使用 [`pydantic`](https://pydantic-docs.helpmanual.io/) 以及 [`python-dotenv`](https://saurabh-kumar.com/python-dotenv/) 来读取配置。

配置项需符合特殊格式或 json 序列化格式。详情见 [`pydantic Field Type`](https://pydantic-docs.helpmanual.io/usage/types/) 文档。

## _class_ `Env(_env_file='<object object>', _env_file_encoding=None, _env_nested_delimiter=None, _secrets_dir=None, *, environment='prod', **values)` {#Env}

- **说明**

  运行环境配置。大小写不敏感。

  将会从 `环境变量` > `.env 环境配置文件` 的优先级读取环境信息。

- **参数**

  - `_env_file` (str | os.PathLike | list[str | os.PathLike] | tuple[str | os.PathLike, ...] | NoneType)

  - `_env_file_encoding` (str | None)

  - `_env_nested_delimiter` (str | None)

  - `_secrets_dir` (str | os.PathLike | NoneType)

  - `environment` (str)

  - `**values` (Any)

### _class-var_ `environment` {#Env-environment}

- **类型:** str

- **说明**

  当前环境名。

  NoneBot 将从 `.env.{environment}` 文件中加载配置。

## _class_ `Config(_env_file='<object object>', _env_file_encoding=None, _env_nested_delimiter=None, _secrets_dir=None, *, driver='~fastapi', host=IPv4Address('127.0.0.1'), port=8080, log_level='INFO', api_timeout=30.0, superusers=set(), nickname=set(), command_start={'/'}, command_sep={'.'}, session_expire_timeout=datetime.timedelta(seconds=120), **values)` {#Config}

- **说明**

  NoneBot 主要配置。大小写不敏感。

  除了 NoneBot 的配置项外，还可以自行添加配置项到 `.env.{environment}` 文件中。
  这些配置将会在 json 反序列化后一起带入 `Config` 类中。

  配置方法参考: [配置](https://v2.nonebot.dev/docs/tutorial/configuration)

- **参数**

  - `_env_file` (str | os.PathLike | list[str | os.PathLike] | tuple[str | os.PathLike, ...] | NoneType)

  - `_env_file_encoding` (str | None)

  - `_env_nested_delimiter` (str | None)

  - `_secrets_dir` (str | os.PathLike | NoneType)

  - `driver` (str)

  - `host` (pydantic.networks.IPvAnyAddress)

  - `port` (int)

  - `log_level` (int | str)

  - `api_timeout` (float | None)

  - `superusers` (set[str])

  - `nickname` (set[str])

  - `command_start` (set[str])

  - `command_sep` (set[str])

  - `session_expire_timeout` (datetime.timedelta)

  - `**values` (Any)

### _class-var_ `driver` {#Config-driver}

- **类型:** str

- **说明**

  NoneBot 运行所使用的 `Driver` 。继承自 [Driver](./drivers/index.md#Driver) 。

  配置格式为 `<module>[:<Driver>][+<module>[:<Mixin>]]*`。

  `~` 为 `nonebot.drivers.` 的缩写。

### _class-var_ `host` {#Config-host}

- **类型:** pydantic.networks.IPvAnyAddress

- **说明:** NoneBot [ReverseDriver](./drivers/index.md#ReverseDriver) 服务端监听的 IP/主机名。

### _class-var_ `port` {#Config-port}

- **类型:** int

- **说明:** NoneBot [ReverseDriver](./drivers/index.md#ReverseDriver) 服务端监听的端口。

### _class-var_ `log_level` {#Config-log_level}

- **类型:** int | str

- **说明**

  NoneBot 日志输出等级，可以为 `int` 类型等级或等级名称

  参考 [`loguru 日志等级`](https://loguru.readthedocs.io/en/stable/api/logger.html#levels)。

  :::tip 提示
  日志等级名称应为大写，如 `INFO`。
  :::

- **用法**

  ```conf
  LOG_LEVEL=25
  LOG_LEVEL=INFO
  ```

### _class-var_ `api_timeout` {#Config-api_timeout}

- **类型:** float | None

- **说明:** API 请求超时时间，单位: 秒。

### _class-var_ `superusers` {#Config-superusers}

- **类型:** set[str]

- **说明:** 机器人超级用户。

- **用法**

  ```conf
  SUPERUSERS=["12345789"]
  ```

### _class-var_ `nickname` {#Config-nickname}

- **类型:** set[str]

- **说明:** 机器人昵称。

### _class-var_ `command_start` {#Config-command_start}

- **类型:** set[str]

- **说明:** 命令的起始标记，用于判断一条消息是不是命令。

- **用法**

  ```conf
  COMMAND_START=["/", ""]
  ```

### _class-var_ `command_sep` {#Config-command_sep}

- **类型:** set[str]

- **说明:** 命令的分隔标记，用于将文本形式的命令切分为元组（实际的命令名）。

- **用法**

  ```conf
  COMMAND_SEP=["."]
  ```

### _class-var_ `session_expire_timeout` {#Config-session_expire_timeout}

- **类型:** datetime.timedelta

- **说明:** 等待用户回复的超时时间。

- **用法**

  ```conf
  SESSION_EXPIRE_TIMEOUT=120  # 单位: 秒
  SESSION_EXPIRE_TIMEOUT=[DD ][HH:MM]SS[.ffffff]
  SESSION_EXPIRE_TIMEOUT=P[DD]DT[HH]H[MM]M[SS]S  # ISO 8601
  ```
