注意：
2. 一个插件，可以没有事件处理器，甚至可以没有任何有效的逻辑。重点是：可以通过各种 api 和钩子挂载相应的处理逻辑。
3. 诸如机器人帐号信心获取、基本处理等一些功能，可以做成内置插件
4. 权限控制重点是对外的可读写、可调用

提示：
1. 异步例程必须预期 CancelledError
2. 各核心模块必须设置 ready_signal
3. 注意方法、资源竞争，需要加锁的情况
4. 没有必要等待的异步任务，应该让其脱离等待，但内部必须有完备的异常处理
5. 牢记原则：内部捕获 CancelledError, 外部捕获 TimeoutError，其中一级捕获即可。但如果没有建立等待关系，
异常无法向外层传递
6. 不能直接 await 多个对象，一个执行完毕，则会退出

- 插件
    - 插件元信息
    - 插件公共空间（权限控制）
    - 事件处理器
        - 常用流程控制方法（中途回复、提前终止、定时回调、运行后回调）
        - 处理器公共空间（权限控制）
        - session 公共空间（权限控制）
        - 同步锁控制（完全包裹、自定义粒度控制两种）
    - 插件交互（权限认证）
    - 插件视图（根据权限不同生成不同的视图）
    - 上层 api、钩子的绑定

- bot daemon
    - bot 运行时信息
    - 核心组件字典
    - bot 加载启动、关闭方法（关闭方法捕获异常）
    - bot 各阶段钩子
    - bot 各对象组件、各种方法的 api（方法如定时任务）
    - bot 各阶段的钩子


钩子：
    AfterPLuginsLoad
    BeforeBotLink, AfterBotLink
    AfterEventRecv, BeforeActionSend
    AfterEventMatch, AfterEventVerify

# FINAL TODO：
1. 检查和补全所有注释
2. 检查所有变量名，确保简洁、直观
3. 检查所有需要内部异常的位置，并重新命名异常

