From 541c3322acb4976b172cac6283c2285b9b996edc Mon Sep 17 00:00:00 2001 From: erdgeist <> Date: Sun, 31 Jul 2005 14:31:19 +0000 Subject: Verbtabellen, \!stat user und \!who, \!date, \!time --- bot.pl | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 58 insertions(+), 5 deletions(-) diff --git a/bot.pl b/bot.pl index bae4643..c95e65b 100644 --- a/bot.pl +++ b/bot.pl @@ -47,7 +47,34 @@ my $hv = join( '|', 'werde', 'wirst', 'wird', 'werden', 'werdet', 'war', 'warst', 'waren', 'wart', 'habe', 'hast', 'hat', 'haben', 'habt', - 'hatte', 'hattest', 'hatten', 'hattet' ) ); + 'hatte', 'hattest', 'hatten', 'hattet', + 'muss', 'muß', 'musst', 'mußt', 'muessen', 'müssen', 'muesst', 'mueßt', 'müsst', 'müßt' ) ); + +my %pasthv = ( 'bin' => 'war', 'bist' => 'warst', 'ist' => 'war', 'is' => 'war', 'sind' => 'waren', 'seid' => 'wart', + 'werde' => 'bin', 'wirst' => 'bist', 'wird' => 'ist', 'werden' => 'sind', 'werdet' => 'seid', + 'war' => 'war', 'warst' => 'warst', 'waren' => 'waren', 'wart' => 'wart', + 'habe' => 'hatte', 'hast' => 'hattest', 'hat' => 'hatte', 'haben' => 'hatten', 'habt' => 'hattet', + 'hatte' => 'hatte', 'hattest' => 'hattest', 'hatten' => 'hatten', 'hattet' => 'hattet', + 'muss' => 'musste', 'muß' => 'musste', 'musst' => 'musstest', 'mußt' => 'musstest', 'muessen' => 'mussten', + 'müssen' => 'mussten', 'muesst' => 'musstet', 'mueßt' => 'musstet', 'müsst' => 'musstet', 'müßt' => 'musstet' ); + +my %conjhv = ( 'bin' => 'wäre', 'bist' => 'wärst', 'ist' => 'wäre', 'sind' => 'wären', 'seid' => 'wärt', + 'werde' => 'würde', 'wirst' => 'würdest', 'wird' => 'würde', 'werden' => 'würden', 'werdet' => 'würdet', + 'war' => 'wäre', 'warst' => 'wärst', 'waren' => 'wären', 'wart' => 'wärt', + 'habe' => 'hätte', 'hast' => 'hättest', 'hat' => 'hätte', 'haben' => 'hätten', 'habt' => 'hättet', + 'hatte' => 'hätte', 'hattest' => 'hättest', 'hatten' => 'hätten', 'hattet' => 'hättet', + 'muss' => 'müsste', 'muß' => 'müsste', 'musst' => 'müsstest', 'mußt' => 'müsstest', 'muessen' => 'müssten', + 'müssen' => 'müssten', 'muesst' => 'müsstet', 'mueßt' => 'müsstet', 'müsst' => 'müsstet', 'müßt' => 'müsstet' ); + +my %futuhv = ( 'bin' => 'werde', 'bist' => 'wirst', 'ist' => 'wird', 'sind' => 'werden', 'seid' => 'werdet', + 'werde' => 'werde', 'wirst' => 'wirst', 'wird' => 'wird', 'werden' => 'werden', 'werdet' => 'werdet', + 'war' => 'bin', 'warst' => 'bist', 'waren' => 'sind', 'wart' => 'seid', + 'habe' => 'habe', 'hast' => 'hast', 'hat' => 'hat', 'haben' => 'haben', 'habt' => 'habt', + 'hatte' => 'habe', 'hattest' => 'hast', 'hatte' => 'hat', 'hatten' => 'haben', 'hattet' => 'habt', + 'muss' => 'muss', 'muß' => 'muss', 'musst' => 'musst', 'mußt' => 'mußt', 'muessen' => 'muessen', + 'müssen' => 'müssen', 'muesst' => 'müsst', 'mueßt' => 'müsst', 'müsst' => 'müsst', 'müßt' => 'müsst' ); + + my $starttime = time(); @@ -157,7 +184,7 @@ sub irc_pub_msg{ } #reply to whereis requests - if ( $msg =~ /^wo ist (\S+?)\??$/i ) { + if ( $msg =~ /^wo ist? (\S+?)\??$/i ) { my $wois_ = $1; my $wois = francoise_getbasenick( $1 ); my ($awaymsg) = $dbh->selectrow_array( "SELECT awaymsg FROM users WHERE nick = ? AND isaway = 'true'", undef, $wois); @@ -179,6 +206,8 @@ sub irc_pub_msg{ "SELECT trigger, hilfsverb, reply FROM knowledge WHERE trigger = ? ORDER BY RANDOM() LIMIT 1", undef, $msg ); $thr =~ s/^.*?(?: )(.*)$/$1/; $thr =~ s/!who/$nick/g; + $thr =~ s'!date'francoise_date()'eg; + $thr =~ s'!time'francoise_time()'eg; $kernel->post( 'francoise', 'privmsg', $channel, $thr ) if $thr; } @@ -191,10 +220,9 @@ sub irc_pub_msg{ sub irc_action{ my ( $who, $msg ) = @_[ ARG0, ARG2 ]; my $nick = francoise_getbasenick( ( split /!/, $who )[0] ); - #note whereis information $dbh->do( "UPDATE users SET isaway = true, awaymsg = ? WHERE nick = ?", undef, $1, $nick ) - if( $msg =~ /^ist (.+)$/ ); + if( $msg =~ /^ist? (.+)$/ ); } sub irc_priv_msg{ @@ -253,7 +281,11 @@ sub francoise_help { } sub francoise_stat { - my ( $kernel, $dest ) = @_; + my ( $kernel, $dest, $msg ) = @_; + + francoise_userstat( $kernel, $dest, $msg ), return + if $msg; + my $age = time() - $starttime; my $secs = $age % 60; my $mins = ( $age / 60 ) % 3600; @@ -277,6 +309,16 @@ sub francoise_stat { $kernel->post( 'francoise', 'privmsg', $dest, "Ich bin schon $agestring alt, kenne $usercnt Chatter und weiss ueber $knowcnt Dinge bescheid." ); } +sub francoise_userstat{ + my ( $kernel, $dest, $msg ) = @_; + + my $nick = francoise_getbasenick( $msg ); + my @userstat = $dbh->selectrow_array( "SELECT words, lines, w0rds, isaway, awaymsg FROM users WHERE nick = ?", undef, $nick ); + my $awaymsg = $userstat[3] ? " $nick ist momentan $userstat[4]." : ""; + + $kernel->post( 'francoise', 'privmsg', $dest, "$nick hat schon $userstat[0] Worte in $userstat[1] Zeilen von sich gegeben und $userstat[2] mal in den Kanal ge0red.$awaymsg"); +} + sub francoise_topten{ my ($kernel, $dest ) = @_; @@ -325,5 +367,16 @@ sub francoise_forget { sub francoise_donothing { } +sub francoise_time { + my ( $sec,$min,$hour) = localtime(time); + return sprintf "%02d:%02d:%02d", $hour, $min, $sec; +} + +my @mons = ('Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'); +sub francoise_date { + my ($sec,$min,$hour,$mday,$mon) = localtime(time); + return sprintf "%02d. %s", $mday, $mons[$mon]; +} + #start everything $poe_kernel->run(); -- cgit v1.2.3