[Python] Hlela i-bot ye-IRC

Namuhla ngizokufundisa ukuthi ungahlela kanjani ifayili le- I-bot ukuze I-IRC. Okokuqala, kulabo abangazi, i-bot wuhlelo oluxhuma esiteshini se-IRC futhi lisebenzisane nalo, olusivumela, isibonelo, ukulinganisa isiteshi ngaphandle ukuthi sixhumekile futhi ngaleyo ndlela ugweme ogaxekile, noma ukuthi ibona uchungechunge lwama-oda bese isebenzisa ikhodi ehambisanayo.
Yize sekunama-bots aselungile, ngithembekile ngingomunye walabo abathanda ukwenza izinhlelo zabo zokufunda nokweneliseka okukhulu okusinika kona ngemuva kokubona ukuthi kusebenza ^

Ngalokho kusho, ake siqhubekele esifundweni.

Ukuhlela i-bot sizodinga i- umhleli wombhalo osobala cualquiera (nano, gedit, medit, njll) futhi i python utolika (2.6 noma 2.7 kuzodingeka, ayisebenzi nge python 3.x).

Okokuqala singenisa amamojula adingekayo, kulokhu sizodinga ezimbili kuphela:

[ikhodi] #! / usr / bin / env python
# - * - ukufaka ikhodi: utf-8 - * -

ukungenisa isokhethi
ukungenisa intambo
[/ ikhodi]

Manje siyaqhubeka setha i-bot:

[code] HOST=»irc.desdelinux.net»
ISIKHUNDLA = 6667
I-NICK = »I-CalicoBot»
IDENT = »I-CalicoBot»
I-REALNAME = »I-CalicoBot»
CHAN = »# Ikhaya»
i-readbuffer = »»
[/ ikhodi]

Ngizochaza ukwahluka ngakunye:

  • HOST: I-URL yeseva esizoxhuma kuyo
  • IPHONDO: Imbobo yeseva. Ngokuzenzakalelayo kungama-6667.
  • I-NICK, IDENT ne-REALNAME: Zihambisana nesidlaliso se-bot, ukuhlonza kwaso kanye negama langempela.
  • I-CHAN: Isiteshi i-bot izongena
  • i-readbuffer: Kulokhu kuguquka idatha ethunyelwa yiseva izogcinwa.

Lapho i-bot yethu isilungisiwe siyaqhubeka ukuxhumana

[ikhodi] s = isokhethi.socket ()
s. ukuxhumana ((HOST, PORT))
thumela ("NICK% s \ r \ n"% NICK)
thumela ("USER% s% s bla:% s \ r \ n"% (IDENT, HOST, REALNAME))
thumela ("JOYINA:% ​​s \ r \ n"% CHAN)
[/ ikhodi]

Ulayini wokuqala awunayo imfihlakalo eningi, owesibili udala ifayela le- ukuxhumeka kweseva futhi abathathu bokugcina bathumela idatha ye-bot kuseva ukuqhubeka nokungena ngemvume.

Uma sekuxhunyiwe sizokwakha ifayela le- I-loop engapheli lapho sizoya khona ukwamukela nokuthumela idatha kusuka / kuseva:

[ikhodi] ngenkathi 1:
i-readbuffer = i-readbuffer + s.recv (1024)
i-temp = string.split (i-readbuffer, "\ n")
i-readbuffer = i-temp.pop ()
umugqa ku-temp:
umugqa = intambo. umugqa (umugqa)
umugqa = umugqa.split (CHAN + ':')

uma umugqa [0] .thola ("PING")! = -1:
pingid = umugqa [0] .split () [1] s.send ("PONG% s \ r \ n"% pingid)
[/ ikhodi]

Kuyo yonke imigqa ebhalwe ngenhla, ngizophawula kuphela kule ebalulekile.
cunt umugqa = umugqa.split (CHAN + ':') esikwenzayo ukwahlukanisa lokho iseva esikuthumela kona lapho ake sithole okuthile esiteshini.
Isibonelo umugqa olandelayo ukhombisa ukuthi othile ubhale okuthile esiteshini:

:son_link!sonlink@127.0.0.1 PRIVMSG #Home :Hola ^^

Esokuqala yisiteketiso somsebenzisi nedatha yakhe yokuxhuma (ehlukaniswe ngu!), Umyalo (kulokhu ukhombisa ukuthi ubhalile), isiteshi futhi ekugcineni, ngemuva kwekholoni, umyalezo othunyelwe. Ngeke ngichaze eminye imiyalo eminingi ngoba lokho akuweli kulesi sifundo.

Olunye ulayini obalulekile yilona ngemuva kwe- if. Iseva njalo ithumela umyalo we-PING ukuhlola ukuthi umsebenzisi usaxhunyiwe yini. Kulokhu, i-bot ithumela umyalo we-PONG nge-ID ethunyelwe yi-PING ukukhombisa kwiseva ukuthi isaxhumekile.

Ngalokhu sesivele sinesisekelo se-bot. Manje ngizoqhubeka ngichaze ukuthi ungenza kanjani i-bot iphendule njengoba sifuna imiyalo ethile, noma ngabe ivela ku-IRC uqobo noma kubasebenzisi.

Ukuphendula imiyalo ye-IRC:

I-PING ne-PRIVMSG yizibonelo zemiyalo ye-IRC. Kunemiyalo eminingi, kepha njengoba ngishilo ngaphambili, kuyinto engingeke ngichaze imininingwane yayo.
Isibonelo, singenza i-bot ithi sawubona kubasebenzisi abaxhuma:

[ikhodi] uma ulayini [0]. thola ('JOIN')! = -1:
igama = umugqa [0] .split ('!') [0] .split (':') [1] uma igama! = NICK negama.find (HOST) == -1:
s.send ("PRIVMSG% s: Siyakwamukela @% s ^ ^ \ n"% (CHAN, igama))
[/ ikhodi]

Okokuqala sihlola ukuthi ngabe iseva iyawuthumela yini umyalo JOIN okukhombisa ukuthi othile uxhumeke kuseva. Ngemuva kwalokho sikhipha isiteketiso, sihlola ukuthi isidlaliso akuyona yini i-IRC url (uma kungenjalo ngokushesha nje lapho sisebenzisa i-bot izobingelela i-url) futhi ekugcineni sithumela umyalezo wokubingelela.

Imiyalo ka-Bot:

Manje ngiyenza kanjani i-bot yami phendula imiyalo yami? Ake sibheke kangcono isibonelo:

[ikhodi] uma umugqa [1] == '$ version':
s.send («PRIVMSG% s: CalicoBot 0.1.2 (c) 2012 Son Link \ n»% CHAN)
[/ ikhodi]

Kulesi sibonelo uma othile ebhala $ inguqulo i-bot izokhombisa umyalezo okhombisa igama, inguqulo nombhali wayo. Ikhodi ephelele yesibonelo yile:

[ikhodi] isokhethi lokungenisa
ukungenisa intambo

HOST = »indawo yangakini»
ISIKHUNDLA = 6667
I-NICK = »I-CalicoBot»
IDENT = »I-CalicoBot»
I-REALNAME = »I-CalicoBot»
CHAN = »# Ikhaya»
i-readbuffer = »»
s = isokhethi.socket ()
s. ukuxhumana ((HOST, PORT))
thumela ("NICK% s \ r \ n"% NICK)
thumela ("USER% s% s bla:% s \ r \ n"% (IDENT, HOST, REALNAME))
thumela ("JOYINA:% ​​s \ r \ n"% CHAN)

ngenkathi 1:

i-readbuffer = i-readbuffer + s.recv (1024)
i-temp = string.split (i-readbuffer, "\ n")
i-readbuffer = i-temp.pop ()
umugqa ku-temp:
umugqa wokuphrinta
umugqa = intambo. umugqa (umugqa)
umugqa = umugqa.split (CHAN + ':')

uma umugqa [0] .thola ("PING")! = -1:
pingid = umugqa [0] .split () [1] s.send ("PONG% s \ r \ n"% pingid)

uma umugqa [0] .find ('JOIN')! = -1:
igama = umugqa [0] .split ('!') [0] .split (':') [1] uma igama! = NICK negama.find (HOST) == -1:
s.send ("PRIVMSG% s: Siyakwamukela @% s ^ ^ \ n"% (CHAN, igama))

uma len (umugqa) <1:
uma umugqa [1] == '$ version':
s.send («PRIVMSG% s: CalicoBot 0.1.2 (c) 2012 Son Link \ n»% CHAN)
[/ ikhodi]

Ngiyethemba usithandile lesi sifundo, futhi-ke ngikushiya isixhumanisi esiya kwikhodi ye-bot yami ukuze ubone ikhodi yayo ngokugcwele futhi uzobona kangcono ukuthi isebenza kanjani (yize ngisuse eminye imiyalo yokusetshenziswa komuntu siqu).

I-CalicoBot


Shiya umbono wakho

Ikheli lakho le ngeke ishicilelwe. Ezidingekayo ibhalwe nge *

*

*

  1. Ubhekele imininingwane: Miguel Ángel Gatón
  2. Inhloso yedatha: Lawula Ugaxekile, ukuphathwa kwamazwana.
  3. Ukusemthethweni: Imvume yakho
  4. Ukuxhumana kwemininingwane: Imininingwane ngeke idluliselwe kubantu besithathu ngaphandle kwesibopho esisemthethweni.
  5. Isitoreji sedatha: Idatabase ebanjwe yi-Occentus Networks (EU)
  6. Amalungelo: Nganoma yisiphi isikhathi ungakhawulela, uthole futhi ususe imininingwane yakho.

  1.   I-AurosZx kusho

    Heh, angikwazi ukuphuthelwa yi-Bot ye-bullshit oyigibela ku-IRC article I-athikili ethakazelisa kakhulu.

  2.   Cesar kusho

    Incazelo elula futhi ecacile.
    Kuthiwani uma, ikhodi ye-python ingekho konke ukuqondiswa.

  3.   rafa kusho

    I-athikili enhle kakhulu nokuthi kulula kanjani ukuxhuma kwi-IRC ukuhlela i-bot:)…

    Kungikhumbuza lezo zikhathi lapho besizizwa njengabahleli bokubhala imibhalo ye-MIRC ezingxoxweni ze-MSN noma ze-MSNGroups

  4.   truko22 kusho

    Kuyathakazelisa ngiyakugcina 😀

  5.   Siyabonga Vargas J. (@elprincipiodeto) kusho

    kuhle kakhulu!

  6.   U-Elynx kusho

    Iwusizo kakhulu, ngiyabonga Son_Link!

    Ukubingelela!

  7.   umagazine kusho

    Jabulela…

    ukulandela imigqa yakho nokuhlola ukuphela kwento esebenzayo
    ukungenisa isokhethi
    ukungenisa intambo

    HOST = »indawo yangakini»
    ISIKHUNDLA = 6667
    I-NICK = »I-CalicoBot»
    IDENT = »I-CalicoBot»
    I-REALNAME = »I-CalicoBot»
    CHAN = »# Ikhaya»
    i-readbuffer = »»
    s = isokhethi.socket ()
    s. ukuxhumana ((HOST, PORT))
    thumela ("NICK% srn"% NICK)
    thumela ("USER% s% s bla:% srn"% (IDENT, HOST, REALNAME))
    thumela ("JOYINA:% ​​srn"% CHAN)

    ukushintsha isiteshi kanye ne-nick manje okungezansi kungiphonsa i-syntax yephutha

    Ngabuza abanye engangibajwayele bangitshela ukuthi lokho akubukeki njenge-python

    Angazi ukuthi ngenzani kabi noma kungani ngikopisha yonke into bese ngiyinamathisela ku-python bese ngiyinika ukungena futhi ixhuma esiteshini kodwa ngemuva kwemizuzwana engama-250 isiteshi siyayisusa ngoba bekungekho mpendulo evela kupong ...

  8.   iphinifa kusho

    Ikhodi ephelele ayisebenzi kimi, isigaba sokugcina yiso esihlulekayo futhi angikwazi ukuthola iphutha. Uma ngisusa leyo ngxenye, iyaxhuma futhi isebenze kahle. Kuhlolwe nge-Python 2.7.3 ku-Windows 7.

    I-PS: Endabeni yami ngixhuma kuseva ene-password bese ngifaka le migqa:
    I-PASS = »I-Passdelbot»
    thumela ("PASS% s \ r \ n"% PASS)

  9.   I-DoLpHiN kusho

    Sawubona Son Link, ngiyabonga kakhulu ngalesi sihloko, kuyathakazelisa kakhulu, angikwazi ukuphendula imiyalo ethunyelwe. Uhlelo alungeni kokugcina if futhi angikwazi ukuthola ukuthi kungani: "if len (line)> 1:"
    Ngilinde impendulo yakho.
    Gracias