commit 96ff42658bb89d7c05e6e98ba27cc4686ac5bdc1
parent b73dcbe95ef4d2048dab4178e615b15aa06a8564
Author: noodle <noodle@pastanoggin.com>
Date: Wed, 18 Jun 2025 19:29:05 +0300
Merge branch 'regex_modifiers'
Diffstat:
1 file changed, 17 insertions(+), 6 deletions(-)
diff --git a/mata_bot.pl b/mata_bot.pl
@@ -164,13 +164,24 @@ sub respond_mention {
# returns 1 if bot shouldn't remember last message for s///, 0 otherwise
sub respond {
my ($sock, $sender_nick, $message) = @_;
- if ($subbuffer{$sender_nick} && $message =~ m,\b{wb}s/([^\000\r\n/]*)/([^\000\r\n/]*)/?,) {
+ if ($subbuffer{$sender_nick} && $message =~ m,\b{wb}s/([^/]+)/([^/]*)(?:/([gi]*))?,) {
# chat s///
- my $toreplace = $1;
- my $replacement = $2;
- my $match;
- eval { $match = $subbuffer{$sender_nick} =~ s/$toreplace/$replacement/ };
- if (not $@ and $match) {
+ my $retext = $1;
+ my $repl = $2;
+ my $mods = $3 // '';
+ my $regex;
+ my $imod = $mods =~ /i/ ? 'i' : '';
+ eval {
+ $regex = qr/(?$imod:$retext)/
+ };
+ return 1 if $@;
+ my $ismatch;
+ if ($mods =~ /g/) {
+ $ismatch = $subbuffer{$sender_nick} =~ s/$regex/$repl/g;
+ } else {
+ $ismatch = $subbuffer{$sender_nick} =~ s/$regex/$repl/;
+ }
+ if ($ismatch) {
msg($sock, "${sender_nick} meant to say: $subbuffer{$sender_nick}");
}
return 1;