Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перл для IRC сетей, Написание ботов! 
:(
    Опции темы
OutlawZ
  Дата 19.10.2007, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 269
Регистрация: 19.10.2007

Репутация: нет
Всего: нет



Приветствую вас программисты, вот прочитал книгу "Освой перл за 24 часа", конечно мыло что еще понимаю, сижу с английской документацией пытаюсь понять что к чему. Но дело не в этом, вот написал irc бота на перле все проверил все работает, потом снова решил второй написать все делал точно так же, но бот не хотел запускаться, проверял его полностью все время орал что есть ошибка! Вот код бота может кто скажет в чем дело?
Код

#!/usr/bin/perl

$host="tcn.msk.solarnet.ru";
$port="6667";
$nick="Parasite";
$ident="Parasite6";
$chan="#555";

use Socket;
 socket(SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp'))
     or die "Couldn`t create socket : $!\n";
 $iaddr=inet_aton($host);
 $paddr=sockaddr_in($port,$iaddr);
 print "\n>> Connecting to $host:$port...\n";
 connect(SOCK, $paddr)
     or die "Couldn`t connect to $host:$port : $!\n";
 for($i=0; $i<4; $i++){
  $data=<SOCK>;
  print($data);
 }
print ">> Sending NICK and IDENT...\n";
 send (SOCK, "NICK $nick\n", 0);
 send (SOCK, "USER $ident localhost localhost :$nick\n", 0);
 for($i=0; $i<10; $i++){
  $data=<SOCK>;
  print($data);
 }
print ">> Join chanel $chan...\n";
 send (SOCK, "JOIN $chan\n", 0);
while($data=<SOCK>){
  print($data);
 }
@part=split(/:/,$data);
  if(@part[0] eq "PING "){
    print ">> PONG :@part[1]\n";
    send (SOCK, "PONG :@part[1]\n", 0);
}

Основная часть бота, обработчик событий писать пока не стал! можно еще вопросик..можно где нить найти русскую документацию по перлу а то я нет весь обсматрел и нечего не нашел! Зарание спасибо!


--------------------
user posted image
user posted image
PM MAIL   Вверх
arto
Дата 19.10.2007, 07:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



perldoc strict;
PM MAIL ICQ   Вверх
under_sun
Дата 19.10.2007, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 3.10.2007
Где: Ебург

Репутация: нет
Всего: 17



--------------------
TMTOWTDI
PM MAIL ICQ   Вверх
korob2001
Дата 19.10.2007, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Здесь можешь скачать Е-книги, не только по Perl.
http://www.all-ebooks.com


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
OutlawZ
Дата 19.10.2007, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 269
Регистрация: 19.10.2007

Репутация: нет
Всего: нет



Спасибо большое!


--------------------
user posted image
user posted image
PM MAIL   Вверх
nitr
Дата 19.10.2007, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



Есть огромное количество ботов на CPAN, и даже рабочих ;)


--------------------
PM   Вверх
dya
Дата 20.10.2007, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 27.6.2007

Репутация: 1
Всего: 1



Код

#!c:/perl/bin/perl -w

use strict;
use IO::Socket;

my $server = 'localhost'; #хост
my $nick = 'botname'; #имя бота
my $port = '6667'; #порт
my $chl = '#main'; #канал

print "INFO: $nick bot is starting\n";

my $input;

while (1) {
    print "INFO: Open socket to $server:$port\n";
    my $sock = new IO::Socket::INET(PeerAddr => $server, PeerPort => $port, Proto => 'tcp') or print "WARNING: Can\'t open socket to $server:$port\n";
    unless ( $sock ) {
        print "INFO: Reconnect in 10sec.\n" and sleep(10);
    } else {
        print $sock "NICK $nick\r\n";
        print $sock "USER $nick * * :perl bot\r\n"; #индификация бота

        while ( $input = <$sock> ) {
            if ( $input =~ /^PING(.*)\r\n$/isg ) {
                print $sock "PONG $1\r\n";
            }
            elsif ( $input =~ /004/ ) {
                last;
            }
            elsif ( $input =~ /433/ ) {
            print "INFO: Nickname is already in use.\n";
            last;
            }
        }

        print $sock "JOIN $chl\r\n";

        while ( $input = <$sock> ) {
            if ( $input =~ /^PING(.*)\r\n$/isg ) {
                print $sock "PONG $1\r\n";
            }
            print win2dos( $input );
        }
    }
}

sub win2dos {
    my $i = shift;
    chop $i;
    $i =~ tr/\300-\377\250\270/\200-\257\340-\361/;
    return $i."\n"; 
}

rfc 2812
Бот под win32

Это сообщение отредактировал(а) dya - 20.10.2007, 19:37
PM MAIL   Вверх
nitr
Дата 20.10.2007, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



Практически все боты на CPAN'е реализовывают протокол IRC, так что советую не создавать "велосипедов", для изучение не то выбрано (имхо).


--------------------
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1197 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.