2014-07-10

Skype bot'as ant Python


Skype mums suteikia galimybę automatizuoti veiksmus su programa. Tam, kad tai padaryti užtenka atsisiųsti Skype Wraper ir paskaityti keletą pridedamų tutorial'ų. Šiandien mes parašysim savo Skype bot'ą naudodamiesi Python'o  galymybėmis. Kad galėtume sąveikauti su Skype mums prireiks Skype4Py  Python modulio. Viena iš geriausių jo savybių yra ta, kad mūsų parašytas kodas veiks tiek ant Windows tiek ant Linux operacinių sistemų.



Įdiegimas.

Skype4Py  yra standartinis Python'o modulis ir gali būti lengvai surastas  Python'o paketų indekse. Tam, kad įdiegti su Setuptools reikia įvygdyti šią komandą:

easy_install Skype4Py


Pirmi žingsniai.

Skype4Py sąveikauja tik su Skype klientu veikiančiu jūsų kompiuteryje. Pats  Skype4Py nesiunčia duomenų į Skype tinklą. Taigi jei norime, kad mūsų programa veiktų, turi būti paleistas Skype ir turime būti prisijungę su savo vartotoju. Jei pamėginsime paleisti programą be veikiančio Skype greičiausiai gausime pranešimą apie klaidą.

Kai viskas paruošta galime pradėti programuoti. Iš pradžių importuojame Skype4Py , sukuriame Skype objektą ir su metodu "Attach()" susisiekiame su veikiančia Skype programa:

import Skype4Py
s = Skype4Py.Skype()
s.Attach()

Įvygdžius šią kodo dalį turėtų atsirasti pranešimo langas klausiantis ar leisti Python'ui sąveikauti su Skype. Mes pasirenkame leisti. Šis apribojimas yra padarytas tam, kad sumažinti virusų ir kitokių kenkėjiškų programų įtaka Skype programoje be jūsų žinios:



Skype4Py  suteikia  Userclass , kuri apdoroja Skype programos vartotojų paskyras. Per ją mes galime gauti vartotoju vardus, dabartinį statusą bei kada paskutinį kartą buvote prisijungę. Tam, kad gauti asmenys kurie yra šio metu prisijungę prie Skype ir jų informaciją, mums reikia naudoti "CurrentUser" klasę:

import Skype4Py
s = Skype4Py.Skype()
s.Attach()

print 'Full Name: %s' % s.CurrentUser.FullName
print 'Skype Status: %s' % s.CurrentUser.OnlineStatus
print 'Country: %s' % s.CurrentUser.Country

Dabar pamėginkime išsiųsti kam nors žinutę:

import Skype4Py
s = Skype4Py.Skype()
s.Attach()
s.SendMessage(„vartotojo nickas“,“sveikas“)

Atidarę Skype chat'o langą su pašnekovu pamatysite visas savo išsiųstas žinutes. Mes jau turime dalį mūsų bot'o, bet idealiame variante norėtųsi, kad mūsų programa pati gautų atsakymus iš Skype programos, todėl mes dabar parašysime ateinančių žinučių apdorojimo įrankį. Mūsų apdorojimo įrankis lauks kol ateis žinutė. Jis tai sužinos per "s.OnMessageStatus" objektą, kai reikšmė status taps „RECEIVED“:

def handler(msg, event):
    if event == "RECEIVED":
        print msg.Body


Bot'as.

O dabar galutinis mūsų bot'o kodas , kuriame gali būti šiek tiek klaidų, kad sumažėtų noras spaminti ir floodinti savo draugus ir pažįstamus:

import Skype4Py

def handler(msg, event):
   if event==”RECEIVED”:
      print msg.Body
      msg.Chat.SendMessage(“viskas veikia”)

def main():
    Skype=Skype4Py.Skype()
    Skype.Attach()
    Skype.OnMessageStatus=handler
    Skype.SendMessage(“vartojas”,“sveikas, ar botas veikia?”)
    while true:
       K=0

if __name__==”__main__”
    main()

Komentarų nėra:

Rašyti komentarą