修复飞书渠道 /dump 和 /info 命令:支持无会话时自动创建
当 Feishu 用户首次发送斜杠命令时,如果没有会话则自动创建。 这使得 /dump 和 /info 命令可以在对话开始前使用。
This commit is contained in:
parent
30b68599a4
commit
c52461055d
@ -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))),
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user