fix(channels): interrupt in-flight telegram requests on newer sender messages
This commit is contained in:
parent
d9a94fc763
commit
ef82c7dbcd
17 changed files with 669 additions and 115 deletions
|
|
@ -36,6 +36,7 @@ mod tests {
|
|||
allowed_users: vec!["alice".into()],
|
||||
stream_mode: StreamMode::default(),
|
||||
draft_update_interval_ms: 1000,
|
||||
interrupt_on_new_message: false,
|
||||
mention_only: false,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -2125,6 +2125,10 @@ pub struct TelegramConfig {
|
|||
/// Minimum interval (ms) between draft message edits to avoid rate limits.
|
||||
#[serde(default = "default_draft_update_interval_ms")]
|
||||
pub draft_update_interval_ms: u64,
|
||||
/// When true, a newer Telegram message from the same sender in the same chat
|
||||
/// cancels the in-flight request and starts a fresh response with preserved history.
|
||||
#[serde(default)]
|
||||
pub interrupt_on_new_message: bool,
|
||||
/// When true, only respond to messages that @-mention the bot in groups.
|
||||
/// Direct messages are always processed.
|
||||
#[serde(default)]
|
||||
|
|
@ -3520,6 +3524,7 @@ default_temperature = 0.7
|
|||
allowed_users: vec!["user1".into()],
|
||||
stream_mode: StreamMode::default(),
|
||||
draft_update_interval_ms: default_draft_update_interval_ms(),
|
||||
interrupt_on_new_message: false,
|
||||
mention_only: false,
|
||||
}),
|
||||
discord: None,
|
||||
|
|
@ -3852,6 +3857,7 @@ tool_dispatcher = "xml"
|
|||
allowed_users: vec!["alice".into(), "bob".into()],
|
||||
stream_mode: StreamMode::Partial,
|
||||
draft_update_interval_ms: 500,
|
||||
interrupt_on_new_message: true,
|
||||
mention_only: false,
|
||||
};
|
||||
let json = serde_json::to_string(&tc).unwrap();
|
||||
|
|
@ -3860,6 +3866,7 @@ tool_dispatcher = "xml"
|
|||
assert_eq!(parsed.allowed_users.len(), 2);
|
||||
assert_eq!(parsed.stream_mode, StreamMode::Partial);
|
||||
assert_eq!(parsed.draft_update_interval_ms, 500);
|
||||
assert!(parsed.interrupt_on_new_message);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
@ -3868,6 +3875,7 @@ tool_dispatcher = "xml"
|
|||
let parsed: TelegramConfig = serde_json::from_str(json).unwrap();
|
||||
assert_eq!(parsed.stream_mode, StreamMode::Off);
|
||||
assert_eq!(parsed.draft_update_interval_ms, 1000);
|
||||
assert!(!parsed.interrupt_on_new_message);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue