aboutsummaryrefslogtreecommitdiff
path: root/.weechat/perl/bad_word_filter.pl
diff options
context:
space:
mode:
Diffstat (limited to '.weechat/perl/bad_word_filter.pl')
-rw-r--r--.weechat/perl/bad_word_filter.pl55
1 files changed, 55 insertions, 0 deletions
diff --git a/.weechat/perl/bad_word_filter.pl b/.weechat/perl/bad_word_filter.pl
new file mode 100644
index 0000000..8a3a6ee
--- /dev/null
+++ b/.weechat/perl/bad_word_filter.pl
@@ -0,0 +1,55 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use utf8;
+
+weechat::register("bad_word_filter", "tyil", "0.1", "AGPL-3.0", "Do your part in keeping Christian channels safe and friendly", "", "");
+weechat::hook_modifier("input_text_for_buffer", "catch_send", "");
+
+sub catch_send {
+ my ($data, $modifier_name, $buffer, $msg) = @_;
+ my $buffer_name = weechat::buffer_get_string($buffer, 'name');
+
+ # These are the channels (or really, buffers) on which self-harm
+ # protections should be enabled.
+ my @christian_channels = (
+ 'freenode.##t',
+ 'rizon.#chat',
+ 'rizon.#stew',
+ );
+
+ # These are the words that may not be spoken.
+ my @bad_words = (
+ 'cuck',
+ 'fag',
+ 'kike',
+ 'negro',
+ 'nigga',
+ 'nigger',
+ );
+
+ # First, the message can be returned as is unless this message is sent
+ # into a Christian channel.
+ my $christian_context = 0;
+
+ for my $channel (@christian_channels) {
+ if ($channel eq $buffer_name) {
+ $christian_context = 1;
+ }
+ }
+
+ return $msg unless $christian_context;
+
+ # Next, see if there are any bad words in this message.
+ for my $bad_word (@bad_words) {
+ next unless $msg =~ m/$bad_word/;
+
+ # BAD WORD DETECTED
+ weechat::print($buffer, 'The power word "'.$bad_word.'" is unfit for this channel.');
+ return "";
+ }
+
+ # It's a safe message, just return it.
+ return $msg;
+}