diff options
| author | Max Audron <audron@cocaine.farm> | 2021-09-07 13:23:01 +0200 |
|---|---|---|
| committer | Max Audron <audron@cocaine.farm> | 2021-09-07 13:23:01 +0200 |
| commit | 3594c067804f1bb236eb5a82242db2f36482f7c2 (patch) | |
| tree | 3bc896041c6740b157fae5ccc549e4abc1ff07b6 | |
| parent | put benchmark behind feature flag we can compile using stable rust (diff) | |
handle CTCP ACTION in sed module
Diffstat (limited to '')
| -rw-r--r-- | src/hooks/sed.rs | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/hooks/sed.rs b/src/hooks/sed.rs index d46a9bf..1ee0b20 100644 --- a/src/hooks/sed.rs +++ b/src/hooks/sed.rs @@ -24,7 +24,11 @@ impl Sed { } fn log_msg(&mut self, msg: Message) -> Result<()> { - if let Command::PRIVMSG(target, text) = msg.command.clone() { + if let Command::PRIVMSG(target, mut text) = msg.command.clone() { + if text.starts_with("\x01ACTION") { + text = text.replace("\x01ACTION", "\x01\x01"); + } + match self.0.get_mut(&target) { Some(log) => { if log.len() >= LOG_MAX_SIZE { @@ -72,7 +76,17 @@ impl Sed { .iter() .rev() .find(|(_, text)| cmd.expr.is_match(text) && !RE.with(|re| re.is_match(text))) - .and_then(|(nick, text)| Some(format!("<{}> {}", nick, cmd.execute(text)))) + .and_then(|(nick, text)| { + if text.starts_with("\x01\x01") { + Some(format!( + "* {}{}", + nick, + cmd.execute(text.replace("\x01", "")) + )) + } else { + Some(format!("<{}> {}", nick, cmd.execute(text))) + } + }) .map_or(Err(anyhow!("replace failed")), |v| Ok(v)); } |
