Bot::BasicBot::Pluggable::Module::Bash - get quotes from bash.org


Bot-BasicBot-Pluggable-Module-Search documentation Contained in the Bot-BasicBot-Pluggable-Module-Search distribution.

Index


Code Index:

NAME

Top

Bot::BasicBot::Pluggable::Module::Bash - get quotes from bash.org

IRC USAGE

Top

	bash <id>

AUTHOR

Top

Simon Wistow, <simon@thegestalt.org>

COPYRIGHT

Top

SEE ALSO

Top


Bot-BasicBot-Pluggable-Module-Search documentation Contained in the Bot-BasicBot-Pluggable-Module-Search distribution.

package Bot::BasicBot::Pluggable::Module::Bash;

use strict;
use Bot::BasicBot::Pluggable::Module; 
use base qw(Bot::BasicBot::Pluggable::Module);

use XML::RSS;
use LWP::Simple ();
use HTML::Entities;

sub said { 
    my ($self, $mess, $pri) = @_;

    my $body = $mess->{body}; 
    my $who  = $mess->{who};

    return unless ($pri == 2);
    return unless $body =~ /^\s*bash\s+(\d+)/i;
    
    my $id = $1;
    my $rss = LWP::Simple::get("http://www.bash.org/xml/?$id");
    return "Couldn't get content from Bash.org" unless defined $rss;
    
    my $p = XML::RSS->new();
    $p->parse($rss)                    || return "Couldn't parse the data I got :(";
    my $item = shift @{$p->{'items'}}  || return "Couldn't parse the data I got :(";

    my $description = $item->{'description'};	
 
    return "$id is not a valid Bash id apparently" if (!defined $description || $description eq 'The IRC Quote Database');

    $description = decode_entities($description);
    $description =~ s!<br\s*\/?>!\n!gi;
    return "${id}: $description";

}

sub help {
    return "Commands: 'bash <id>'";
}

1;

__END__