PDA

Просмотр полной версии : поиск Perl+icq_bot


KENNY_McCORMICK
10.09.2008, 13:47
Исчу icq bot'a на perl'е или python'е
поделитесь люди добрые)
с меня +

Gifts
10.09.2008, 14:24
Например тут http://search.cpan.org/dist/Net-OSCAR/lib/Net/OSCAR.pm

biophreak
10.09.2008, 14:35
Выкладывал тут с примитивными ф-иями, бот юзает все тот же Net::OSCAR, простейшего бота на нем написать,который будет отвечать "Привет" на любое сообщение - 10 строчек максимум)
Так же делал ICQ2IRC гейт на базе него-же( http://icq2irc.googlecode.com )
Вот пример бота
#!/usr/bin/perl -s
use strict;
use warnings;
use diagnostics;
use Net::OSCAR;
my $uin = 123456;
my $passwd = 'qwerty';
my $adminuin = 654321; ## Your UIN
my $icq = Net::OSCAR->new;
$icq->set_callback_im_in(\&in) or die '[ERROR] [Cannot set callback] [$!]';
$icq->signon($uin, $passwd) or die '[ERROR] [Cannot sign on] [$!]';
$icq->do_one_loop while (not $icq->is_on);
$icq->do_one_loop while ($icq->is_on);
sub in {
my($oscar, $sender, $message, $is_away) = @_;
print "$sender: $message\n";
$oscar->signoff() if ($message eq '!quit' and $sender eq $adminuin);
$oscar->send_im($sender,`uptime`) if ($message eq '!uptime' and $sender eq $adminuin);

}

KENNY_McCORMICK
10.09.2008, 15:48
>>biophreak

http://img222.imageshack.us/img222/4035/perlicqerroraj7.th.jpg (http://img222.imageshack.us/my.php?image=perlicqerroraj7.jpg)

see up....
ето типо он OSCAR подключить на может?
шо делатЬ?))

Gifts
10.09.2008, 15:54
KENNY_McCORMICK ты модуль то подключи

KENNY_McCORMICK
10.09.2008, 15:56
KENNY_McCORMICK ты модуль то подключи

ppm install Net-OSCAR так?

KENNY_McCORMICK
10.09.2008, 16:13
теперь говорит:
http://img218.imageshack.us/img218/5236/perlicqerror2ss1.th.jpg (http://img218.imageshack.us/my.php?image=perlicqerror2ss1.jpg)

biophreak
10.09.2008, 17:31
perl -V покажи
А вообще что-то с прототипами,видимо когда сокет создается...неблокирующийс создать не может =\
Под виндой даже не тестил оскар)

n3m0
10.09.2008, 19:07
'[ERROR] [Cannot set callback] [$!]'
тут наверно требуются не одинарные кавычки , а двойные , т.к. не будет интерполяции и спец. символ $! не чего интересного не скажет.

biophreak
10.09.2008, 23:47
Да,ты прав,спс,за 2 минуты писал)))

KENNY_McCORMICK
12.09.2008, 09:56
#!/usr/bin/perl -s
use strict;
use warnings;
use diagnostics;
use Net::OSCAR;
my $uin = тут_юин;
my $passwd = 'пасс_к_нему';
my $adminuin = мой_юин;
my $icq = Net::OSCAR->new;
$icq->set_callback_im_in(\&in) or die "[ERROR] [Cannot set callback] [$!]";
$icq->signon($uin, $passwd) or die "[ERROR] [Cannot sign on] [$!]";
$icq->do_one_loop while (not $icq->is_on);
$icq->do_one_loop while ($icq->is_on);
sub in {
my($oscar, $sender, $message, $is_away) = @_;
print "$sender: $message\n";
$oscar->signoff() if ($message eq '!quit' and $sender eq $adminuin);
$oscar->send_im($sender,`uptime`) if ($message eq '!uptime' and $sender eq $adminuin);

}

исправил ' -> "
так же пишет:
http://img218.imageshack.us/img218/5236/perlicqerror2ss1.th.jpg (http://img218.imageshack.us/my.php?image=perlicqerror2ss1.jpg)

Подпись ошибки Perl Command Line Interpreter
AppName: perl.exe AppVer: 5.10.0.1003 ModName: msvcrt.dll
ModVer: 7.0.2600.2180 Offset: 0003709c
чё за ххх? моск пухнет уже)

KENNY_McCORMICK
12.09.2008, 09:58
perl -V покажи
А вообще что-то с прототипами,видимо когда сокет создается...неблокирующийс создать не может =\
Под виндой даже не тестил оскар)

perl -V here
C:\Documents and Settings\Admin>perl -V
Set up gcc environment - 3.4.5 (mingw-vista special r3)
Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
Platform:
osname=MSWin32, osvers=5.00, archname=MSWin32-x86-multi-thread
uname=''
config_args='undef'
hint=recommended, useposix=true, d_sigaction=undef
useithreads=define, usemultiplicity=define
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=undef, use64bitall=undef, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='gcc', ccflags ='-DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYP
T -DUSE_SITECUSTOMIZE -DPRIVLIB_LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLI
CIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX -DHASATTRIBUTE -fno-strict-aliasing -
mms-bitfields',
optimize='-O2',
cppflags='-DWIN32'
ccversion='', gccversion='3.4.5 (mingw-vista special r3)', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=10
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='__int64', lseeksi
ze=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='g++', ldflags ='-L"C:\Perl\lib\CORE"'
libpth=\lib
libs=-lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32
-lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -
lodbccp32 -lmsvcrt
perllibs=-lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshel
l32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc
32 -lodbccp32 -lmsvcrt
libc=msvcrt.lib, so=dll, useshrplib=true, libperl=perl510.lib
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
cccdlflags=' ', lddlflags='-mdll -L"C:\Perl\lib\CORE"'


Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS
PERL_MALLOC_WRAP PL_OP_SLAB_ALLOC USE_ITHREADS
USE_LARGE_FILES USE_PERLIO USE_SITECUSTOMIZE
Locally applied patches:
ActivePerl Build 1003 [285500]
33741 avoids segfaults invoking S_raise_signal() (on Linux)
33763 Win32 process ids can have more than 16 bits
32809 Load 'loadable object' with non-default file extension
32728 64-bit fix for Time::Local
Built under MSWin32
Compiled at May 13 2008 16:52:49
@INC:
C:/Perl/site/lib
C:/Perl/lib
.

biophreak
12.09.2008, 13:38
Хм...виста чтоль?:)
PS: perl -MNet::OSCAR -le'print $Net::OSCAR::VERSION,$Net::OSCAR::REVISION' покажи
PPS: Да и попробуй модуль не из ppm ставить, а с CPAN'а

KENNY_McCORMICK
12.09.2008, 14:07
с одной ковычкой
C:\Documents and Settings\Admin>perl -MNet::OSCAR -le 'print $Net::OSCAR::VERSIO
N,$Net::OSCAR::REVISION'
Prototype mismatch: sub Net::OSCAR::Connection::F_GETFL () vs none at (eval 5) l
ine 1.
Prototype mismatch: sub Net::OSCAR::Connection::F_SETFL () vs none at (eval 6) l
ine 1.
Prototype mismatch: sub Net::OSCAR::Connection::O_NONBLOCK () vs none at (eval 7
) line 1.
Can't find string terminator "'" anywhere before EOF at -e line 1.
с двумя
C:\Documents and Settings\Admin>perl -MNet::OSCAR -le "print $Net::OSCAR::VERSIO
N,$Net::OSCAR::REVISION"
Prototype mismatch: sub Net::OSCAR::Connection::F_GETFL () vs none at (eval 5) l
ine 1.
Prototype mismatch: sub Net::OSCAR::Connection::F_SETFL () vs none at (eval 6) l
ine 1.
Prototype mismatch: sub Net::OSCAR::Connection::O_NONBLOCK () vs none at (eval 7
) line 1.
1.925$Revision: 1.221 $

C:\Documents and Settings\Admin>ver
Microsoft Windows XP [Версия 5.1.2600]
C:\Documents and Settings\Admin>

З.Ы а как из CPAN'а ставить?

KENNY_McCORMICK
16.09.2008, 11:04
up

biophreak
16.09.2008, 11:13
Хм...как из цпана ставить
http://snipplr.com/view/3718/how-to-start-cpan-on-windowsactiveperl/
Если вкратце,то perl -MCPAN -e'install Module::Name' или же perl -MCPAN -eshell и там уже install Module::Name

ЗЫЖ А бот, что я запостил тут - рабочий, проверял, так что ищи косяки в винде, вроде как в офдоке к Net::OSCAR не заявлена полная поддержка Win32.Так что делайте выводы;)