Skip to main content

flow_bot/message/
message_ext.rs

1use super::{Message, segments::Segment};
2
3pub trait MessageExt {
4    fn extract_plain_text(&self) -> String;
5
6    fn is_plain_text(&self) -> bool;
7
8    fn extract_if_plain_text(&self) -> Option<String> {
9        if self.is_plain_text() {
10            Some(self.extract_plain_text())
11        } else {
12            None
13        }
14    }
15}
16
17impl MessageExt for Message {
18    fn extract_plain_text(&self) -> String {
19        self.iter()
20            .filter_map(|segment| match segment {
21                Segment::Text(text) => Some(text.text.clone()),
22                _ => None,
23            })
24            .collect::<Vec<String>>()
25            .join("")
26    }
27
28    fn is_plain_text(&self) -> bool {
29        self.iter()
30            .all(|segment| matches!(segment, Segment::Text(_)))
31    }
32}