use serde_json::json;
use tracing::{error, info};
use crate::{api::napcat::napcat_request, config::AppConfig, model::message::Message};
pub async fn send_group_message(config: &AppConfig, group_id: u64, message: Message) {
let body = json!({
"group_id": group_id,
"message": message,
});
let res = napcat_request(config, "/send_group_msg", &body).await;
match res {
Ok(response) => {
info!("Group message sent successfully: {response:?}");
}
Err(err) => {
error!("Error sending group message: {err:?}");
}
}
}
pub async fn send_private_message(config: &AppConfig, to: u64, message: Message) {
let body = json!({
"user_id": to,
"message": message,
});
let res = napcat_request(config, "/send_private_msg", &body).await;
match res {
Ok(response) => {
info!("Private message sent successfully: {response:?}");
}
Err(err) => {
error!("Error sending private message: {err:?}");
}
}
}
#[cfg(test)]
mod tests {
use super::*;
use crate::model::message::segment::MessageSegment;
#[tokio::test]
#[ignore = "Requires an API server in internal network"]
async fn test_send_group_message() {
let config = AppConfig::init().expect("Failed to load config");
println!("Loaded config");
let message = vec![
MessageSegment::At {
qq: "46595749".to_string(),
},
MessageSegment::Text {
text: " Ich habe keine Ahnung.".to_string(),
},
];
send_group_message(&config, 738943282, message).await;
}
#[tokio::test]
#[ignore = "Requires an API server in internal network"]
async fn test_send_private_message() {
let config = AppConfig::init().expect("Failed to load config");
println!("Loaded config");
let message = vec![MessageSegment::Text {
text: "Hello, user!".to_string(),
}];
send_private_message(&config, 46595749, message).await;
}
}