The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
#!/usr/bin/pugs

use v6;

# version 0.1, michael scherer, misc@zarb.org
# some additions by:
#     stevan little <stevan@iinteractive.com>
#     Luke Palmer
# the first perl6 irc bot ( or at least, what i hope to be the first ).

say "A irc perl 6 bot";

my $nick = @*ARGS[0] // "didie_p6";
my $server = "irc.freenode.net";
my $chan = "#perl6";
my $debug;

my $hdl = connect($server, 6667);
# no auto flush yet
#$hdl.autoflush(1);

$hdl.say("NICK $nick\nUSER $nick $nick $nick $nick\n");
$hdl.flush;

# first line is not so important, it can be discarded ( or i hope )
my $ligne = readline($hdl);

$hdl.say("JOIN $chan\n");
$hdl.flush;

say "Joined $chan";

while ($ligne = readline($hdl))
{
    chomp($ligne);
    say "Serveur said : $ligne"; # if $debug;

    given $ligne {

        when rx:perl5/^PING/ {
    	    say "Reply to ping";
	        $hdl.say("PONG $nick\n");
	        $hdl.flush;
        }

        when rx:perl5/$nick/ 
          && rx:perl5/^\:(.*?)\!.*?\sPRIVMSG $chan/ {
            my $writer = $0;
            given $ligne {   
                when rx:perl5/\b(?i:hello|hi)\b/ {
                    $hdl.say("PRIVMSG $chan :Hello $writer from a perl 6 irc bot\n");
                    $hdl.flush;
                }
            }
        }
                
    };

}