diff options
-rw-r--r-- | Plugin/Greet.pm | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/Plugin/Greet.pm b/Plugin/Greet.pm index d291682..9933104 100644 --- a/Plugin/Greet.pm +++ b/Plugin/Greet.pm @@ -1,24 +1,39 @@ package Plugin::Greet; # FIXME add configurable messages -# FIXME add configurable chance of replying -# FIXME factor out `some` with other plugins use strict; use warnings; +my $config; my $root_config; sub configure { my $self = shift; shift; # cmdref shift; # run_command - shift; # module config + $config = shift; $root_config = shift; + IdaliusConfig::assert_scalar($config, $self, "chance_self"); + IdaliusConfig::assert_scalar($config, $self, "chance_other"); + die "chance_self must be from 0 to 100" + if ($config->{chance_self} < 0 || $config->{chance_self} > 100); + die "chance_other must be from 0 to 100" + if ($config->{chance_other} < 0 || $config->{chance_other} > 100); + return $self; } +sub self_odds { + return int(rand(100)) < $config->{chance_self}; +} + +sub other_odds { + return int(rand(100)) < $config->{chance_other}; +} + +# FIXME factor out `some` with other plugins sub some { my @choices = @_; return $choices[rand(@choices)]; @@ -42,8 +57,10 @@ sub on_join { my ($self, $logger, $me, $who, $where, $raw_what, $what, $irc) = @_; my $nick = (split /!/, $who)[0]; if ($nick eq $root_config->{current_nick}) { + return unless self_odds(); return some @own_responses; } else { + return unless other_odds(); return some( "hi $nick", "oh look, $nick is here", |