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

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

Автор: pvnn
Дата сообщения: 08.10.2009 05:26
По поводу Autoit-Delphi-IcqBot
Задумка и реализация Классная!!! Большой респект vicbox777
Очень Удобно и быстро можно расширить набор функций программы, благодоря AUTOIT.
Сам написал несколько интересных функций, если что, могу выложить. Готов присоединиться к сообществу

Но вот что хочется сказать: ЗАЧЕМ ОГРАНИЧИВАТЬ БОТА ТОЛЬКО ФУНКЦИЯМИ АДМИНИСТРИРОВАНИЯ СИСТЕМЫ???
Уважаемый vicbox777, а можно пересобрать бота таким образом, чтобы он принимал команды от все пользователей, а вод команды удаленного управления принимались бы только от ICQ Админа, прописанного в ini. Чтобы это дало... А вот что. Можно было бы бот снабдить интересными функциями: Погода, которая бы бралась с любого сайта посредством AUTOIT, анекдоты, да хоть ответы к экзаменационным билетам... что угодно
Тогда можно было бы дать номерок бота друзьям или самому, через телефон обращаться к нему, то есть, тем самым повысился бы функционал и аудитория программы.
Автор: araneon
Дата сообщения: 08.10.2009 21:31

Цитата:
Сам написал несколько интересных функций, если что, могу выложить.

конечно выкладывай, будем только рады

Цитата:
чтобы он принимал команды от все пользователей

думаю можно, но темка что-то под затихла
Так что если есть желание то
Я только за, хоть у меня и маловато знаний в AUTOIT, но данное предложение поддерживаю
Автор: pvnn
Дата сообщения: 09.10.2009 06:12

Цитата:
конечно выкладывай, будем только рады

Обязательно выложу, вот только
1. Как вставить раскрашенный код от AUTOIT
2. Нужна помощь в по Регулярным выражениям на Autoit
Есть строка: 1234567|abcdef
Как при помощи регулярных выражений отделить что находится до символа | и после символа.
второе, есть строка: "!newcommand abcdef "
Нужно получить строку: abcdef но без пробелов справа и слева
как поправить данную строчку
$sPath=StringRegExpReplace($sMsg,".*!newcommand(\s)*(.*)","\2")

Автор: timsky
Дата сообщения: 09.10.2009 06:43
pvnn

Цитата:
Есть строка: 1234567|abcdef
Как при помощи регулярных выражений отделить что находится до символа | и после символа.
второе, есть строка: "!newcommand abcdef "
Нужно получить строку: abcdef но без пробелов справа и слева


Юзай StringSplit() для таких простых задач. В первом случае разделитель |, а во втором - пробел
Автор: ynbIpb
Дата сообщения: 09.10.2009 08:08

Цитата:
но темка что-то под затихла

Да всё ждём Jabber UDF вот если появится, то там будет свобода полёта.
з.ы. надо бы ещё на русском оф форуме автоита эту темку завести.
Автор: pvnn
Дата сообщения: 09.10.2009 08:21
Я тоже сделал сначала StringSplit()
Не правильно это!!!!
Я же написал, мне надо через регулярные выражения

История
Бот благодоря исходникам был переписан мной для приема сообщений от всех пользователей!!!
Теперь $sMsg имеет вид: Номер ICQ Разделитель Текст сообщения
например: 1234567|текст сооббщения
Вот я и хотел поделить это сообщение при помощи регулярных выражений.
Почему не StringSplit() а если текст будет такой: "1234567|текст сооббщения | текст" , - символ разделитель | будет присутствовать в самом тексте сообщения, тогда сообщение обрежется...
Так что вопрос открыт
Кто-нибудь вообще знает регулярные выражения?????????
Хотелось бы именно в разрезе автоита
Автор: araneon
Дата сообщения: 09.10.2009 20:01

Цитата:
з.ы. надо бы ещё на русском оф форуме автоита эту темку завести.

да да это точно
Автор: Gorrr
Дата сообщения: 12.10.2009 15:57
pvnn

Цитата:
Есть строка: 1234567|abcdef
Как при помощи регулярных выражений отделить что находится до символа | и после символа.


$sString = "1234567|Некое сообщение с символами | и прочими 1316546"
$aMatches = StringRegExp($sString, '\A[\d]+', 3)
$sICQnumber = $aMatches[0]
$sMessage = StringRegExpReplace($sString, '\A[\d]+\|', "")


Цитата:
второе, есть строка: "!newcommand abcdef "
Нужно получить строку: abcdef но без пробелов справа и слева
как поправить данную строчку
$sPath=StringRegExpReplace($sMsg,".*!newcommand(\s)*(.*)","\2")


$sString = "!newcommand abcdef "
$aArray = StringRegExp($sString, "(?<=\!newcommand).+\z", 3)
$sResult = StringStripWS( $aArray[0], 3)
Автор: RandRover
Дата сообщения: 12.10.2009 16:44

Цитата:
$aArray = StringRegExp($sString, "(?<=\!newcommand).+\z", 3)

Лучче так(тогда StringStripWS не нужен) -

Код: $aArray = StringRegExp($sString, "^\!newcommand\s+(.+?)\s+.*$", 3)
Автор: araneon
Дата сообщения: 12.10.2009 21:34

Цитата:
з.ы. надо бы ещё на русском оф форуме автоита эту темку завести.


Цитата:
да да это точно


А вот и темка
Ссылка
Автор: araneon
Дата сообщения: 05.11.2009 22:53
Ркбята, ну у кого есть хоть какие небудь команды, выкладывайте
Лучше Сюда
Автор: araneon
Дата сообщения: 07.11.2009 18:31
Если сюда ещё хоть кто нибудь заходит, то подскажите, как сделать комонду !help. Тоесть пишу боту !help а в ответ список поддерживаемых команд? Если кто знает подскажите.
Автор: araneon
Дата сообщения: 10.11.2009 09:05
Спасибо ynbIpb, всё теперь работает !help как часики )))
Автор: Nik_rus
Дата сообщения: 11.11.2009 13:00
Вобщем я с этой темы собрал много полезностей и всякого добра, собрал в один скрипт и...
Идем сюда
Автор: MoBiRo
Дата сообщения: 05.12.2009 07:34
Почему в Autoit-Delphi-IcqBot делфийская exe'шка не сжата? Я сжал её upx'ом и она стала 214кб вместо почти 600кб =\
Автор: vicbox777
Дата сообщения: 05.12.2009 11:41

Цитата:
Почему в Autoit-Delphi-IcqBot делфийская exe'шка не сжата? Я сжал её upx'ом и она стала 214кб вместо почти 600кб =\

Разница в 400 кб в принципе не так много, но лично я не сжимал, чтоб не ругались некоторые антивирусы...
Автор: ynbIpb
Дата сообщения: 18.12.2009 20:45
тем кто ещё следит за этой темкой:
Появилась чудная DLL'ка IcqMod DLL, под которую уже создана UDF, работает изумительно.
Автор: BIOS999
Дата сообщения: 30.12.2009 13:58
Появилась идея написать посредник основываясь на PHP с последущей компиляцией в exe. Написать могу, но надо ли?

Жду ответа
Автор: ynbIpb
Дата сообщения: 30.12.2009 14:06
В первую очередь чтоб самому было нужно, а там можно и с народом поделиться.
Можно по подробнее о функционале посредника?
Автор: BIOS999
Дата сообщения: 30.12.2009 14:14
Будет exe файл на основе класса c99phpicq, общение через консольное окно, или через файл, пока не разбирался до конца
Полный функционал таков:

func - public - object ICQclient (int uin, string password, string server=login.icq.com, int port=5190) - initialize
func - public - mixed - _getconst(key1, key2, key3...) - get constants
func - private - caps_build($array) - build capabilities block
func - private - guid2array($str) - convert com-id to array
func - private - bool socket_wait(int sec, int usec) - new incoming data exists?
func - private - bool socket_connect(string server, int port) - establish connection
func - public - bool connect(string server=defined by func ICQclinet(), int port=defined by func ICQ) - connection to login-server
func - private - bool _connect_migration(string server, int port) - migration to BOS
func - private - bool set_timeout(string timeout) - set incoming timeout to socket (default is recommended)
func - private - bool read(int length, int sec, int usec) - read Socket
func - public - bool connect_pass - check connection
func - public - bool login_pass - check autorization
func - public - bool login(int uin=defined by func ICQclient, int password=defined by func ICQclient) - autorization
func - public - bool setstatus(int status) - set status (online, away...), see $const
func - public - bool setstatusflags(array flags) - set status flags (birthday...), see $const
func - public - bool updatestatus(bool sub) - send new status and status flags to server (automatic before login)
func - public - bool updatesubstatus() - send new substatus to server
func - public - bool message_send(int uin, string text, mixed type, mixed flag, bool confirm, bool store) - send message
func - public - bool chkinvisible(int uin) - get real status. returns int 1 when UIN online, 0 when offline and FALSE on error
func - public - array recv_offline_msgs(bool REMOVE=TRUE) - fetch offline-messages
func - public - array search_whitepages(array info) - search UIN by details. returns structured array, use var_dump() for learn.
func - public - array getinfo(int uin, bool cache?, bool own?) - get UIN-info
func - public - array uinreg(string password) - register new UIN
func - public - bool listen(bool buf) - listening connection and processing data
func - private - void unsetinturn(int position) - remove incoming turn Position
func - private - array _FLAP_parse(string FLAP) - parse FLAP-header
func - public - bool ismessage() - is message last incoming command.
func - public - array error_reporting(int errlevel) - set errlevel
func - private - array recv - recieve packet
func - public - bool send(string type, string SNAC) - send packet
func - private - string _FLAP_gen(int channel, int length) - build FLAP-header
func - private - string _SNAC_gen_header(int family, int subfamily) - generate SNAC-header
func - private - string _SNAC_gen(string SNAC-type, array args) - generate SNAC
func - private - bool _SNAC_parse_onlineuserinfo(array TLV) - parse online-info block
func - private - bool _SNAC_parse_lea(string &p, int num) - parse some string
func - private - bool _SNAC_parse(string packet) - parse SNAC
func - private - bool _dbg(string procedure, string file, int line) - display debug-messages
func - private - bool _specialdbg(string procedure, string file, int line) - special debug channel
func - private - bool _error(string procedure, string file, int line) - display error-message
func - public - string lasterror - last error-message
func - public - bool is_uin(int uin) - int is UIN?
func - public - bool is_password(string password) - string is password?
func - public - bool disconnect() - close connection
func - private - string array2TLV(array array, bool reversed=FALSE) - convert array to TLV
func - private - array TLV2array(string TLV, bool reverse=FALSE, bool limit=FALSE) - TLV to array
func - private - array TLV2array_numbered(string TLV) - TLV to numbered array
func - public - int - http_ratingbyuin(int uin) - get aim-fight rating
func - private - string XORencrypt(string plain) - XOR-encrypt data (password)
func - private - string XORdecrypt(string XORed) - XOR-decrypt data (password)
func - private - string XORseq(string plain, string XORed) - get XOR-sequence
func - public - bool set_event(string event, string php-code) - set event
func - public - array get_event(string event) - get event
func - private - array exec_event(string event, array params) - execute event
func - private - string _gen_uinlist(array array) - generate UIN-list (for ICQ-server)
func - private - bool _update_sequence(var &seq) - update sequence
func - private - int _newreqid(string cmd, array info) - register request
func - private - mixed _setreqidstatus(int reqid, mixed status) - set request status
func - private - mixed _getreqidstatus(int reqid) - get request status
func - private - array _getreqid(int reqid) - get request info
func - public - int defake(int virtual_uin) - convert virtual uin to real

написал все возможные, сделаю только нужные
Автор: ynbIpb
Дата сообщения: 30.12.2009 14:19
Ну если есть время и желание, то думаю стоит заняться. У людей будет выбор какой из вариантов использовать.
Автор: BIOS999
Дата сообщения: 30.12.2009 14:30
Хорошо, начинаю писать
Автор: BIOS999
Дата сообщения: 26.01.2010 16:22
Не думайте, что я кудато пропал
В голове появилась бредовая мысль переписать пхп библиотеку в udf autoit, реализовываю, реализовал ~20%
Автор: ynbIpb
Дата сообщения: 26.01.2010 19:06
Это было бы замечательно.
Автор: Mobilemen
Дата сообщения: 01.02.2010 19:43
Здравствуйте,Помогите плиз плиз мне нужна процедура или функция отправки на определенный E-mail файл или текст мне нужна эта процедура или функция в исходниках
Мой E-mail wwebox@bk.ru
заранее благодарен большое спасибо

Добавлено:
Народ мне нужна помощь плиз помогите мне нужен скрипт отправления файла или просто набраного текста на указаный E-mail
Пишите мне на wwebox@bk.ru
Заранее спасибо
Автор: SHogenAS
Дата сообщения: 12.04.2010 18:56
Всем привет. Можно ли на autoit создать (иль уже существует?) такой бот, который скачивал из инета файл на мой компьютер? Предположим уин бота 123456789, и я с телефона отправляю на его уин месагу вида http://site.ru/1.zip и он скачивает его и сохраняет в c:\\1.zip. Эт оч похоже на вири, но, конечно же, он будет юзаться токо в хороших целях спасибо за внимание и...что до конца прочли
П.С. Если вышеописанное звучит как бред и пр., или противоречит правилам - звиняюсь, прошу не банить. Спасибо
Автор: ynbIpb
Дата сообщения: 12.04.2010 22:34
Оба ваших желания можно реализовать.
Но народ как-то подзабил на разработку и видимо всем будет лень это делать.
Рекомендую попробовать самостоятельно освоить азы языка и попробовать написать необходимую функцию, а сообщество autoit-script.ru наверное не откажет в помощи.

Страницы: 12345

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


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