diff --git a/doc/CHANGELOG b/doc/CHANGELOG index e6f4f64..a864353 100644 --- a/doc/CHANGELOG +++ b/doc/CHANGELOG @@ -3,6 +3,7 @@ Auto IRC Bot 3.0: Change Log 3.0 Indev =============================================================================== + * Added API::IRC::ison for checking if a user is on a channel. * Werewolf: Fixed a bug in harlot staying home. * Werewolf: Various bug fixes. * Werewolf 1.06: Fixed an annoyance and added traitor transformation. diff --git a/lib/API/IRC.pm b/lib/API/IRC.pm index be7b4b6..00e28e1 100644 --- a/lib/API/IRC.pm +++ b/lib/API/IRC.pm @@ -9,7 +9,7 @@ use Exporter; use base qw(Exporter); our @EXPORT_OK = qw(ban cjoin cpart cmode umode kick privmsg notice quit nick names - topic who usrc match_mask); + topic who usrc match_mask ison); # Create the on_disconnect event. API::Std::event_add('on_disconnect'); @@ -130,6 +130,17 @@ sub act { return 1; } +# Check if a given nickname is on a channel. +sub ison { + my ($svr, $chan, $nick) = @_; + + if (!exists $State::IRC::chanusers{$svr}) { return } + if (!exists $State::IRC::chanusers{$svr}{$chan}) { return } + if (!exists $State::IRC::chanusers{$svr}{$chan}{lc $nick}) { return } + + return 1; +} + # Change bot nickname. sub nick { my ($svr, $newnick) = @_;