Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Написание instant messaging Бота на AutoIt

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

ynbIpb



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору


Код:
#cs ----------------------------------------------------------------------------
 
 AutoIt Version: 3.1.1.0
 Author:         myName
 
 Script Function:
    Template AutoIt script.
 
#ce
----------------------------------------------------------------------------
 
; Script Start - Add your code below here

 
#include <GUIConstants.au3>
#include <GUICombo.au3>
#include <Misc.au3>
#include <INet.au3>
 
Opt("GUIOnEventMode", 1)
;Opt("TCPTimeout",5000)
 
Dim $OptsWin, $optsok, $optscanc, $optsjid, $optspass, $optsrad1, $optsrad2
 
GUICreate("JabberIt", 500, 555)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
 
$lblcon = GUICtrlCreateLabel("XMPP Console:", 7, 7, 80, 20)
$lblmain = GUICtrlCreateEdit("", 5, 25, 490, 195, BitOR($WS_VSCROLL, $ES_READONLY))
$lblcon = GUICtrlCreateLabel("Chat Console:", 5, 227, 80, 20)
$lblchat = GUICtrlCreateEdit("", 5, 245, 490, 195, BitOR($WS_VSCROLL, $ES_READONLY))
$usercmb = GUICtrlCreateCombo("Select JID...", 7, 445, 250, 20)
;$input1 = GUICtrlCreateInput("abu_rashid@.ibrahim.ms", 5, 445, 150, 20)
$input2 = GUICtrlCreateInput("", 7, 470, 251, 20)
$btnacc = GUICtrlCreateButton("Options", 295, 457, 60, 22)
GUICtrlSetOnEvent(-1, "AccOpts")
$btnacc = GUICtrlCreateButton("Subscribe", 295, 487, 60, 22)
GUICtrlSetOnEvent(-1, "_Subscribe")
 
GUICtrlCreateGroup ("Translation:", 370, 450, 70, 95)
$nolang = GUICtrlCreateRadio ("None", 375, 465, 60, 20)
$langfr = GUICtrlCreateRadio ("French", 375, 485, 60, 20)
$langes = GUICtrlCreateRadio ("Spanish", 375, 505, 60, 20)
$langit = GUICtrlCreateRadio ("Italian", 375, 525, 60, 20)
GUICtrlCreateGroup ("",-99,-99,1,1)
GUICtrlSetState ($nolang, $GUI_CHECKED)
 
$optsfile = @scriptdir & "\jabberit.ini"
$jid = IniRead($optsfile, "Account", "jid", "test@jabber.org")
$server = StringTrimLeft($jid, StringInStr($jid, "@"))
$jidname = StringTrimRight($jid, StringLen($jid) - StringInStr($jid, "@") + 1)
$jidpass = IniRead(@scriptdir & "\jabberit.ini", "Account", "pass", "")
$hello = "<?xml version='1.0' encoding='UTF-8' ?><stream:stream to='" & $server & "' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>"
$login1 = "<iq type='get' to='" & $server & "' id='auth1'><query xmlns='jabber:iq:auth'><username>" & $jidname & "</username></query></iq>"
$login2 = "<iq type='set' id='auth2'><query xmlns='jabber:iq:auth'><username>" & $jidname & "</username><password>" & $jidpass & "</password><resource>jabberit</resource></query></iq>"
;$message = "<message to='abu_rashid@bayt.ibrahim.ms' type='normal'><body>Saluton Mondo!</body></message>"
 
GUISetState(@SW_SHOW)
 
TCPStartUp()
$socket = TCPConnect(TCPNameToIP($server), 5222 )
 
If $socket = -1 Then
    msgbox(1, "Failed to Connect", "Connection failure occured")
    Exit
EndIf

 
_ProgInit()
 
While 1
    if _IsPressed("0D") And GUICtrlRead($input2) <> "" Then SendText()
    Sleep(100)
    _JabPoll()
WEnd
 
Func
_ProgInit()
    Select
        Case
FileExists($optsfile)
            $jid = IniRead($optsfile, "Account", "jid", "test@jabber.org")
            $server = StringTrimLeft($jid, StringInStr($jid, "@"))
            $jidname = StringTrimRight($jid, StringLen($jid) - StringInStr($jid, "@") + 1)
            $jidpass = IniRead(@scriptdir & "\jabberit.ini", "Account", "pass", "")
 
        Case RegRead("HKEY_LOCAL_MACHINE\Software\JabberIt", "JID") <> ""
            $jid = RegRead("HKEY_LOCAL_MACHINE\Software\JabberIt", "JID")
            $server = StringTrimLeft($jid, StringInStr($jid, "@"))
            $jidname = StringTrimRight($jid, StringLen($jid) - StringInStr($jid, "@") + 1)
            $jidpass = RegRead("HKEY_LOCAL_MACHINE\Software\JabberIt", "Pass")
 
        Case Else
            AccOpts()
            WinWaitClose("Account")
            $jid = IniRead($optsfile, "Account", "jid", "test@jabber.org")
            $server = StringTrimLeft($jid, StringInStr($jid, "@"))
            $jidname = StringTrimRight($jid, StringLen($jid) - StringInStr($jid, "@") + 1)
            $jidpass = IniRead(@scriptdir & "\jabberit.ini", "Account", "pass", "")
        EndSelect
    _JabHello($server)
    _JabAuth($jidname, $jidpass, "jabberit")
EndFunc
 
Func
CLOSEClicked()
    TCPsend($socket, "</stream:stream>")
    TCPCloseSocket($socket)
    TCPShutdown()
    Exit
EndFunc
 
Func
AccOpts()
    $OptsWin = GUICreate("Account", 265, 130)
    GUISetOnEvent($GUI_EVENT_CLOSE, "CloseAccOpts")
    $optsjid = GUICtrlCreateInput("Enter JID...", 15, 15, 150, 22)
    $optspass = GUICtrlCreateInput("Enter Pass...", 15, 45, 150, 22)
    $optsok = GUICtrlCreateButton("Ok", 70, 90, 60, 22)
    GUIctrlSetOnEvent(-1, "UpdateAccOpts")
    $optscanc = GUICtrlCreateButton("Cancel", 140, 90, 60, 22)
    GUIctrlSetOnEvent(-1, "CloseAccOpts")
    GUICtrlCreateGroup ("Store in:", 180, 10, 70, 60)
    $optsrad1 = GUICtrlCreateRadio ("Registry", 185, 25, 60, 20)
    $optsrad2 = GUICtrlCreateRadio ("INI File", 185, 45, 60, 20)
    GUICtrlCreateGroup ("",-99,-99,1,1)
    GUICtrlSetState ($optsrad2, $GUI_CHECKED)
    GUISetState(@SW_SHOW)
EndFunc
 
Func
UpdateAccOpts()
    IniWrite($optsfile, "Account", "jid", GUICtrlRead($optsjid))
    IniWrite($optsfile, "Account", "pass", GUICtrlRead($optspass))
    CloseAccOpts()
EndFunc
 
Func
CloseAccOpts()
    GUIDelete($OptsWin)
EndFunc
 
Func
SendText()
    $typed = GUICtrlRead($input2)
    GUICtrlSetData($input2, "")
    Select
    Case
BitAND(GUICtrlRead($nolang), $GUI_CHECKED) = $GUI_CHECKED
        _JabMsg(GUICtrlRead($usercmb), $typed)
    Case BitAND(GUICtrlRead($langfr), $GUI_CHECKED) = $GUI_CHECKED
        _JabMsg(GUICtrlRead($usercmb), _Translate("fr", $typed))
    Case BitAND(GUICtrlRead($langes), $GUI_CHECKED) = $GUI_CHECKED
        _JabMsg(GUICtrlRead($usercmb), _Translate("es", $typed))
    Case BitAND(GUICtrlRead($langit), $GUI_CHECKED) = $GUI_CHECKED
        _JabMsg(GUICtrlRead($usercmb), _Translate("it", $typed))
    EndSelect
EndFunc
;
 
Func AddUser($uname)
    If Not StringInStr(_GUICtrlComboGetList($usercmb), $uname) Then GUICtrlSetData($usercmb, $uname)
EndFunc
 
;Func _ChatWin($JIDWin)
;   $chatwin = GUICreate("Chat with: " $JIDWin, 400, 400)
;   $lblchat = GUICtrlCreateEdit("", 5, 5, 390, 195, BitOR($WS_VSCROLL, $ES_READONLY, $ES_AUTOVSCROLL))
;EndFunc
 
;#####-#####-(Future Jabber UDF begins here)-#####-#####

 
Func _JabHello($JabServ)
    $socket = TCPConnect(TCPNameToIP($JabServ), 5222)
    If $socket = -1 Then CLOSEClicked()
    TCPSend($socket, "<?xml version='1.0' encoding='UTF-8' ?><stream:stream to='" & $JabServ & "' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>")
    ;$recd = TCPRecv($socket, 2048)
    ;GUICtrlSetData($lblmain, guictrlread($lblmain) & $recd)

EndFunc
 
Func
_JabAuth($JabUser, $JabPass, $JabRes)
    TCPSend($socket, "<iq type='get' to='" & $server & "' id='auth1'><query xmlns='jabber:iq:auth'><username>" & $JabUser & "</username></query></iq>")
    ;$recd = TCPRecv($socket, 2048)
    ;GUICtrlSetData($lblmain, guictrlread($lblmain) & $recd)

    TCPSend($socket, "<iq type='set' id='auth2'><query xmlns='jabber:iq:auth'><username>" & $JabUser & "</username><password>" & $JabPass & "</password><resource>" & $JabRes & "</resource></query></iq><presence type='available'></presence>")
    ;$rece = TCPRecv($socket, 2048)
    ;GUICtrlSetData($lblmain, guictrlread($lblmain) & $rece)

EndFunc
 
Func
_JabMsg($Target, $Message)
    TCPSend($socket, "<message to='" & $Target & "' type='normal'><body>" & $Message & "</body></message>")
EndFunc
 
Func
_JabPoll()
    $recv = TCPRecv($socket, 2048)
    if $recv <> "" then
        GUICtrlSetData($lblmain, $recv, "-") ;Write raw msg to XMPP console
            If StringInStr($recv, "<message ") And StringInStr($recv, "<body>") Then ;Message Event
                _JabHandleMSG(StringTrimLeft($recv, StringInStr($recv, "<message ")))
            EndIf
            If
StringInStr($recv, "<presence ") Then ;Presence Event
                _JabHandlePRES(StringTrimLeft($recv, StringInStr($recv, "<presence from=")))
            EndIf
            ;GUICtrlSetData($lblmain, @CRLF & "No handleable XMPP events detected" & @CRLF, "-")
    EndIf
EndFunc
 
Func
_JabHandleMSG($recv)
    $from1 = StringTrimLeft($recv, StringInStr($recv, "from=") + 5)
    $from = StringTrimRight($from1, StringLen($from1) - StringInStr($from1, """") + 1)
    $body = StringInStr($recv, "<body>") + 5
    $body2 = StringLen($recv) - StringInStr($recv, "</body>") + 1
    $messbod = StringTrimRight(StringTrimLeft($recv, $body), $body2)
    GUICtrlSetData($lblchat, "<" & $from & "> " & $messbod & @CRLF , "-") ; Write sanitised msg to chat console
EndFunc
 
Func
_JabHandlePRES($recv)
    $from1 = StringTrimLeft($recv, StringInStr($recv, "from=") + 5)
    $from = StringTrimRight($from1, StringLen($from1) - StringInStr($from1, """") + 1)
    If StringInStr($recv, "type=""subscribe") Then
        TCPSend($socket, '<presence to="' & $from & '" type="subscribed" from="' & $jidname & '"/>')
    EndIf
    AddUser($from)
EndFunc
 
Func
_Subscribe()
    $uname = GUICtrlRead($usercmb)
    If StringInStr($uname, "/") Then
        $uname = StringTrimRight($uname, StringLen($uname) - StringInStr($uname, "/") + 1)
    EndIf
    TCPSend($socket, '<presence to="' & $uname & '" type="subscribe" from="' & $jidname & '"/>')
    MsgBox(1, "Subscription Request", "You have sent a subscription request to: " & $uname)
EndFunc
 
Func
_JabPoll2()
    $recv = TCPRecv($socket, 2048)
    if $recv <> "" then
        GUICtrlSetData($lblmain, $recv, "-") ;Write raw msg to XMPP console
        if StringInStr($recv, "<message type=") And StringInStr($recv, "<body>") Then ;We have actually received a message.
            $from1 = StringTrimLeft($recv, StringInStr($recv, "from=") + 5)
            $from = StringTrimRight($from1, StringLen($from1) - StringInStr($from1, ">") + 2)
            $body = StringInStr($recv, "<body>") + 5
            $body2 = StringLen($recv) - StringInStr($recv, "</body>") + 1
            $messbod = StringTrimRight(StringTrimLeft($recv, $body), $body2)
            GUICtrlSetData($lblchat, "<" & $from & "> " & $messbod & @CRLF , "-") ; Write sanitised msg to chat console
 
        EndIf
        if
StringInStr($recv, "<presence from=") And StringInStr($recv, "<priority>") Then
            $from1 = StringTrimLeft($recv, StringInStr($recv, "from=") + 5)
            $from = StringTrimRight($from1, StringLen($from1) - StringInStr($from1, " ") + 2)
            AddUser($from) ; Add user to username/contacts combo
        EndIf
        $recv = ""
    EndIf
EndFunc

 
;+++++Extras+++++;
 
Func _Translate($lang, $transtext)
    $getsrc = _INetGetSource('http://google.ca/translate_t?text=' & $transtext & '&langpair=en%7C' & $lang & '&hl=en&ie=UTF8')
    $translated1 = stringTrimleft($getsrc, StringInStr($getsrc, "id=result_box dir=ltr>") + 21)
    $translated2 = StringTrimRight($translated1, StringLen($translated1) - StringInStr($translated1, "</div></td></tr><tr><td id=submitcell>") + 2)
    Return($translated2)
EndFunc


Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 08:26 14-04-2009 | Исправлено: ynbIpb, 11:29 14-04-2009
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Написание instant messaging Бота на AutoIt


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru