1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Serialize, Deserialize)]
4pub struct Thread {
5 pub title: String,
6 pub tags: Vec<String>,
7 pub items: Vec<ScriptItem>, }
9
10#[derive(Debug, Serialize, Deserialize, Clone)]
11pub struct Message {
12 pub avatar: String,
13 pub text: Option<String>,
14 pub file: Option<String>, pub attachment: Option<String>, pub children: Vec<Message>,
17 pub branches: Vec<Vec<Message>>,
18}
19
20#[derive(Debug, Serialize, Deserialize)]
21pub enum ScriptItem {
22 Message(Message), Command(Command), }
25
26#[derive(Debug, Serialize, Deserialize)]
27pub struct Command {
28 pub name: String, pub args: Vec<String>, pub line_number: usize, }