use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
pub struct Thread {
pub title: String,
pub tags: Vec<String>,
pub items: Vec<ScriptItem>, }
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct Message {
pub avatar: String,
pub text: Option<String>,
pub file: Option<String>, pub attachment: Option<String>, pub children: Vec<Message>,
pub branches: Vec<Vec<Message>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub enum ScriptItem {
Message(Message), Command(Command), }
#[derive(Debug, Serialize, Deserialize)]
pub struct Command {
pub name: String, pub args: Vec<String>, pub line_number: usize, }