The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Использование micq для создания ICQ ботов (icq fifo perl)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: icq, fifo, perl,  (найти похожие документы)
From: spanka <spanka at fannet.ru> Newsgroups: mail Date: Mon, 30 Aug 2004 14:31:37 +0000 (UTC) Subject: Использование micq для создания ICQ ботов Давно была идея сделать icq bot'a, и требовалось от него реагировать на определенные команды + оповещение. Можно написать своего icq bot'a используя библиотеки работы с icq, благо их можно свободно скачать из интернета. Мой выбор пал на консольного icq клиента micq (http://www.micq.org). Конфигурация самой программы micq не сложна, программа попросит ввесть уже существующие uin/pass, либо зарегистрировать новые. Теперь основное, выбрал я micq потому что у неё есть так называемый remote-control - это обычный pipe, который позволяет общаться с программой, запустив её например в background. Запустите программу (если вы не укажите параметр -b BASEDIR, то программа будет хранить все свои файлы у вас в ~/.micq/), в pipe нужно писать теже команды, которые вы бы писали в самой micq, например. echo "msg UIN hello, kotiki rulez tommorow" > BASEDIR/remote-control - эта комманда пошлёт UIN'у сообщение "hello, kotiki rulez tommorow", или: echo "finger UIN" > BASEDIR/remote-control - выдаст в micq информацию о UIN'e т.е. хотя бы на базе этого можно уже написать скрипты, который будут оповещать вас о чем то. Теперь, нужно чтобы бот реагировал на определенные команды и отсылал результат этих команд. Нужно придумать механизм общения самой icq, с каким то вашем внешнем обработчиком, ничего лучше чем pipe придумать нельзя :). создаем pipe: mkfifo /tmp/micq.pipe и говорим чтобы micq весь свой вывод перенаправляла в него: /home/spanka/micq -b /var/tmp/icq > /tmp/micq.pipe чтобы проверить, что все работает как надо, запустите tail -f /tmp/micq.pipe и вы должны увидеть, вывод программы micq. Теперь вам осталось написать программу которая читает пайп и парсит вывод micq. Для примера вот заготовка :)) #!/usr/bin/perl open(FIFO, "<$ARGS[0]") || die "Can't open file: $ARGS[0]"; while (<FIFO>) { тут_вы_уже_сами_парсите. } close(FIFO); ну и последние, чтобы запустить micq в background я пользую довольно корявый способ, если найдете лучше, буду только рад :) /usr/local/bin/icq_parsers.pl /tmp/icq.pipe >/dev/null 2>&1 #parser tail -f /dev/null | /home/spanka/micq -b /var/tm/icq > /tmp/icq.pipe 2>&1 & #micq

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ Линейный режим | Показать все | RSS ]
 
  • 1.1, Saint_Byte, 14:49, 24/03/2005 [ответить] [смотреть все]
  • +/
    Какая версия ??? У меня с последнией нечего не получается =(
     
     
  • 2.4, Denis, 21:02, 06/10/2005 [^] [ответить] [смотреть все] [показать ветку]
  • +1 +/
    опечатался автор в строке где tail -f dev null а надо так tail -f micq pipe... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.5, Basil, 10:05, 25/11/2005 [^] [ответить] [смотреть все]  
  • +/
    Нет, не будет 1 Труба micq pipe вообще не существует опечатка у вас 2 tmp... весь текст скрыт [показать]
     
  • 1.2, chip, 21:16, 26/03/2005 [ответить] [смотреть все]  
  • +/
    ИМХО, вся эта конструкция слишком хлюпкая. У pipe __всегда__ должен быть читатель и писатель! Со всеми вытекающими...
     
  • 1.6, GuGu, 11:41, 23/01/2006 [ответить] [смотреть все]  
  • +/
    Мне кажется, тут лучше было бы использовать expect
     
  • 1.8, Ruslan, 01:27, 30/09/2006 [ответить] [смотреть все]  
  • +/
    Я запускаю вот так...
    echo set color off >a && tail -f a |micq >>b
     
  • 1.9, obl, 18:50, 13/10/2006 [ответить] [смотреть все]  
  • +/
    чтото не работает данная конструкция
    может что новое придумал в мАське :)
     
     
  • 2.10, obl, 14:08, 17/10/2006 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    у меня вот такая конструкция вот стартовый скрипт usr local bin bash echo -n... весь текст скрыт [показать] [показать ветку]
     
  • 1.11, Timka, 13:55, 03/11/2006 [ответить] [смотреть все]  
  • +/
    что-то последнюю неделю не работает micq :( это у всех так или только у меня?
     
     
  • 2.12, sib, 22:55, 03/11/2006 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Только поставил micq, вроде все верно, но выдает Connection v8 timed out И ни п... весь текст скрыт [показать] [показать ветку]
     
  • 1.13, Timka, 22:37, 08/11/2006 [ответить] [смотреть все]  
  • +/
    вышла micq 0.5.2, в ней все пофикшено.
    ура.
     
  • 1.14, etz, 06:16, 28/02/2007 [ответить] [смотреть все]  
  • +/
    Кто-нибудь сталкивался с ограничением сервака на интенсивность посылки мессаг? сервер начинает орать "You're sending data too fast - stop typing now, or the server will disconnect!"
    Как это можно обойти средствами micq'а ? никаких настроек очереди сообщений у него не нашёл..
     
  • 1.15, Александр, 12:22, 28/06/2007 [ответить] [смотреть все]  
  • +/
    А чем вариант 'micq ... < /dev/null' плох?
    Зачем делать tail -f /dev/null | micq ...?
    Один процесс таки лучше чем 2.
     
  • 1.16, ForeverYoung, 16:15, 02/07/2007 [ответить] [смотреть все]  
  • +/
    я лично сделал так foreveryoung cat icqbot script usr bin perl _ 1 ... весь текст скрыт [показать]
     
  • 1.17, Slimy Cat, 21:18, 05/02/2008 [ответить] [смотреть все]  
  • +/
    А как быть, если надо "оторвать" бота от сеанса (у меня не micq, а climm)?
    Я пробовал такое:
      nohup /usr/local/bin/climm 2>&1 > /dev/null &
    Работает, но состояние процесса RUN и ПОЛНАЯ загрузка процессора... idle = 0.00%
    Хотя если загнать его просто в бэкграунд в текущем сеансе, все нормально, статус select, WCPU ~ 0.5%

    virtual:~# top -n
    19 processes:  2 running, 17 sleeping
      PID USERNAME  THR PRI NICE   SIZE    RES STATE    TIME   WCPU COMMAND
    7709 root        1 132    0  3856K  2252K RUN      1:14 92.25% climm
      753 root        1  96    0  1400K   832K select   0:22  0.00% syslogd

    Подозреваю, что "оторванный" от stdin процесс начинает опрашивать либо несуществующий stdin, либо пайп, чем и грузит проц.
    Кто что посоветует?
    Screen не предлагать, т.к. его в *.tbz нет, а компилятор отсутствует по определению (так надо).

     
     
  • 2.20, GoodOkk, 17:38, 25/11/2009 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    У меня подобная проблема. Как заставить climm не вылетать, после того, как вылогиниваешься из консоли? даже со screen не могу разобраться как сделать, аська не запускается, если перенаправлять вывод в пайп, а если не перенаправлять, то все нормально, но, тогда смысл бота теряется :(
     
     
  • 3.21, Alexey, 19:33, 25/11/2009 [^] [ответить] [смотреть все]  
  • +/
    >У меня подобная проблема. Как заставить climm не вылетать, после того, как
    >вылогиниваешься из консоли? даже со screen не могу разобраться как сделать,
    >аська не запускается, если перенаправлять вывод в пайп, а если не
    >перенаправлять, то все нормально, но, тогда смысл бота теряется :(

    Я запускаю из скрипта запуска - /usr/local/bin/screen -d -m /usr/local/bin/climm
    Чтобы не вылетал - нужно 1. Запустить screen 2. Запустить в нем climm 3. "Оторвать" screen от консоли (detach) 4. Можно выходить из консоли по exit
    Читайте мануал по командным клавишам screen и параметрам запуска.
    Может быть, как-нибудь соберусь и напишу-таки небольшое руководство по установке и настройке icq-бота под управлением climm.
    PS НЕ РЕКЛАМА! Если таковое будет написано (+- около НГ), читать по адресу http://slimy-cat.blogspot.com/


     
  • 1.18, Дмитрий, 00:26, 15/07/2009 [ответить] [смотреть все]  
  • +/
    Есть вопросы... что то я не въехал.
    MICQ работает нормальною, PIPE посмотрел командой tail

    Вопрос такой насущный....

    Как прочитать полученное например PHP скриптом?
    и как отправить ответ в MICQ этим скриптом?

     
     
  • 2.19, Alexey, 12:12, 21/07/2009 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    >Есть вопросы... что то я не въехал.
    >MICQ работает нормальною, PIPE посмотрел командой tail
    >
    >Вопрос такой насущный....
    >
    >Как прочитать полученное например PHP скриптом?
    >и как отправить ответ в MICQ этим скриптом?

    Смогу ответить кратко, пока что я занят и не имею возможности расписать подробно.
    Я не использовал tail, я импользовал каналы (pipes).
    Обработчик событий прописывается в конфиге climm (можно прописать исполняемый скрипт, PHP-скрипт и тд.)
    Данные берутся и отправляются в каналы (вместо экрана).
    По предыдущему вопросу - решилось, screen нашел в пакадже, все работает отлично.

     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:





      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor