2024-01-24 18:14:50 +08:00
|
|
|
use std::env;
|
|
|
|
use std::fs;
|
|
|
|
|
|
|
|
use serde::Deserialize;
|
2024-02-20 17:15:14 +08:00
|
|
|
use toml::from_str;
|
2024-01-24 18:14:50 +08:00
|
|
|
|
2024-02-18 22:43:54 +08:00
|
|
|
/// Icalingua bot 的配置
|
2024-02-20 17:47:45 +08:00
|
|
|
#[derive(Debug, Clone, Deserialize)]
|
2024-01-24 18:14:50 +08:00
|
|
|
pub struct IcaConfig {
|
|
|
|
/// icalingua 私钥
|
|
|
|
pub private_key: String,
|
|
|
|
/// icalingua 服务器地址
|
|
|
|
pub host: String,
|
|
|
|
/// bot 的 qq
|
|
|
|
pub self_id: u64,
|
|
|
|
/// 提醒的房间
|
|
|
|
pub notice_room: Vec<i64>,
|
|
|
|
/// 是否提醒
|
2024-02-20 18:22:59 +08:00
|
|
|
pub notice_start: bool,
|
|
|
|
/// 管理员列表
|
|
|
|
pub admin_list: Vec<i64>,
|
2024-02-22 23:17:20 +08:00
|
|
|
/// 过滤列表
|
|
|
|
pub filter_list: Vec<i64>,
|
2024-03-12 00:16:12 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
/// 主配置
|
|
|
|
#[derive(Debug, Clone, Deserialize)]
|
|
|
|
pub struct BotConfig {
|
2024-03-12 00:47:00 +08:00
|
|
|
/// 是否启用 icalingua
|
|
|
|
pub enable_ica: bool,
|
2024-03-12 00:16:12 +08:00
|
|
|
/// Ica 配置
|
|
|
|
pub ica: Option<IcaConfig>,
|
|
|
|
/// Matrix 配置
|
|
|
|
// TODO: MatrixConfig
|
2024-01-24 18:14:50 +08:00
|
|
|
/// Python 插件路径
|
2024-02-20 20:11:25 +08:00
|
|
|
pub py_plugin_path: Option<String>,
|
2024-02-25 18:49:39 +08:00
|
|
|
/// Python 配置文件路径
|
|
|
|
pub py_config_path: Option<String>,
|
2024-01-24 18:14:50 +08:00
|
|
|
}
|
|
|
|
|
2024-03-12 00:16:12 +08:00
|
|
|
impl BotConfig {
|
2024-01-24 18:14:50 +08:00
|
|
|
pub fn new_from_path(config_file_path: String) -> Self {
|
|
|
|
// try read config from file
|
|
|
|
let config = fs::read_to_string(&config_file_path).expect("Failed to read config file");
|
2024-02-20 17:15:14 +08:00
|
|
|
let ret: Self = from_str(&config)
|
2024-01-24 18:14:50 +08:00
|
|
|
.expect(format!("Failed to parse config file {}", &config_file_path).as_str());
|
|
|
|
ret
|
|
|
|
}
|
|
|
|
pub fn new_from_cli() -> Self {
|
|
|
|
let config_file_path = env::args().nth(1).expect("No config path given");
|
|
|
|
Self::new_from_path(config_file_path)
|
|
|
|
}
|
2024-03-12 00:16:12 +08:00
|
|
|
|
|
|
|
pub fn ica(&self) -> IcaConfig { self.ica.clone().expect("No ica config found") }
|
2024-01-24 18:14:50 +08:00
|
|
|
}
|