Bot-IRC
view release on metacpan or search on metacpan
lib/Bot/IRC.pm view on Meta::CPAN
$self->hook(@$_) for (@_);
return $self;
}
sub helps {
my ( $self, @input ) = @_;
try {
$self->{helps} = { %{ $self->{helps} }, @input };
}
catch ($e) {
$self->note('Plugin helps called but not properly implemented');
}
return $self;
}
sub tick {
my ( $self, $timing, $code ) = @_;
push( @{ $self->{ticks} }, {
timing => ( $timing =~ /^\d+$/ ) ? $timing : Time::Crontab->new($timing),
code => $code,
} );
return $self;
}
sub ticks {
my $self = shift;
$self->tick(@$_) for (@_);
return $self;
}
sub subs {
my $self = shift;
if ( @_ % 2 ) {
$self->note('Plugin helps called but not properly implemented');
return $self;
}
my $subs = {@_};
for my $name ( keys %$subs ) {
no strict 'refs';
no warnings 'redefine';
*{ __PACKAGE__ . '::' . $name } = $subs->{$name};
}
return $self;
}
sub register {
my $self = shift;
$self->{loaded}{$_} = time for (@_);
return $self;
}
sub vars {
my ( $self, $name ) = @_;
( $name = lc( substr( ( caller() )[0], length(__PACKAGE__) + 2 ) ) ) =~ s/::/\-/g unless ($name);
return ( defined $self->{vars}{$name} ) ? $self->{vars}{$name} : {};
}
sub settings {
my ( $self, $name ) = @_;
return ( defined $name ) ? $self->{$name} : { %$self };
}
sub reply {
my ( $self, $message ) = @_;
if ( $self->{in}{forum} ) {
$self->msg(
( ( $self->{in}{forum} eq $self->{nick} ) ? $self->{in}{nick} : $self->{in}{forum} ),
$message,
);
}
else {
warn "Didn't have a target to send reply to.\n";
}
return $self;
}
sub reply_to {
my ( $self, $message ) = @_;
return $self->reply( ( ( not $self->{in}{private} ) ? "$self->{in}{nick}: " : '' ) . $message );
}
sub msg {
my ( $self, $target, $message ) = @_;
$self->say( "PRIVMSG $target :" . ( ( $message =~ s/^\/me\s+// ) ? "\001ACTION $message\001" : $message ) );
return $self;
}
sub say {
my $self = shift;
my $device = $self->{device};
my $ppid = ($device) ? $device->ppid : 0;
for (@_) {
my $string = $_;
if ( $ppid == $$ ) {
$self->{socket}->print( $string . "\r\n" );
}
else {
$string = encode( $self->{encoding}, $string );
$device->message( $ppid, $string ) if $device;
}
$self->note("<<< $string");
}
return $self;
}
sub nick {
my ( $self, $nick ) = @_;
if ($nick) {
$self->{nick} = $nick;
$self->{device}->message( $_, ">>> NICK $self->{nick}" )
for ( grep { $_ != $$ } $self->{device}->ppid, @{ $self->{device}->children } );
( run in 1.823 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )