operserv: REDACT deletes a message by its msgid (draft/message-redaction), relayed server-sourced so no ircd oper privilege is needed
All checks were successful
CI / check (push) Successful in 4m6s
All checks were successful
CI / check (push) Successful in 4m6s
This commit is contained in:
parent
e6f05a3ede
commit
e206f4edbb
4 changed files with 40 additions and 0 deletions
15
modules/operserv/src/redact.rs
Normal file
15
modules/operserv/src/redact.rs
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
use echo_api::{Sender, ServiceCtx};
|
||||
|
||||
// REDACT <#channel|nick> <msgid> [reason]: delete a message by its IRCv3 msgid.
|
||||
// The msgid comes from the reporting oper's client (which saw the tagged message);
|
||||
// echo relays it as a server-trusted redaction, so no ircd oper privilege is needed
|
||||
// (draft/message-redaction). One-shot — nothing is stored.
|
||||
pub fn handle(me: &str, from: &Sender, args: &[&str], ctx: &mut ServiceCtx) {
|
||||
let (Some(&target), Some(&msgid)) = (args.get(1), args.get(2)) else {
|
||||
ctx.notice(me, from.uid, "Syntax: REDACT <#channel|nick> <msgid> [reason]");
|
||||
return;
|
||||
};
|
||||
let reason = if args.len() > 3 { args[3..].join(" ") } else { String::new() };
|
||||
ctx.redact(me, target, msgid, &reason);
|
||||
ctx.notice(me, from.uid, format!("Redacted message \x02{msgid}\x02 in \x02{target}\x02."));
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue