Support Forums
perl IRC bot - Printable Version

+- Support Forums (https://www.supportforums.net)
+-- Forum: Categories (https://www.supportforums.net/forumdisplay.php?fid=87)
+--- Forum: Coding Support Forums (https://www.supportforums.net/forumdisplay.php?fid=18)
+---- Forum: Perl Programming Support (https://www.supportforums.net/forumdisplay.php?fid=31)
+---- Thread: perl IRC bot (/showthread.php?tid=943)

Pages: 1 2


perl IRC bot - brett7 - 10-09-2009

A basic irc bot written by me brett7 in perl, this will connect to a server and channel of your choice then idle. There is some example commands you can use to make your own!

http://brett7.pastebin.com/f7232f0be

Code:
#!/usr/bin/perl -w
# Basic IRC Bot.
# Coded by brett7.

use strict;
use IO::Socket;
use Socket;
my $server = $ARGV[0];
my $port= '6667';
my $channel = $ARGV[1];
my $nick = $ARGV[2];
my $identify = "brett";
my $name = "brett";

if (@ARGV != 3){
print q{
#########################################################
#                    brett7's irc bot                   #
#Error: correct usage "irc.pl <server> <channel> <nick>"#
#########################################################
};
exit;
}
my $socket = new IO::Socket::INET(PeerAddr => $server, PeerPort => $port, Proto => "tcp") or die "Error connecting";
print " - brett7's irc bot\n\n";
print " - Connecting  To $server on channel $channel with nickname $nick!\n\n";
print $socket "NICK $nick\r\n";
print $socket "USER $identify 8 * :$name\r\n";
print $socket "JOIN $channel\r\n";
print " - Connected  To $server successfully!\n\n";
while (my $response = <$socket>)
{
  chop $response;
  if ($response =~ /^PING(.*)$/i) { print $socket "PONG $1\r\n"; }
  if ($response =~ /^.*!ver(.*)$/i) { print $socket ("PRIVMSG $channel brett7's bot\r\n"); }
  if ($response =~ /^.*!quit(.*)$/i) { print $socket ("QUIT\r\n"); }
}



RE: perl IRC bot - jolttz - 10-09-2009

Very basic but not bad.
Good job.


RE: perl IRC bot - nevets04 - 10-09-2009

The bot only connected succesfully if I didnt put the # infront of the channel name, so it actually didnt connect to anything. any idea whats wonrg
Btw: If I do put the # I get #########################################################
# brett7's irc bot #
#Error: correct usage "irc.pl <server> <channel> <nick>"
#########################################################
and im doing for example "perl irc.pl irc.malvager.com #b hublebla"


RE: perl IRC bot - dongblues - 10-09-2009

check:

my $port= '6667';
my $name = "brett";

follow brett's post


RE: perl IRC bot - brett7 - 10-10-2009

nevets you must put # before the channel name for example
irc.pl irc.server.com #channel revets04

and thanks for comments guys Smile


RE: perl IRC bot - C!RCU!T tr0jAn ☠ - 10-10-2009

Looks good.

too short.


RE: perl IRC bot - flAmingw0rm - 10-26-2009

Not bad, thanks a lot.


RE: perl IRC bot - Socrates - 10-28-2009

Your bot pings out Sad no ping code line. Might want to edit ;)


RE: perl IRC bot - wat - 12-05-2009

When your bot joins it doesn't parse server input after NICK and USER. It's really a miracle that you got it to work.

Also, your regex is kind of messed up. /^.*!quit(.*)$/i. In the first bit '/^.*' the .* will match any character, 0 or more times making the '^' meaningless. The (.*) is also unneeded. If you want to make sure you've got input coming from a channel, use something like: /^: (.*?)!.*: $text/, $text being !quit in your case. (the nick will also be in $1)


RE: perl IRC bot - nextlive - 02-12-2010

Very basic, but it's good Smile