mirror of
https://github.com/nonebot/nonebot2.git
synced 2025-07-28 00:31:14 +00:00
Update docs
This commit is contained in:
@ -201,7 +201,3 @@ async def _(session: CommandSession):
|
||||
```
|
||||
|
||||
观察看看有什么不同,以及它的回复是否符合我们对代码的理解。如果成功的话,此时你已经完成了一个**可交互的**天气查询命令的雏形,只需要再接入天气 API 就可以真正投入使用了!
|
||||
|
||||
## 获取对话细节
|
||||
|
||||
如果我们需要获取对话中更多的细节,如发送者的群名片、群专属头衔、性别等参数,可以通过 `session.ctx` 获取原始的数据。数据格式详见[CQHTTP文档](https://cqhttp.cc/docs/#/Post?id=%E4%BA%8B%E4%BB%B6%E5%88%97%E8%A1%A8)。
|
||||
|
@ -1,10 +1,18 @@
|
||||
# 主动调用 CQHTTP 接口
|
||||
# CQHTTP 事件和 API
|
||||
|
||||
到目前为止,我们都在调用 `CommandSession` 类的 `send()` 方法,而这个方法只能回复给消息的发送方,不能手动指定发送者,因此当我们需要实现将收到的消息经过处理后转发给另一个接收方这样的功能时,这个方法就用不了了。
|
||||
到目前为止,我们都在使用 NoneBot 显式提供的接口,但实际上 CQHTTP 插件还提供了更多的事件数据和 API,可能利用这些它们实现更加自由的逻辑。
|
||||
|
||||
幸运的是,`NoneBot` 类是继承自 [python-aiocqhttp] 的 `CQHttp` 类的,而这个类实现了一个 `__getattr__()` 方法,由此提供了直接通过 bot 对象调用 CQHTTP 的 API 的能力。
|
||||
## 事件数据
|
||||
|
||||
[python-aiocqhttp]: https://github.com/richardchien/python-aiocqhttp
|
||||
在 [发生了什么?](./whats-happened.md) 中我们提到,收到 酷Q 事件后,CQHTTP 通过反向 WebSocket 给 NoneBot 发送事件数据。这些数据被 NoneBot 放在了 `session.ctx` 中,是一个字典,你可以通过断点调试或打印等方式查看它的内容,其中的字段名和含义见 CQHTTP 的 [事件列表](https://cqhttp.cc/docs/#/Post?id=事件列表) 中的「上报数据」。
|
||||
|
||||
## API 调用
|
||||
|
||||
前面我们已经多次调用 `CommandSession` 类的 `send()` 方法,而这个方法只能回复给消息的发送方,不能手动指定发送者,因此当我们需要实现将收到的消息经过处理后转发给另一个接收方这样的功能时,这个方法就用不了了。
|
||||
|
||||
幸运的是,`NoneBot` 类是继承自 [python-aiocqhttp] 的 `CQHttp` 类的,而这个类实现了 `__getattr__()` 魔术方法,由此提供了直接通过 bot 对象调用 CQHTTP 的 API 的能力。
|
||||
|
||||
[python-aiocqhttp]: https://github.com/cqmoe/python-aiocqhttp
|
||||
|
||||
::: tip 提示
|
||||
如果你在使用 HTTP 通信,要调用 CQHTTP API 要在 `config.py` 中添加:
|
Reference in New Issue
Block a user