botrs 0.13.0

A Rust QQ Bot framework based on QQ Guild Bot API
Documentation
# 调用 QQ 开放接口

下面这些 demo 展示了 `BotApi` 在消息收发之外的常见用法。每个 demo 都是自包含的 event handler,通过聊天命令触发 API 调用。

| Demo                                                                                                                  | 涉及 API                                                                                                                              |
|-----------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------|
| [`demo_api_permission.rs`]https://github.com/YinMo19/botrs/blob/main/examples/demo_api_permission.rs                | `BotApi::get_api_permissions``BotApi::post_permission_demand``APIPermissionDemandIdentify`                                          |
| [`demo_announce.rs`]https://github.com/YinMo19/botrs/blob/main/examples/demo_announce.rs                            | `BotApi::create_announce``BotApi::delete_announce``BotApi::create_recommend_announce``RecommendChannel``AnnouncesType`         |
| [`demo_schedule.rs`]https://github.com/YinMo19/botrs/blob/main/examples/demo_schedule.rs                            | `BotApi::create_schedule``get_schedule``update_schedule``delete_schedule``RemindType`                                          |
| [`demo_pins_message.rs`]https://github.com/YinMo19/botrs/blob/main/examples/demo_pins_message.rs                    | `BotApi::get_pins``BotApi::put_pin``BotApi::delete_pin`                                                                            |
| [`demo_get_reaction_users.rs`]https://github.com/YinMo19/botrs/blob/main/examples/demo_get_reaction_users.rs        | `BotApi::get_reaction_users``EmojiType::System`,按 `cookie` 字段翻页                                                                |
| [`demo_recall.rs`]https://github.com/YinMo19/botrs/blob/main/examples/demo_recall.rs                                | `Context::recall_message`(也可走 `BotApi::recall_message`|

## 套路

所有 REST 调用都可以直接写在 `ctx` 上,因为 `Context` 会解引用到 `BotApi`;token 存在 `BotApi` 内部。错误以 `botrs::BotError` 返回,框架不会自动重试,请就地处理。

```rust
// demo_recall.rs —— 发完立即撤回
let resp = message.reply(&ctx, "this will vanish").await?;
if let Some(message_id) = resp.id {
    ctx.recall_message(channel_id, &message_id, /* hidetip */ true).await?;
}
```

对于 `get_reaction_users` 这类分页 API,按 demo 里的写法用返回的 `cookie` 与 `is_end` 自行驱动循环。

## 参见

- 指南:[`docs/zh/guide/api-client.md`]../guide/api-client.md
- 可用方法的权威来源:`src/api.rs``BotApi` 的 impl)
- 上面表格里列出的 `examples/` demo 路径