Walle-core 是一个 Rust OneBot Lib ( 不同于 libonebot 他同样可以应用于 OneBot 应用端 )
Walle 的名字来源于机械总动员的 WALL-E ( A Rusty Bot )
仅展示最小实例
```rust use std::sync::Arc; use wallecore::action::Action; use wallecore::alt::TracingHandler; use wallecore::config::ImplConfig; use wallecore::event::Event; use wallecore::obc::ImplOBC; use wallecore::resp::Resp; use walle_core::OneBot;
async fn main() {
tracingsubscriber::fmt::init();
let ob = Arc::new(OneBot::new12(
TracingHandler::
```rust use std::sync::Arc; use wallecore::action::Action; use wallecore::alt::TracingHandler; use wallecore::config::AppConfig; use wallecore::event::Event; use wallecore::obc::AppOBC; use wallecore::resp::Resp; use walle_core::OneBot;
async fn main() {
tracingsubscriber::fmt::init();
let ob = Arc::new(OneBot::new12(
AppOBC::new(),
TracingHandler::
```
walle_core::event::Event 为序列化使用标准类型,该模型仅确保 event 基础模型各字段。
wallecore::event::BaseEvent\
定义一个 Event 模型的扩展你需要实现以下 trait:
或者直接使用本 crate 提供的 OneBot 与 PushToMap 宏
定义一个 type 级别扩展字段( ob12 理论上不支持该级别扩展):
```rust
pub struct Message { pub messageid: String, pub message: crate::message::Message, pub altmessage: String, pub user_id: String, } ```
或者定义一个 detail_type 级别扩展字段( ob12 理论上不支持该级别扩展)
```rust
pub struct Group_ { pub group_id: String, } ```
walle_core::action::Action 为序列化使用标准类型,该模型仅确保 action 与 params 字段存在且类型正确
定义一个扩展 Action 模型你需要实现以下 trait:
或者直接使用本 crate 提供的 OneBot 与 PushToMap 宏
```rust
pub struct GetFile { pub file_id: String, pub ty: String, } ```
或者
```rust
pub struct UploadFile_ {
pub ty: String,
pub name: String,
pub url: Option
想要同时支持多种 Action ? 没问题!
```rust
pub enum MyAction { GetUserInfo(GetUserInfo), GetGroupInfo { group_id: String }, } ```
walle_core::resp::Resp 为序列化使用标准类型
同时本库还提供了 RespError 用于构造失败的 Resp,可以使用 \ 定义一个 Resp 模型你需要实现以下 trait: 当然还是可以使用 OneBot 与 PushToMap 宏 ```rust pub struct Status {
pub good: bool,
pub online: bool,
}
``` 同时实现了 Value 的结构体可以作为其他宏的字段使用。 基本与 Action 模型相同,唯一的不同是序列化使用的模型是 walle_core::message::MessageSegment,该模型同时也是一个Value,因此可以从 Event 或 Action 中获取。 ```rust pub struct Text {
pub text: String,
}
``` 由于与 Rust 保留字冲突,宏将会对以下字段自动转义:
[derive(Debug, Clone, PartialEq, Eq, PushToMap, OneBot)]
[value]
MessageSegment
[derive(Debug, Clone, PartialEq, Eq, PushToMap, OneBot)]
[segment]
Notice
"type"
-> ty
"impl"
-> implt