修复飞书渠道 /dump 和 /info 命令:支持无会话时自动创建

当 Feishu 用户首次发送斜杠命令时,如果没有会话则自动创建。
这使得 /dump 和 /info 命令可以在对话开始前使用。
This commit is contained in:
xiaoxixi 2026-04-28 21:03:58 +08:00
parent 30b68599a4
commit c52461055d

View File

@ -370,8 +370,14 @@ impl SessionManager {
} }
} }
"info" => { "info" => {
if let Some(sid) = current_session_id { let sid = if let Some(s) = current_session_id {
let session = self.get_or_create_session(sid).await?; s.clone()
} else {
// Create a new session if none exists (e.g., Feishu first message)
let (new_id, _) = self.create_session(channel, chat_id, None).await?;
new_id
};
let session = self.get_or_create_session(&sid).await?;
let session_guard = session.lock().await; let session_guard = session.lock().await;
let message_count = session_guard.get_history().len(); let message_count = session_guard.get_history().len();
let session_id_str = session_guard.session_id(); let session_id_str = session_guard.session_id();
@ -379,19 +385,19 @@ impl SessionManager {
"Session ID: {}\nMessage count: {}", "Session ID: {}\nMessage count: {}",
session_id_str, message_count session_id_str, message_count
))) )))
} else {
Ok((None, "No active session.".to_string()))
}
} }
"dump" => { "dump" => {
if let Some(sid) = current_session_id { let sid = if let Some(s) = current_session_id {
let session = self.get_or_create_session(sid).await?; s.clone()
} else {
// Create a new session if none exists (e.g., Feishu first message)
let (new_id, _) = self.create_session(channel, chat_id, None).await?;
new_id
};
let session = self.get_or_create_session(&sid).await?;
let session_guard = session.lock().await; let session_guard = session.lock().await;
let md = session_guard.dump_as_markdown(); let md = session_guard.dump_as_markdown();
Ok((None, md)) Ok((None, md))
} else {
Ok((None, "No active session.".to_string()))
}
} }
_ => Err(AgentError::Other(format!("Command not implemented: {}", cmd.name))), _ => Err(AgentError::Other(format!("Command not implemented: {}", cmd.name))),
} }