001
2021-12-17
jrmu
#!/usr/bin/perl
002
2021-12-17
jrmu
use strict;
003
2021-12-17
jrmu
use warnings;
005
2021-12-17
jrmu
open(my $fh, ">>logbot.log") or die "Unable to write to logbot.log";
006
2021-12-17
jrmu
select((select($fh), $|=1)[0]);
008
2021-12-17
jrmu
package LogBot;
009
2021-12-17
jrmu
use base qw(Bot::BasicBot);
011
2021-12-17
jrmu
sub date {
012
2021-12-17
jrmu
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();
013
2021-12-17
jrmu
my $localtime = sprintf("%04d%02d%02d %02d:%02d", $year+1900, $mon+1, $mday, $hour, $min);
014
2021-12-17
jrmu
return $localtime;
017
2021-12-17
jrmu
sub said {
018
2021-12-17
jrmu
my $self = shift;
019
2021-12-17
jrmu
my $arguments = shift;
020
2021-12-17
jrmu
print $fh date()." <$arguments->{who}> $arguments->{body}\n";
021
2021-12-17
jrmu
return;
024
2021-12-17
jrmu
sub emoted {
025
2021-12-17
jrmu
my $self = shift;
026
2021-12-17
jrmu
my $arguments = shift;
027
2021-12-17
jrmu
print $fh date()." *$arguments->{who} $arguments->{body}\n";
028
2021-12-17
jrmu
return;
031
2021-12-17
jrmu
sub noticed {
032
2021-12-17
jrmu
my $self = shift;
033
2021-12-17
jrmu
my $arguments = shift;
034
2021-12-17
jrmu
print $fh date()." [$arguments->{who} notice]: $arguments->{body}\n";
035
2021-12-17
jrmu
return;
038
2021-12-17
jrmu
sub chanjoin {
039
2021-12-17
jrmu
my $self = shift;
040
2021-12-17
jrmu
my $arguments = shift;
041
2021-12-17
jrmu
print $fh date()." -!- $arguments->{raw_nick} has joined $arguments->{channel}\n";
042
2021-12-17
jrmu
return;
045
2021-12-17
jrmu
sub chanpart {
046
2021-12-17
jrmu
my $self = shift;
047
2021-12-17
jrmu
my $arguments = shift;
048
2021-12-17
jrmu
print $fh date()." -!- $arguments->{raw_nick} has left $arguments->{channel} $arguments->{body}\n";
049
2021-12-17
jrmu
return;
052
2021-12-17
jrmu
sub topic {
053
2021-12-17
jrmu
my $self = shift;
054
2021-12-17
jrmu
my $arguments = shift;
055
2021-12-17
jrmu
my $who = $arguments->{who};
056
2021-12-17
jrmu
if (defined($who)) {
057
2021-12-17
jrmu
print $fh date()." -!- $who changed the topic of $arguments->{channel} to: $arguments->{topic}\n";
059
2021-12-17
jrmu
return;
062
2021-12-17
jrmu
sub nickchange {
063
2021-12-17
jrmu
my $self = shift;
064
2021-12-17
jrmu
my $oldnick = shift;
065
2021-12-17
jrmu
my $newnick = shift;
066
2021-12-17
jrmu
print $fh "$oldnick is now known as $newnick\n";
067
2021-12-17
jrmu
return;
070
2021-12-17
jrmu
sub mode_change {
071
2021-12-17
jrmu
my $self = shift;
072
2021-12-17
jrmu
my $arguments = shift;
073
2021-12-17
jrmu
my $chan = $arguments->{channel};
074
2021-12-17
jrmu
my $operands = $arguments->{mode_operands};
075
2021-12-17
jrmu
if (defined($chan) && $chan ne "msg" && scalar(@$operands)) {
076
2021-12-17
jrmu
print $fh date()." -!- mode/$chan $arguments->{who} [$arguments->{mode_changes}] ".join(", ", @$operands)."\n";
078
2021-12-17
jrmu
return;
081
2021-12-17
jrmu
sub kicked {
082
2021-12-17
jrmu
my $self = shift;
083
2021-12-17
jrmu
my $arguments = shift;
084
2021-12-17
jrmu
print $fh date()." -!- $arguments->{who} kicks $arguments->{kicked} [$arguments->{reason}]\n";
087
2021-12-17
jrmu
sub userquit {
088
2021-12-17
jrmu
my $self = shift;
089
2021-12-17
jrmu
my $arguments = shift;
090
2021-12-17
jrmu
print $fh " -!- $arguments->{raw_nick} quits [$arguments->{body}]\n";
093
2021-12-17
jrmu
package main;
095
2021-12-17
jrmu
my $bot = LogBot->new(
096
2021-12-17
jrmu
server => 'irc.example.com',
097
2021-12-17
jrmu
port => '6667',
098
2021-12-17
jrmu
channels => ['#perl104'],
099
2021-12-17
jrmu
nick => 'nickname',
100
2021-12-17
jrmu
name => 'username',
103
2021-12-17
jrmu
local $SIG{INT} = sub {
104
2021-12-17
jrmu
close($fh);
105
2021-12-17
jrmu
print "Quitting program...\n";
106
2021-12-17
jrmu
$bot->shutdown("Quitting...");
109
2021-12-17
jrmu
$bot->run();