Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Написание instant messaging Бота на AutoIt

Автор: ynbIpb
Дата сообщения: 01.06.2009 17:24
классно!
думаю нужно к каждой команде прикрутить распознование знака ?, при появление которого отвечало бы подробной справкой по команде типа: !dir?
Автор: vicbox777
Дата сообщения: 01.06.2009 21:25

Цитата:
думаю нужно к каждой команде прикрутить распознование знака ?

Можно и так:
Код: $sMsg="!dir? C:\"

Switch $sMsg
Case 'a1'
;команда пишеться тута
Case "!dir"&stringregexpreplace($sMsg,"!dir(.*)","\1")
If
stringregexpreplace($sMsg,"!dir(\?)+(.*)","\1")=="?" Then
$Tekst="Описание команды !dir"&@CRLF&"!dir -получить список файлов\папок указанной директории; полная команда должна быть такой: !dir путь_к_каталогу (Пример: !dir C:\ или !dir C:\Program Files) "
MsgBox("0","Описание команды !dir",$Tekst)
;тоесть если после !dir идет вопросительный знак - !dir?, то только пошлется описание (вместо MsgBox)
Else
MsgBox(0,"",
_FileList_bot($sMsg))
EndIf
EndSwitch
Func _FileList_bot($sMsg) ;это только упрощение для примера
Return $sMsg
EndFunc
Автор: ynbIpb
Дата сообщения: 01.06.2009 21:44
ну я предполагал типа команда !help
выдаёт список всех команд и краткое описание, чтоб в одну строку умещалось по каждой команде.
Типа:
Добро пожаловать в справочную систему бота.
!proclist - получает список запущеных процессов
!dir - получает список файлов\папок указанной директории
!filedel - удаляет указанный файл
!folderdel - удаляет указанный каталог
!alldrives - список имеющихся дисков и их типы
а у каждой команды можно детально посмотреть с примерами. Наверное это удобно.

нас осталось только двое)) никто не залядывает в тему(( , вроде timsky интересовался.
Автор: vicbox777
Дата сообщения: 01.06.2009 22:55
тогда придется переделывать эту команду:
$sPath=StringRegExpReplace($sMsg,".*dir(?:\s)*(.*)","\1")
учитывая еще то что вопросительный знак в !dir? может как быть так и не быть, сможеш сделать?
Ой, а это и не нужно же...
Пусть будет так как ты говориш. Лично я участвую, чтоб лучше изучить Autoit, ведь так лучше изучать, когда что то делать, н идея стосовно бота - интересная, поэтому заинтересовала еще с самого начала(С самого начала мне нужно была только лишь возможность удаленно узнать состояние текущей закачки файлов...). Думаю еще что 2 файла - 1 посредник, а второй обработчик команд, тоже идея самая правильная; когда Sproxy напишет jabber Udf, то схему можно будет оставить туже, только посредником будет уже jabberBot. Тогда код не нужно будет менять совсем, за исключением того, что нужно будет лиш скоректировать название jabberBota, чтоб правильно получать\передавать команды.
Основа есть, теперь нужны идеи, какие команды добавить в бот, а с этим уже можна и на форумы выйти, если уж так сложно будет...Так что нужно доделать проэкт до конца.
Автор: timsky
Дата сообщения: 04.06.2009 14:15
Мой интерес пока отвалился в виду отсутствия свободного времени
Зато мониторю тему периодически
Автор: ynbIpb
Дата сообщения: 04.06.2009 21:03
Накалякал ещё 1 функцию:

Код: ;~~~~~~~~~~~~~~
; функция _ALLprogs возвращает список установленных программ
; команда для вызова этой функции: !allprogs
;~~~~~~~~~~~~~~

Func _ALLprogs()
Local $otvet = ""
; заносим в переменную ключ, где хранится информация о всех установленных программах
Local $uninstall_key = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
For $i= 1 to 300 ; крутим цикл до 300, где 300 это предположительно максимальное клличество программ)
$subkey = RegEnumKey($uninstall_key , $i); по порядку читаем имя подключа
If @error <> 0 then ExitLoop ; если ошибка, значит ключи кончились, выход из цикла
$DisplayName = RegRead ( $uninstall_key&"\"&$subkey, "DisplayName" ); отображаемое имя
If Not $DisplayName = "" Then $otvet &= $DisplayName & @CRLF; если имя не пустое, то в список его
Next
; если ответ пустой, то формируем ответ чтов всё плохо...
If $otvet = "" Then $otvet = "Can not get list of installed progs!"
Return $otvet ; возвращаем сформированный ответ из функции
EndFunc
Автор: araneon
Дата сообщения: 07.08.2009 16:58
Замутка СУПЕР, РЕСПЕКТ ВАМ РЕБЯТА и УДАЧИ.

У меня вопросик, а как сделать чтобы я допустим посылаю команду к примеру
!down "ссылка на файл"
и ссылка копировалась в буфер обмена ?
Автор: araneon
Дата сообщения: 11.08.2009 21:19

Цитата:
Накалякал ещё 1 функцию:

Друг а не подскажеш как её вставить
Автор: ynbIpb
Дата сообщения: 11.08.2009 23:44
я ближайшее время не дома (отпуск) так что при себе ничего нет.
но это элементарно.
в скрипте vicbox777'a есть участок где срабатывают ключевые слова (цикл и много Case), вот на одну Case ставишь сработку ключевого слова !allprogs и вызываешь эту функцию а ответ её отправляется хозяину.

Код: Case "!process"
_SendData($hWnd_IcqWindow, _ALLprogs())
Автор: araneon
Дата сообщения: 12.08.2009 00:48

Цитата:
в скрипте vicbox777'a есть участок где срабатывают ключевые слова (цикл и много Case), вот на одну Case ставишь сработку ключевого слова !allprogs и вызываешь эту функцию а ответ её отправляется хозяину.

Код:Case "!process"
_SendData($hWnd_IcqWindow, _ALLprogs())

типа так вроде...
естественно код самой функции нужно запихать куданить в самый конец скрипта


Я вроде так и сделал, но чёт от бота тишина, курим дальше

УДАЧНОГО ОТПУСКА

Добавлено:

разобрался, в место
Case '!allprogs'

я поставил

Case '!allprogs '
тоесть с пробелом
Автор: araneon
Дата сообщения: 12.08.2009 21:44

Цитата:
А про ссылку на закачку, можно даж написать скрипт чтоб запускал какойнить манагер закачек и начинал её качать...


А это кстатии прикольненько даже було бы,
а как можно такое осуществить ?
Я вот решил сам попробовать, но чёт никак (слабоват я ещё в AutoIt) непойму чё тут и к чему, если кому не трудно просветите ?
Автор: araneon
Дата сообщения: 14.08.2009 11:09
Вот хоть убей, никак непойму, как Вы задаёте имя команды, вот к примеру
функция _FileList_bot получает список файлов\папок указанной директории и отправляет хозяину
; а сама команда для вызова этой функции:
!dir путь_к_каталогуl
просветите кто нибудь, как это дельце устроенно если конечно сюда кто-то ещё заглядывае
За ранее огромное спасибо!!!
Автор: ynbIpb
Дата сообщения: 14.08.2009 15:06
имя придумывается какое хочешь
что ты напишешь возле Case на то и будет срабатывать, а там вызывай хоть какую функцию...
Автор: araneon
Дата сообщения: 14.08.2009 17:42
Аха теперь понятненько, вот тогда снова старый вопросик, как засунуть в буфер текст принимаемый ботом от админа???
Автор: ynbIpb
Дата сообщения: 14.08.2009 18:45
Смотри внимательно на функцию dir! там наглядно показано как отделяется путь от всего сообщения.
а дальше ClipPut ("value")
Сам уже всё забыл как делал, вернусь домой возьмусь опять...
и такие мелкие вопросы не касающиеся протокола лучше задавай в основном топике, сюда редко кто заходит.
Автор: araneon
Дата сообщения: 17.08.2009 08:56
ynbipb Спасибки за совет
Ребят я вот тут нарыл пару небольших статеек на тему написания icq клиента и icq бота на Visual Basic. Вот и подумал, если AutoIt язык напоминающий BASIC, то может получиться переделать код с Visual Basic на AutoIt ? Как считаете ???
Автор: ynbIpb
Дата сообщения: 17.08.2009 14:08
Наверное, ты выкладывай, вся инфа будет полезна. в шапку засуну.
Автор: araneon
Дата сообщения: 17.08.2009 22:08
Вот ссылочки
1) VB. Создание ICQ бота!
2) VB. Пишем ICQ клиент

Посмотрите, может, кто четам поймёт.
Я там понял лишь одно, что мне ещё до этого далеко
Исходники там тоже вроде прилагаются, только регаться надо
Автор: ynbIpb
Дата сообщения: 17.08.2009 22:56
Там используется уже готовый контрол (движок), к автоиту его не прикрутить наверное. Да и не нужно так как есть рабочий движок на делфе.
А вот во второй ссылке уже поинтереснее, протокол разжовывают... типа ка кэтот контрол писали...

Ждём UDF от sproxy для джаббера, можно будет тогда отказаться от асику вообще.
Автор: ynbIpb
Дата сообщения: 20.08.2009 16:37
Возникла идея написание бота для популярного чата CommFort
Ктонибудь ещё юзает этот чат? На сколько я понял из информации по плугинам нужно просто слать хитрые UDP пакеты клиенту и он будет в чат слать сообщения и прочее..
Пока так поверхностно пытаюсь вникнуть...
Автор: araneon
Дата сообщения: 21.08.2009 00:37

Цитата:
ynbIpb
Возникла идея написание бота для популярного чата CommFort
Ктонибудь ещё юзает этот чат? На сколько я понял из информации по плугинам нужно просто слать хитрые UDP пакеты клиенту и он будет в чат слать сообщения и прочее..
Пока так поверхностно пытаюсь вникнуть...

Вот чё пока нарыл
Я так понял, он чисто для локалки ?
Автор: ynbIpb
Дата сообщения: 21.08.2009 00:56
Да для локалки, но можно замутить типа шлюза в аську.
чтоб 1 клиент ретранслировал сообщения в ICQ
там даж вроде уже есть такой плугин, но хочется своего...
Автор: araneon
Дата сообщения: 21.08.2009 10:17
А Autoit-Delphi-IcqBot не подходит ?
Там вроде всё неплохо сделано.
Хотя если человек в локалке использует CommFort как локальный чат, то почемубы и нет
Автор: ynbIpb
Дата сообщения: 21.08.2009 13:04
Цель у меня такая:
На работе есть локалка, в ней стоит коммфорт и сотрудники через неё общаются и вызывают меня если что-то неработат и тд. В интернет доступ не у всех.
Допустим уехал я в отпуск, а у них там проблемы и если замутить такой шлюз, то я смогу их консультировать прям через аську, а так же если будут работать фукнции удалённого упроавления нашего бота и исправлять проблемы.
Автор: timsky
Дата сообщения: 22.08.2009 07:23

ynbIpb
Вот неплохая весчъ: http://www.3dnews.ru/software/ammyy_admin/
Автор: ynbIpb
Дата сообщения: 22.08.2009 13:47
да, удобна. отличает её от многих, то что не требуется прозрачного IP
Но не для моей ситуации. Бывает под рукой только мобила с аськой и тут наш бот как никогда выручит, только команд побольше намутить.
Автор: araneon
Дата сообщения: 22.08.2009 15:20
Согласен, нужен бот и исключительно на AutoIt
Автор: araneon
Дата сообщения: 25.08.2009 18:58
Вот единственное вроде где встречается объединение icq с commfort Бот собеседник+Commfort<->CS 1.6+Угадай фильм+Icq_гейт но к сожелению аська только небольшое дополнение. Может кто ещё что нашол, поделитесь
Автор: ynbIpb
Дата сообщения: 25.08.2009 19:25
Да, я его видел. Нужно что-то своё писать. Я как бы пока это отложил на потом ибо не дома.
Автор: araneon
Дата сообщения: 25.08.2009 20:25
Автор банного бота пока молчит, но я думаю что он (bot) всё же написан на Delphi с использованием модуля TICQClient, но это только моё мнение. Так вот, может попробовать связать Autoit-Delphi-IcqBot с CommFort ?

Страницы: 12345

Предыдущая тема: HEX редактирование LINUX программ


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.