diff options
| -rw-r--r-- | bot.pl | 42 |
1 files changed, 30 insertions, 12 deletions
| @@ -7,8 +7,8 @@ use DBI; | |||
| 7 | use POE; | 7 | use POE; |
| 8 | use POE::Component::IRC; | 8 | use POE::Component::IRC; |
| 9 | 9 | ||
| 10 | my $current_nick = 'francoise'; | 10 | my $current_nick = 'francoise_'; |
| 11 | my $channel = '#kiffer.de'; | 11 | my $channel = '#test'; |
| 12 | 12 | ||
| 13 | POE::Component::IRC->new("francoise"); | 13 | POE::Component::IRC->new("francoise"); |
| 14 | POE::Session->new ( _start => \&irc_start, | 14 | POE::Session->new ( _start => \&irc_start, |
| @@ -40,6 +40,13 @@ my %commands = ( 'help' => \&francoise_help, | |||
| 40 | 'alias' => \&francoise_alias, | 40 | 'alias' => \&francoise_alias, |
| 41 | ); | 41 | ); |
| 42 | 42 | ||
| 43 | # this helps identify jamaica autorejoiner and doublejoiner | ||
| 44 | # %jamaica holds encodedIP => nick | ||
| 45 | # %jamaicat holds encodedIP => lastjoin | ||
| 46 | # $jamaicatimeout says, after which timeout an IP is 'clear' | ||
| 47 | # for now 2 hours | ||
| 48 | my %jamaica; my %jamaicat; my $jamaicatimeout = 7200; | ||
| 49 | |||
| 43 | my $hv = join( '|', | 50 | my $hv = join( '|', |
| 44 | ( 'bin', 'bist', 'ist', 'is', 'sind', 'seid', | 51 | ( 'bin', 'bist', 'ist', 'is', 'sind', 'seid', |
| 45 | 'werde', 'wirst', 'wird', 'werden', 'werdet', | 52 | 'werde', 'wirst', 'wird', 'werden', 'werdet', |
| @@ -108,24 +115,35 @@ sub irc_nick { | |||
| 108 | 115 | ||
| 109 | #user parted | 116 | #user parted |
| 110 | sub irc_part { | 117 | sub irc_part { |
| 111 | my $nick = (split /!/, $_[ARG0])[0]; | ||
| 112 | my $channel = $_[ARG1]; | 118 | my $channel = $_[ARG1]; |
| 113 | print "#-> $nick has parted $channel\n"; | 119 | if ( $_[ARG0] =~ /(.+)!~(.+)@(.+)/ ) { |
| 120 | my $nick = $1; my $user = $2; my $host = $3; | ||
| 121 | print "#-> $nick has parted $channel\n"; | ||
| 122 | } | ||
| 114 | } | 123 | } |
| 115 | 124 | ||
| 116 | #user joined | 125 | #user joined |
| 117 | sub irc_join { | 126 | sub irc_join { |
| 118 | my ( $kernel, $channel ) = @_[KERNEL, ARG1]; | 127 | my ( $kernel, $channel ) = @_[KERNEL, ARG1]; |
| 119 | my $nick = (split /!/, $_[ARG0])[0]; | ||
| 120 | my $host = (split /@/, $_[ARG0])[1]; | ||
| 121 | 128 | ||
| 122 | if( $nick eq $current_nick ) { | 129 | if ( $_[ARG0] =~ /(.+)!~(.+)@(.+)/ ) { |
| 123 | $kernel->post( 'francoise', 'privmsg', $channel, 'Hier bin ich!'); | 130 | my $nick = $1; my $user = $2; my $host = $3; |
| 124 | } else { | 131 | |
| 125 | francoise_verifyuser( $nick, $host, 1 ); | 132 | if( $nick eq $current_nick ) { |
| 126 | } | 133 | $kernel->post( 'francoise', 'privmsg', $channel, 'Hier bin ich!'); |
| 134 | } else { | ||
| 135 | if( $host eq 'jamaica.kiffer.de' ) { | ||
| 136 | if( $jamaica{$user} && time() - $jamaicat{$user} < $jamaicatimeout ) { | ||
| 137 | $kernel->post( 'francoise', 'privmsg', $channel, "Ich glaub ja, $jamaica{$user} und $nick kennen sich." ) | ||
| 138 | } | ||
| 139 | $jamaica{$user} = $nick; $jamaicat{$user} = time(); | ||
| 140 | } | ||
| 127 | 141 | ||
| 128 | print "#-> $nick has joined $channel\n"; | 142 | francoise_verifyuser( $nick, $host, 1 ); |
| 143 | } | ||
| 144 | |||
| 145 | print "#-> $nick has joined $channel\n"; | ||
| 146 | } | ||
| 129 | } | 147 | } |
| 130 | 148 | ||
| 131 | #user quit | 149 | #user quit |
