2025-04-14 21:17:41 -04:00
|
|
|
use serde::{Serialize, Deserialize};
|
|
|
|
|
|
|
|
|
|
#[derive(Serialize, Deserialize, Clone, Debug)]
|
|
|
|
|
pub struct ChatConfig {
|
|
|
|
|
#[serde(default = "default_pub_channs")]
|
|
|
|
|
pub public_channels: Vec<String>,
|
2025-05-23 16:46:12 -04:00
|
|
|
#[serde(default = "default_command_chann")]
|
|
|
|
|
pub command_channel: String,
|
|
|
|
|
pub commands: Vec<ChatCommand>,
|
2025-08-13 22:17:24 -04:00
|
|
|
#[serde(default = "default_selected_chann")]
|
|
|
|
|
pub default_channel: String,
|
|
|
|
|
#[serde(default = "default_true")]
|
|
|
|
|
pub can_create_channels: bool,
|
2025-04-14 21:17:41 -04:00
|
|
|
}
|
|
|
|
|
|
2025-05-23 16:46:12 -04:00
|
|
|
#[derive(Serialize, Deserialize, Clone, Debug)]
|
|
|
|
|
pub struct ChatCommand {
|
|
|
|
|
pub regex: String,
|
|
|
|
|
pub op: ChatOperation,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[derive(Serialize, Deserialize, Clone, Debug)]
|
|
|
|
|
#[serde(tag = "type")]
|
|
|
|
|
pub enum ChatOperation {
|
|
|
|
|
BuiltIn(BuiltInChatOperation),
|
|
|
|
|
Custom,
|
|
|
|
|
#[serde(alias = "No-op")]
|
|
|
|
|
Nop,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[derive(Serialize, Deserialize, Clone, Debug)]
|
|
|
|
|
#[serde(tag = "built_in")]
|
|
|
|
|
pub enum BuiltInChatOperation {
|
|
|
|
|
OnlineUsers,
|
|
|
|
|
TotalUsers,
|
2025-09-14 12:23:37 -04:00
|
|
|
Version,
|
2025-09-09 18:15:54 -04:00
|
|
|
Help,
|
2025-05-23 16:46:12 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2025-04-14 21:17:41 -04:00
|
|
|
fn default_pub_channs() -> Vec<String> {
|
|
|
|
|
vec![
|
|
|
|
|
"main".to_owned(),
|
|
|
|
|
"sys".to_owned(),
|
2025-08-13 22:17:24 -04:00
|
|
|
"jam_club".to_owned(),
|
2025-04-14 21:17:41 -04:00
|
|
|
]
|
|
|
|
|
}
|
2025-05-23 16:46:12 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
fn default_command_chann() -> String {
|
|
|
|
|
"sys".to_owned()
|
|
|
|
|
}
|
2025-08-13 22:17:24 -04:00
|
|
|
|
|
|
|
|
fn default_selected_chann() -> String {
|
|
|
|
|
"jam_club".to_owned()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn default_true() -> bool {
|
|
|
|
|
true
|
|
|
|
|
}
|