diff --git a/docs/api.md b/docs/api.md index f0bdb53f..2d219fbe 100644 --- a/docs/api.md +++ b/docs/api.md @@ -1838,6 +1838,22 @@ sidebar: auto 获取当前事件上下文的 `user_id` 字段。 +#### _readonly property_ `self_id` + +- **类型:** `int` + +- **说明:** + + 当前 session 对应的 QQ 机器人账号,在多个机器人账号使用同一个 NoneBot 后端时可用于区分当前收到消息或事件的是哪一个机器人。 + + 等价于 `session.ctx['self_id']`。 + +- **用法:** + + ```python + await bot.send_private_msg(self_id=session.self_id, user_id=12345678, message='Hello') + ``` + #### _coroutine_ `send(message, *, at_sender=False, ensure_private=False, ignore_failure=True, **kwargs)` - **说明:** @@ -1853,7 +1869,7 @@ sidebar: auto - **返回:** - - `Any`: 返回 CQHTTP 插件发送消息接口的调用返回值,具体见 aiocqhttp 的 [API 调用](https://github.com/richardchien/python-aiocqhttp#api-%E8%B0%83%E7%94%A8) + - `Any` : 返回 CQHTTP 插件发送消息接口的调用返回值,具体见 aiocqhttp 的 [API 调用](https://github.com/richardchien/python-aiocqhttp#api-%E8%B0%83%E7%94%A8) - **异常:** @@ -1980,7 +1996,7 @@ async def _(session): - **返回:** - - `Any`: 返回 CQHTTP 插件发送消息接口的调用返回值,具体见 aiocqhttp 的 [API 调用](https://github.com/richardchien/python-aiocqhttp#api-%E8%B0%83%E7%94%A8) + - `Any` : 返回 CQHTTP 插件发送消息接口的调用返回值,具体见 aiocqhttp 的 [API 调用](https://github.com/richardchien/python-aiocqhttp#api-%E8%B0%83%E7%94%A8) - **异常:** diff --git a/docs/changelog.md b/docs/changelog.md index 44675f32..2f1e32b9 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -9,6 +9,7 @@ sidebar: auto - 插件模块现可通过 `__plugin_name__` 和 `__plugin_usage__` 来分别指定插件名称和插件使用方法(两者均不强制,若不设置则默认为 None) - 新增 `none.get_loaded_plugins()` 函数用于获取所有已加载的插件集合 - `BaseSession.send()` 方法和 `none.helpers.send()` 函数现返回 API 调用返回值(即 CQHTTP 插件的返回结果的 `data` 字段) +- `BaseSession` 新增 `self_id` 属性,可通过 `session.self_id` 代替 `session.ctx['self_id']` 来获取当前机器人账号 ## v1.0.0 diff --git a/docs/guide/calling-cqhttp-api.md b/docs/guide/calling-cqhttp-api.md index 75584f19..49c47445 100644 --- a/docs/guide/calling-cqhttp-api.md +++ b/docs/guide/calling-cqhttp-api.md @@ -12,11 +12,12 @@ await bot.send_private_msg(user_id=12345678, message='你好~') 这里,`send_private_msg` 实际上对应 CQHTTP 的 [`/send_private_msg` 接口](https://cqhttp.cc/docs/#/API?id=send_private_msg-%E5%8F%91%E9%80%81%E7%A7%81%E8%81%8A%E6%B6%88%E6%81%AF),其它接口同理。 -通过这种方式调用 API 时,需要注意两点: +通过这种方式调用 API 时,需要注意下面几点: 1. **所有参数必须为命名参数(keyword argument)**,否则无法正确调用 -2. 这种调用全都是异步调用,因此需要适当 `await` -2. **调用失败时(没有权限、对方不是好友、无 API 连接等)可能抛出 `nonebot.CQHttpError` 异常**,注意捕获 +2. 这种调用**全都是异步调用**,因此需要适当 `await` +3. **调用失败时(没有权限、对方不是好友、无 API 连接等)可能抛出 `nonebot.CQHttpError` 异常**,注意捕获 +4. **当多个机器人使用同一个 NoneBot 后端时**,可能需要加上参数 `self_id=<机器人QQ号>`,例如 `await bot.get_group_list(self_id=session.ctx['self_id'])` 另外,在需要动态性的场合,除了使用 `getattr()` 方法外,还可以直接调用 `bot.call_action()` 方法,传入 `action` 和 `params` 即可,例如上例中,`action` 为 `'send_private_msg'`,`params` 为 `{'user_id': 12345678, 'message': '你好~'}`。