1
0
mirror of https://git.ngram.ca/OpenJam/rc-servers synced 2026-08-23 23:08:52 +00:00
Files
ojrc/rc_core/src/persist/chat.rs
2025-09-14 12:23:46 -04:00

61 lines
1.2 KiB
Rust

use serde::{Serialize, Deserialize};
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct ChatConfig {
#[serde(default = "default_pub_channs")]
pub public_channels: Vec<String>,
#[serde(default = "default_command_chann")]
pub command_channel: String,
pub commands: Vec<ChatCommand>,
#[serde(default = "default_selected_chann")]
pub default_channel: String,
#[serde(default = "default_true")]
pub can_create_channels: bool,
}
#[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,
Version,
Help,
}
fn default_pub_channs() -> Vec<String> {
vec![
"main".to_owned(),
"sys".to_owned(),
"jam_club".to_owned(),
]
}
fn default_command_chann() -> String {
"sys".to_owned()
}
fn default_selected_chann() -> String {
"jam_club".to_owned()
}
fn default_true() -> bool {
true
}