Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
ПОМОГИТЕ -= Perl-net::irc =- |

18.09.2008, 13:55
|
|
Познающий
Регистрация: 09.11.2007
Сообщений: 33
Провел на форуме: 73891
Репутация:
6
|
|
ПОМОГИТЕ -= Perl-net::irc =-
Начал я писать IRC бота на PERL....
use PERLDOC and GOOGLE.
вот что получилось:
Код:
#!/usr/bin/perl -w
use Net::IRC;
$kanal = '#r2';
$admin = 'qbbr1';
$password = 'qwe123';
$irc = new Net::IRC;
$conn = $irc->newconn(Nick=>'qbbr_bot',Server=>'irc.antichat.net',Port=>7771);
$conn->add_global_handler('376', \&on_connect);
$conn->add_global_handler('disconnect', \&on_disconnect);
$conn->add_global_handler('kick', \&on_kick);
$conn->add_handler('msg', \&on_msg);
$conn->add_handler('public', \&on_public);
$irc->start;
sub on_connect {
$self = shift;
$self->privmsg('nickserv', "identify $password");
$self->join($kanal);
$self->privmsg($kanal, "HIHO ALL xD");
}
sub on_disconnect {
$self = shift;
$self->connect();
}
sub on_kick {
$self = shift;
$self->join($kanal);
$self->privmsg($kanal, "SLIW...nah kick?");
}
sub on_msg {
$self = shift;
$self->privmsg($admin, "private msg");
}
sub on_public {
$self = shift;
$self->privmsg($kanal, "Im bot");
}
ВЗЫВАЮ ВАС НА ПОМОЩ
Помогите разобраться)
а теперь вопросы:
1) как сделать чтоб он, не на все -msg public- отвечал "Im bot", а чтоб на определенные команды.
2) (1) + команды принимались только от человека $admin
3) чтобы бот отвечал человеку, который написал в приват.
4) и как использовать CTCP requests
5) в чём разница между [$conn->add_global_handler] и
[$conn->add_handler]
Конечно таких ботов куча... но я не осилил исходники(( уж сильно большие и непонятные для меня письмена.
З.Ы Я нович0к в Пёрле, сильно не грузить xD
З.Ы.Ы Ответы GOOGLE вам помощ и PERLDOC читай - НЕ ПРИНИМАЮТСЯ!
З.Ы.Ы.Ы Зарание спасибо!
|
|
|

18.09.2008, 14:53
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.08.2007
Сообщений: 1,237
Провел на форуме: 18127311
Репутация:
1676
|
|
1) как сделать чтоб он, не на все -msg public- отвечал "Im bot", а чтоб на определенные команды.
2) (1) + команды принимались только от человека $admin
3) чтобы бот отвечал человеку, который написал в приват.
4) и как использовать CTCP requests
5) в чём разница между [$conn->add_global_handler] и
[$conn->add_handler]
1.
sub on_public {
my ($self, $event) = @_;
my $text = $event->{args}[0];
if($text eq 'test') {$self->privmsg($kanal, "Im bot");}
}
2.
sub on_msg {
my ($self, $event) = @_;
my $from = $event->{nick};
if($from eq $admin){ $self->privmsg($admin, "private msg");}
}
3.
sub on_msg {
my ($self, $event) = @_;
my $from = $event->{nick};
$self->privmsg($from, "private msg");
}
5.
# This sub will assign a user's custom function to a particular event which
# might be received by any Connection object.
# Takes 3 args: the event to modify, as either a string or numeric code
# If passed an arrayref, the array is assumed to contain
# all event names which you want to set this handler for.
# a reference to the code to be executed for the event
# (optional) A value indicating whether the user's code should replace
# the built-in handler, or be called with it. Possible values:
# 0 - Replace the built-in handlers entirely. (the default)
# 1 - Call this handler right before the default handler.
# 2 - Call this handler right after the default handler.
# These can also be referred to by the #define-like strings in %define.
sub add_global_handler {
my ($self, $event, $ref, $rp) = @_;
return $self->_add_generic_handler($event, $ref, $rp, \%_udef, 'add_global_handler');
}
# This sub will assign a user's custom function to a particular event which
# this connection might receive. Same args as above.
sub add_handler {
my ($self, $event, $ref, $rp) = @_;
return $self->_add_generic_handler($event, $ref, $rp, $self->{_handler}, 'add_handler');
}
|
|
|

18.09.2008, 15:05
|
|
Познающий
Регистрация: 09.11.2007
Сообщений: 33
Провел на форуме: 73891
Репутация:
6
|
|
по 2) пункту:
Надо не приват мессаги, а общий чат.
Как сделать проверку по нику из общего чата.
Суть такая:
Есть список ников которым доступны команды управлением ботом (например команда !restart)
Эти люди написали в чате !restart и бот ->exit(1)
Если левый человек напишет(которого нет в adminliste), то ничего не произойдет.
|
|
|

18.09.2008, 15:16
|
|
Познающий
Регистрация: 09.11.2007
Сообщений: 33
Провел на форуме: 73891
Репутация:
6
|
|
+
и еще есть трабл...
see it:

скрипт работает, но ошибки летят...
с чем это связано?
|
|
|

18.09.2008, 15:26
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.08.2007
Сообщений: 1,237
Провел на форуме: 18127311
Репутация:
1676
|
|
Ошибки хз, а какая разница в общем чате или нет? Проверяй просто ник того кто отправляет и выполняй в зависимости от этого действие
|
|
|

18.09.2008, 15:51
|
|
Познающий
Регистрация: 09.11.2007
Сообщений: 33
Провел на форуме: 73891
Репутация:
6
|
|
разница есть....
мне надо чтоб в общий чат работало)
вот только хз как реализовать...
|
|
|

18.09.2008, 16:30
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.08.2007
Сообщений: 1,237
Провел на форуме: 18127311
Репутация:
1676
|
|
В чем проблема в функции on_public дописать строчку
my $from = $event->{nick};
И в зависимости от содержимого по-разному обрабатывать?
|
|
|

18.09.2008, 17:04
|
|
Познающий
Регистрация: 09.11.2007
Сообщений: 33
Провел на форуме: 73891
Репутация:
6
|
|
а точно) спс
|
|
|
|
 |
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
BookS: PHP, PERL, MySQL, JavaScript, HTML, ajax, Веб Дизайн
|
M1nK0 |
PHP, PERL, MySQL, JavaScript |
10 |
27.06.2009 21:35 |
|
Помогите запустить VKontakte checker на PERL.
|
MaTpOc |
PHP, PERL, MySQL, JavaScript |
28 |
25.06.2008 13:45 |
|
помогите с perl
|
stalles |
Форумы |
2 |
04.11.2005 15:06 |
|
Books Perl
|
FRAGNATIC |
PHP, PERL, MySQL, JavaScript |
0 |
11.08.2005 16:58 |
|
Помогите найти книги по php и perl
|
SanyaX |
PHP, PERL, MySQL, JavaScript |
2 |
06.07.2005 08:00 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|