diff options
Diffstat (limited to 'Plugin/Hmm.pm')
-rw-r--r-- | Plugin/Hmm.pm | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/Plugin/Hmm.pm b/Plugin/Hmm.pm new file mode 100644 index 0000000..5ceb66a --- /dev/null +++ b/Plugin/Hmm.pm @@ -0,0 +1,53 @@ +package Plugin::Hmm; + +use strict; +use warnings; +use threads; + +my $root_config; +my $config; +my %current_alarm; + +sub configure { + my $self = shift; + shift; # cmdref + shift; # run_command + $config = shift; + $root_config = shift; + + IdaliusConfig::assert_scalar($config, $self, "min_delay_sec"); + IdaliusConfig::assert_scalar($config, $self, "max_delay_sec"); + + return $self; +} + +# FIXME dedup with Natural.pm +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]; + + # Don't perform this in q to users + return if ref($where) ne "ARRAY"; + $where = $where->[0]; + + if (defined $current_alarm{$where}) { + $irc->delay_remove($current_alarm{$where}); + } + + my $response = some("Hmm", "hmm", "hmmmmmm", "oof", "mmm"); + + $current_alarm{$where} = $irc->delay([privmsg => $where => $response], + $config->{min_delay_sec} + rand($config->{max_delay_sec} - $config->{min_delay_sec})); + + return; +} + +sub on_action { + on_message @_; +} +1; |