NoneBot.permission 模块 | NoneBot
Description: 跨平台 Python 异步 QQ 机器人框架

# # NoneBot.permission 模块

## # 权限

每个 `Matcher` 拥有一个 `Permission` ，其中是 异步 `PermissionChecker` 的集合，只要有一个 `PermissionChecker` 检查结果为 `True` 时就会继续运行。

提示

`PermissionChecker` 既可以是 async function 也可以是 sync function

## # class `Permission`

基类：`object`

- 说明

  `Matcher` 规则类，当事件传递时，在 `Matcher` 运行前进行检查。

- 示例

    Permission(async_function) | sync_function
    # 等价于
    from nonebot.utils import run_sync
    Permission(async_function, run_sync(sync_function))

1
2
3
4

### # `__init__(*checkers)`

- 参数

  - `*checkers: Callable[[Bot, Event], Awaitable[bool]]`: 异步 PermissionChecker

### # `checkers`

- 说明

  存储 `PermissionChecker`

- 类型

  - `Set[Callable[[Bot, Event], Awaitable[bool]]]`

### # async `__call__(bot, event)`

- 说明

  检查是否满足某个权限

- 参数

  - `bot: Bot`: Bot 对象

  - `event: Event`: Event 对象

- 返回

  - `bool`

## # `MESSAGE`

- 说明: 匹配任意 `message` 类型事件，仅在需要同时捕获不同类型事件时使用。优先使用 message type 的 Matcher。

## # `NOTICE`

- 说明: 匹配任意 `notice` 类型事件，仅在需要同时捕获不同类型事件时使用。优先使用 notice type 的 Matcher。

## # `REQUEST`

- 说明: 匹配任意 `request` 类型事件，仅在需要同时捕获不同类型事件时使用。优先使用 request type 的 Matcher。

## # `METAEVENT`

- 说明: 匹配任意 `meta_event` 类型事件，仅在需要同时捕获不同类型事件时使用。优先使用 meta_event type 的 Matcher。

## # `USER(*user, perm=None)`

- 说明

  `event` 的 `session_id` 在白名单内且满足 perm

- 参数

  - `*user: str`: 白名单

  - `perm: Optional[Permission]`: 需要同时满足的权限

## # `SUPERUSER`

- 说明: 匹配任意超级用户消息类型事件

Contents

- 权限
- class Permission
  - __init__(*checkers)
  - checkers
  - async __call__(bot, event)
- MESSAGE
- NOTICE
- REQUEST
- METAEVENT
- USER(*user, perm=None)
- SUPERUSER