Skip to main content
Version: 2.4.0

nonebot.utils

本模块包含了 NoneBot 的一些工具函数

def escape_tag(s)

  • 说明

    用于记录带颜色日志时转义 <tag> 类型特殊标签

    参考: loguru color 标签

  • 参数

    • s (str): 需要转义的字符串
  • 返回

    • str

def deep_update(mapping, *updating_mappings)

  • 说明: 深度更新合并字典

  • 参数

    • mapping (dict[K, Any])

    • *updating_mappings (dict[K, Any])

  • 返回

    • dict[K, Any]

def lenient_issubclass(cls, class_or_tuple)

  • 说明: 检查 cls 是否是 class_or_tuple 中的一个类型子类并忽略类型错误。

  • 参数

    • cls (Any)

    • class_or_tuple (type[Any] | tuple[type[Any], ...])

  • 返回

    • bool

def generic_check_issubclass(cls, class_or_tuple)

  • 说明

    检查 cls 是否是 class_or_tuple 中的一个类型子类。

    特别的:

    • 如果 cls 是 typing.Uniontypes.UnionType 类型, 则会检查其中的所有类型是否是 class_or_tuple 中一个类型的子类或 None。
    • 如果 cls 是 typing.Literal 类型, 则会检查其中的所有值是否是 class_or_tuple 中一个类型的实例。
    • 如果 cls 是 typing.TypeVar 类型, 则会检查其 __bound____constraints__ 是否是 class_or_tuple 中一个类型的子类或 None。
  • 参数

    • cls (Any)

    • class_or_tuple (type[Any] | tuple[type[Any], ...])

  • 返回

    • bool

def type_is_complex(type_)

  • 说明: 检查 type_ 是否是复杂类型

  • 参数

    • type_ (type[Any])
  • 返回

    • bool

def is_coroutine_callable(call)

  • 说明: 检查 call 是否是一个 callable 协程函数

  • 参数

    • call ((...) -> Any)
  • 返回

    • bool

def is_gen_callable(call)

  • 说明: 检查 call 是否是一个生成器函数

  • 参数

    • call ((...) -> Any)
  • 返回

    • bool

def is_async_gen_callable(call)

  • 说明: 检查 call 是否是一个异步生成器函数

  • 参数

    • call ((...) -> Any)
  • 返回

    • bool

def run_sync(call)

  • 说明: 一个用于包装 sync function 为 async function 的装饰器

  • 参数

    • call ((P) -> R): 被装饰的同步函数
  • 返回

    • (P) -> Coroutine[None, None, R]

def run_sync_ctx_manager(cm)

  • 说明: 一个用于包装 sync context manager 为 async context manager 的执行函数

  • 参数

    • cm (AbstractContextManager[T])
  • 返回

    • AsyncGenerator[T, None]

async def run_coro_with_catch(coro, exc, return_on_err=None)

  • 说明: 运行协程并当遇到指定异常时返回指定值。

  • 重载

    1. (coro, exc, return_on_err=None) -> T | None

    • 参数

      • coro (Coroutine[Any, Any, T])

      • exc (tuple[type[Exception], ...])

      • return_on_err (None)

    • 返回

      • T | None

    2. (coro, exc, return_on_err) -> T | R

    • 参数

      • coro (Coroutine[Any, Any, T])

      • exc (tuple[type[Exception], ...])

      • return_on_err (R)

    • 返回

      • T | R
  • 参数

    • coro: 要运行的协程

    • exc: 要捕获的异常

    • return_on_err: 当发生异常时返回的值

  • 返回

    协程的返回值或发生异常时的指定值

async def run_coro_with_shield(coro)

  • 说明: 运行协程并在取消时屏蔽取消异常。

  • 参数

    • coro (Coroutine[Any, Any, T]): 要运行的协程
  • 返回

    • T: 协程的返回值

def flatten_exception_group(exc_group)

  • 参数

    • exc_group (BaseExceptionGroup[E])
  • 返回

    • Generator[E, None, None]

def get_name(obj)

  • 说明: 获取对象的名称

  • 参数

    • obj (Any)
  • 返回

    • str

def path_to_module_name(path)

  • 说明: 转换路径为模块名

  • 参数

    • path (Path)
  • 返回

    • str

def resolve_dot_notation(obj_str, default_attr, default_prefix=None)

  • 说明: 解析并导入点分表示法的对象

  • 参数

    • obj_str (str)

    • default_attr (str)

    • default_prefix (str | None)

  • 返回

    • Any

class classproperty(func)

  • 说明: 类属性装饰器

  • 参数

    • func ((Any) -> T)

class DataclassEncoder(<auto>)

  • 说明: 可以序列化 Message(List[Dataclass]) 的 JSONEncoder

  • 参数

    auto

method default(o)

  • 参数

    • o
  • 返回

    • untyped

def logger_wrapper(logger_name)

  • 说明: 用于打印 adapter 的日志。

  • 参数

    • logger_name (str): adapter 的名称
  • 返回

    • untyped: 日志记录函数

      日志记录函数的参数:

      • level: 日志等级
      • message: 日志信息
      • exception: 异常信息