diff --git a/src/bot.rs b/src/bot.rs index f90089b..4fe993d 100644 --- a/src/bot.rs +++ b/src/bot.rs @@ -550,12 +550,19 @@ pub fn c_bot_feed(c: &Context) { let mut link = "https://card.syui.ai/".to_owned() + &handlev; let s = 0; let mut e = link.chars().count(); - - let mut prompt_sub = "".to_string(); + let com = vec[0].trim().to_string(); - let prompt = vec[1..].join(" "); - if vec.len() > 1 { - prompt_sub = vec[2..].join(" "); + let mut prompt = "".to_string(); + let mut prompt_sub = "".to_string(); + let mut prompt_chat = "".to_string(); + + if com == "@ai" { + prompt_chat = vec[1..].join(" "); + } else { + prompt = vec[1..].join(" "); + if vec.len() > 1 { + prompt_sub = vec[2..].join(" "); + } } if prompt.is_empty() == false || com.is_empty() == false { @@ -924,6 +931,19 @@ pub fn c_bot_feed(c: &Context) { println!("{}", str_rep); w_cid(cid.to_string(), log_file(&"n1"), true); } + } else if com == "@ai" { + let str_openai = openai::post_request(prompt_chat.to_string()).await; + let text_limit = c_char(str_openai); + let str_rep = reply::post_request( + text_limit.to_string(), + cid.to_string(), + uri.to_string(), + cid_root.to_string(), + uri_root.to_string(), + ) + .await; + println!("{}", str_rep); + w_cid(cid.to_string(), log_file(&"n1"), true); } println!("---"); } diff --git a/src/delete_record.rs b/src/delete_record.rs new file mode 100644 index 0000000..1f61212 --- /dev/null +++ b/src/delete_record.rs @@ -0,0 +1,33 @@ +extern crate reqwest; +use crate::data_toml; +use crate::data_refresh; +use crate::url; +use serde_json::json; + +pub async fn post_request(rkey: String, col: String) -> String { + let token = data_refresh(&"access"); + //let did = data_toml(&"did"); + let handle = data_toml(&"handle"); + + let url = url(&"record_delete"); + + let post = Some(json!({ + "repo": handle.to_string(), + "rkey": rkey.to_string(), + "collection": col.to_string() + })); + + let client = reqwest::Client::new(); + let res = client + .post(url) + .json(&post) + .header("Authorization", "Bearer ".to_owned() + &token) + .send() + .await + .unwrap() + .text() + .await + .unwrap(); + + return res; +} diff --git a/src/main.rs b/src/main.rs index da4869d..6d20abd 100644 --- a/src/main.rs +++ b/src/main.rs @@ -39,6 +39,7 @@ pub mod session; pub mod timeline_author; pub mod token; pub mod feed_get; +pub mod delete_record; fn main() { let args: Vec = env::args().collect(); @@ -125,6 +126,16 @@ fn main() { .alias("l"), ) ) + .command( + Command::new("delete") + .description("d ") + .alias("d") + .action(delete) + .flag( + Flag::new("col", FlagType::String) + .alias("c"), + ) + ) .command( Command::new("like") .description("like -u ") @@ -415,6 +426,19 @@ fn post(c: &Context) { return res; } +fn delete(c: &Context) { + refresh(c); + let m = c.args[0].to_string(); + let h = async { + if let Ok(col) = c.string_flag("col") { + let str = delete_record::post_request(m.to_string(), col); + println!("{}", str.await); + } + }; + let res = tokio::runtime::Runtime::new().unwrap().block_on(h); + return res; +} + fn like(c: &Context) { refresh(c); let m = c.args[0].to_string();