summaryrefslogtreecommitdiffstats
path: root/src/repl
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2023-11-07 23:07:42 +0800
committerGitHub <noreply@github.com>2023-11-07 23:07:42 +0800
commitc99bd015aa6ede7d306838c71d0ad6b89950a56b (patch)
treea492524f1704f51215faba296516fc4c1c827dae /src/repl
parentc256b6bae56c714adb7182bdbd02a74c27fd6b2d (diff)
downloadaichat-c99bd015aa6ede7d306838c71d0ad6b89950a56b.tar.gz
feat: temporarily use a role to send a message (#227)
Diffstat (limited to 'src/repl')
-rw-r--r--src/repl/mod.rs22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/repl/mod.rs b/src/repl/mod.rs
index 75d2627..1143ab9 100644
--- a/src/repl/mod.rs
+++ b/src/repl/mod.rs
@@ -153,10 +153,24 @@ impl Repl {
None => println!("Usage: .model <name>"),
},
".role" => match args {
- Some(name) => {
- self.config.write().set_role(name)?;
- }
- None => println!("Usage: .role <name>"),
+ Some(args) => match args.split_once(|c| c == '\n' || c == ' ') {
+ Some((name, text)) => {
+ let name = name.trim();
+ let text = text.trim();
+ let old_role =
+ self.config.read().role.as_ref().map(|v| v.name.to_string());
+ self.config.write().set_role(name)?;
+ self.ask(text)?;
+ match old_role {
+ Some(old_role) => self.config.write().set_role(&old_role)?,
+ None => self.config.write().clear_role()?,
+ }
+ }
+ None => {
+ self.config.write().set_role(args)?;
+ }
+ },
+ None => println!(r#"Usage: .role <name> [text...]"#),
},
".session" => {
self.config.write().start_session(args)?;