diff options
-rw-r--r-- | Plugin/Natural.pm | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/Plugin/Natural.pm b/Plugin/Natural.pm new file mode 100644 index 0000000..fabdf0c --- /dev/null +++ b/Plugin/Natural.pm @@ -0,0 +1,57 @@ +package Plugin::Natural; + +use strict; +use warnings; +use threads; + +my $root_config; + +sub configure { + my $self = shift; + shift; # cmdref + shift; # run_command + shift; # module config + $root_config = shift; + + return $self; +} + +#my %language { +# qr/(hi|hello|hey|hiya|morning|sup)/ => ("hey", "how goes it?", "hi") +# qr/(thx|thanks|thank you)/ => ("no problem", "you're welcome"), +# qr/help/ => ("oh no") +#}; + +sub mention_odds { + return 1; +# return int(rand(3)) == 1; +} + +sub some { + my @choices = @_; + return $choices[rand(@choices)]; +} + +sub on_message { + my ($self, $logger, $me, $who, $where, $raw_what, $what, $irc) = @_; + my $nick = (split /!/, $who)[0]; + + return unless $what =~ /\b$root_config->{current_nick}\b/; + return unless mention_odds(); + + if ($what =~ /\b(hi|hey|sup|morning|hello|hiya)\b/i) { + return some("hi $nick", "hey $nick", "sup $nick") . some("", ", how goes it?"); + } elsif ($what =~ /\b(thanks|thx|ta)\b/i) { + return some("don't mention it", "that's ok", ":)", "not a problem"); + } elsif ($what =~ /\b(shush|(shit|shut)(\s+the\s+fuck|)\s+up|stfu)\b/i) { + return some("$nick: shush yourself", "shut up, $nick", "nou $nick", "sorry $nick", ":("); + } elsif ($what =~ /\b(fuck\s+(off?|you|u)|fucking)\b/i) { + return some("$nick: take your meds", "stop harassing me", "ease up on the drink, mate", "ooh big boy angry $nick has come out to play"); + } + return; +} + +sub on_action { + on_message @_; +} +1; |