fix
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 18s

This commit is contained in:
2025-12-13 10:21:11 +09:00
parent 053d0e2b26
commit bd20f7af19
7 changed files with 114 additions and 55 deletions

Submodule .config/ai/scpt deleted from 7a4d642e41

View File

1
.gitignore vendored
View File

@@ -17,3 +17,4 @@ pnpm-lock.yaml
**Cargo.lock **Cargo.lock
*/target/ */target/
*/**/*.rs.bk */**/*.rs.bk
.claude

View File

@@ -1,7 +1,7 @@
services: services:
aios: aios:
#image: syui/aios #image: syui/aios
#command: ai bot -a syui.syu.is #command: aibot bot -a syui.syu.is
build: build:
context: . context: .
restart: always restart: always

View File

@@ -167,7 +167,9 @@ pub fn c_bot(c: &Context) {
|| com.contains("うらない") == true || com.contains("うらない") == true
|| com.contains("うらなって") == true || com.contains("うらなって") == true
{ {
let _output = Command::new(data_scpt(&"ai")) let script_path = data_scpt(&"ai");
println!("[fortune] script: {}", script_path);
let output = Command::new(&script_path)
.arg(&"atproto").arg(&"fortune") .arg(&"atproto").arg(&"fortune")
.arg(&handle) .arg(&handle)
.arg(&did) .arg(&did)
@@ -178,11 +180,25 @@ pub fn c_bot(c: &Context) {
.arg(&host) .arg(&host)
.arg(&prompt) .arg(&prompt)
.arg(&prompt_sub) .arg(&prompt_sub)
.output() .output();
.expect("zsh"); match output {
Ok(out) => {
let stdout = String::from_utf8_lossy(&out.stdout);
let stderr = String::from_utf8_lossy(&out.stderr);
println!("[fortune] stdout: {}", stdout);
if !stderr.is_empty() {
println!("[fortune] stderr: {}", stderr);
}
}
Err(e) => {
println!("[fortune] error: {}", e);
}
}
w_cid(cid.to_string(), log_file(&"n1"), true); w_cid(cid.to_string(), log_file(&"n1"), true);
} else if com == "card" || com == "/card" { } else if com == "card" || com == "/card" {
let output = Command::new(data_scpt(&"ai")) let script_path = data_scpt(&"ai");
println!("[card] script: {}", script_path);
let output = Command::new(&script_path)
.arg(&"atproto").arg(&"card") .arg(&"atproto").arg(&"card")
.arg(&handle) .arg(&handle)
.arg(&did) .arg(&did)
@@ -193,29 +209,48 @@ pub fn c_bot(c: &Context) {
.arg(&host) .arg(&host)
.arg(&prompt) .arg(&prompt)
.arg(&prompt_sub) .arg(&prompt_sub)
.output() .output();
.expect("zsh");
let d = String::from_utf8_lossy(&output.stdout); match output {
let dd = "\n".to_owned() + &d.to_string(); Ok(out) => {
let text_limit = c_char(dd); let d = String::from_utf8_lossy(&out.stdout);
if text_limit.len() > 3 { let stderr = String::from_utf8_lossy(&out.stderr);
//handlev = handle.replace(".", "-").to_string(); println!("[card] stdout: {}", d);
handlev = d.lines().collect::<Vec<_>>()[0].to_string(); if !stderr.is_empty() {
link = "https://card.syui.ai/".to_owned() + &handlev; println!("[card] stderr: {}", stderr);
e = link.chars().count(); }
let str_rep = reply_link::post_request( let dd = "\n".to_owned() + &d.to_string();
text_limit.to_string(), let text_limit = c_char(dd);
link.to_string(), if text_limit.len() > 3 {
s, let lines: Vec<&str> = d.lines().collect();
e.try_into().unwrap(), handlev = lines.get(0).unwrap_or(&"").trim().to_string();
cid.to_string(), // 空白を含む場合や空の場合はhandleから生成
uri.to_string(), if handlev.is_empty() || handlev.contains(' ') {
cid_root.to_string(), handlev = handle.split('.').next().unwrap_or("").to_string();
uri_root.to_string(), }
) if !handlev.is_empty() {
.await; link = "https://card.syui.ai/".to_owned() + &handlev;
println!("{}", str_rep); e = link.chars().count();
w_cid(cid.to_string(), log_file(&"n1"), true); let str_rep = reply_link::post_request(
text_limit.to_string(),
link.to_string(),
s,
e.try_into().unwrap(),
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);
}
}
}
Err(e) => {
println!("[card] script error: {}", e);
w_cid(cid.to_string(), log_file(&"n1"), true);
}
} }
} else if com == "fav" || com == "/fav" { } else if com == "fav" || com == "/fav" {
let output = Command::new(data_scpt(&"ai")) let output = Command::new(data_scpt(&"ai"))
@@ -814,7 +849,9 @@ pub fn c_bot_feed(c: &Context) {
} }
w_cid(cid.to_string(), log_file(&"n1"), true); w_cid(cid.to_string(), log_file(&"n1"), true);
} else if com == "card" || com == "/card" { } else if com == "card" || com == "/card" {
let output = Command::new(data_scpt(&"ai")) let script_path = data_scpt(&"ai");
println!("[card] script: {}", script_path);
let output = Command::new(&script_path)
.arg(&"atproto").arg(&"card") .arg(&"atproto").arg(&"card")
.arg(&handle) .arg(&handle)
.arg(&did) .arg(&did)
@@ -825,29 +862,48 @@ pub fn c_bot_feed(c: &Context) {
.arg(&host) .arg(&host)
.arg(&prompt) .arg(&prompt)
.arg(&prompt_sub) .arg(&prompt_sub)
.output() .output();
.expect("zsh");
let d = String::from_utf8_lossy(&output.stdout); match output {
let dd = "\n".to_owned() + &d.to_string(); Ok(out) => {
let text_limit = c_char(dd); let d = String::from_utf8_lossy(&out.stdout);
if text_limit.len() > 3 { let stderr = String::from_utf8_lossy(&out.stderr);
//handlev = handle.replace(".", "-").to_string(); println!("[card] stdout: {}", d);
handlev = d.lines().collect::<Vec<_>>()[0].to_string(); if !stderr.is_empty() {
link = "https://card.syui.ai/".to_owned() + &handlev; println!("[card] stderr: {}", stderr);
e = link.chars().count(); }
let str_rep = reply_link::post_request( let dd = "\n".to_owned() + &d.to_string();
text_limit.to_string(), let text_limit = c_char(dd);
link.to_string(), if text_limit.len() > 3 {
s, let lines: Vec<&str> = d.lines().collect();
e.try_into().unwrap(), handlev = lines.get(0).unwrap_or(&"").trim().to_string();
cid.to_string(), // 空白を含む場合や空の場合はhandleから生成
uri.to_string(), if handlev.is_empty() || handlev.contains(' ') {
cid_root.to_string(), handlev = handle.split('.').next().unwrap_or("").to_string();
uri_root.to_string(), }
) if !handlev.is_empty() {
.await; link = "https://card.syui.ai/".to_owned() + &handlev;
println!("{}", str_rep); e = link.chars().count();
w_cid(cid.to_string(), log_file(&"n1"), true); let str_rep = reply_link::post_request(
text_limit.to_string(),
link.to_string(),
s,
e.try_into().unwrap(),
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);
}
}
}
Err(e) => {
println!("[card] script error: {}", e);
w_cid(cid.to_string(), log_file(&"n1"), true);
}
} }
} else if com == "fav" || com == "/fav" { } else if com == "fav" || com == "/fav" {
let output = Command::new(data_scpt(&"ai")) let output = Command::new(data_scpt(&"ai"))

View File

@@ -480,6 +480,8 @@ fn bot(c: &Context) {
loop { loop {
c_bot(c); c_bot(c);
c_bot_feed(c); c_bot_feed(c);
// 10秒待機してCPU使用率を抑制
std::thread::sleep(std::time::Duration::from_secs(10));
} }
} }
@@ -487,6 +489,7 @@ fn feed_watch(c: &Context) {
refresh(c); refresh(c);
loop { loop {
c_feed_watch(c); c_feed_watch(c);
std::thread::sleep(std::time::Duration::from_secs(10));
} }
} }

View File

@@ -1,4 +1,4 @@
#!/bin/zsh #!/bin/zsh
#ai l $HANDLE -p $PASSWORD -s $HOST #aibot l $HANDLE -p $PASSWORD -s $HOST
ai bot -a $ADMIN aibot bot -a $ADMIN