# 内置依赖项 在不同的事件(或周期中),可用的依赖项可能会有所不同。例如,当你在一个命令方法中可以使用 `BotContext` 依赖,但在一个路由方法中却不能使用。 你也可以选择直接查看 `src/ZM/Container/ContainerRegistrant.php` 文件,大部分依赖都在该处定义。 GitHub 链接:https://github.com/zhamao-robot/zhamao-framework/blob/main/src/ZM/Container/ContainerRegistrant.php 本页面列出在不同事件中可用的依赖项。 ## 全局依赖 在任何事件(或任何支持依赖注入的地方)中,你都可以使用以下依赖项: - `Psr\Log\LoggerInterface`:日志记录器(可使用类的别名 `LoggerInterface`) - `Psr\Container\ContainerInterface`:容器(可使用别名 `ContainerInterface`) - `DI\Container`:容器,区别在于可以使用 `set` 方法来动态设置依赖项,与 `container` 函数返回的实例相同 - `ZM\Config\ZMConfig`:配置,与 `config` 函数返回的实例相同(可使用别名 `ZMConfig`) - ... ## OneBot 事件 在 OneBot 事件(`@BotEvent`)中,你可以使用以下依赖项: - `OneBot\V12\Object\OneBotEvent`:当前事件的实例(可使用别名 `OneBotEvent`) - `ZM\Context\BotContext`:当前事件的上下文,可使用别名 `BotContext`,部分事件可能不可用(要求传入的事件存在 `platform` 字段) ## OneBot 动作响应 在 OneBot 动作响应(`@BotActionResponse`)中,你可以使用以下依赖项: - `OneBot\V12\Object\ActionResponse`:当前动作响应的实例(可使用别名 `ActionResponse`) ## HTTP 请求事件(路由事件) 在 HTTP 请求事件(`@Route`)中,你可以使用以下依赖项: - `OneBot\Driver\Event\Http\HttpRequestEvent`:当前事件的实例(可使用别名 `HttpRequestEvent`) - `Psr\Http\Message\ServerRequestInterface`:当前请求的实例(可使用别名 `ServerRequestInterface`) ## WebSocket 连接事件 在 WebSocket 连接事件(`@BindEvent(WebSocketOpenEvent::class)`)中,你可以使用以下依赖项: - `OneBot\Driver\Event\WebSocket\WebSocketOpenEvent`:当前事件的实例(可使用别名 `WebSocketOpenEvent`) ## WebSocket 消息事件 在 WebSocket 消息事件(`@BindEvent(WebSocketMessageEvent::class)`)中,你可以使用以下依赖项: - `OneBot\Driver\Event\WebSocket\WebSocketMessageEvent`:当前事件的实例(可使用别名 `WebSocketMessageEvent`) - `Choir\WebSocket\FrameInterface`:当前消息(帧)的实例(可使用别名 `FrameInterface`) ## WebSocket 关闭事件 在 WebSocket 关闭事件(`@BindEvent(WebSocketCloseEvent::class)`)中,你可以使用以下依赖项: - `OneBot\Driver\Event\WebSocket\WebSocketCloseEvent`:当前事件的实例(可使用别名 `WebSocketCloseEvent`)