[Python] Inkqubo ye-bot ye-IRC

Namhlanje ndiza kukufundisa indlela yokwenza inkqubo Bot for I-IRC. Okokuqala, kwabo bangaziyo, i-bot yinkqubo edibanisa ijelo le-IRC kwaye inxibelelana nayo, esivumela, umzekelo, ukumodareyitha ijelo ngaphandle ukuba sidityanisiwe kwaye ke uthintele ugaxekile, okanye uyayamkela uthotho lwe-odolo kwaye usebenze ngokuhambelana nekhowudi.
Nangona sele zilungile i-bots, ndiyinyani ngokunyanisekileyo kwabo bathanda ukwenza iinkqubo zabo zokufunda kunye nolwaneliseko olukhulu olusinika lona emva kokubona ukuba iyasebenza ^^

Ngale nto ithethwayo, masiqhubekele kwisifundo.

Ukucwangcisa i-bot siza kuyidinga umhleli wombhalo ocacileyo cualquiera (nano, gedit, ukucamngca, njl. kunye python itoliki (2.6 okanye 2.7 iyakufuneka, ayisebenzi nge python 3.x).

Kuqala singenisa iimodyuli ezifunekayo, kule meko siza kufuna ezimbini kuphela:

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

ukungenisa isokethi
ukungenisa umtya
[/ ikhowudi]

Ngoku siqhubela phambili setha ibhotile:

[ikhowudi] HOST=»irc.desdelinux.net»
ISICWANGCISO = 6667
NICK = »I-CalicoBot»
ISazisi = »ICalicoBot»
IGAMA LOKUQALA = »ICalicoBot»
CHAN = »# Ikhaya»
i-readbuffer = »»
[/ ikhowudi]

Ndiza kuchaza umahluko ngamnye:

  • HOST: I-URL yeseva esiza kuthi sidibanise kuyo
  • ISIBHEDLELE: Izibuko lomncedisi. Ngokuzenzekelayo ingama-6667.
  • I-NICK, IDENT kunye negama langempela: Zihambelana nesiteketiso se-bot, ukuchongwa kwayo kunye negama lokwenyani.
  • CHAN: Ijelo le-bot liya kungena
  • funda: Kolu umahluko idatha ethunyelwe ngumncedisi iya kugcinwa.

Nje ukuba i-bot yethu iqulunqiwe siqhubeke Unxibelelwano

[ikhowudi] s = socket.socket ()
s. uqhagamshelo ((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)
[/ ikhowudi]

Umgca wokuqala awunamfihlakalo ininzi, owesibini udala uqhagamshelo lweseva kwaye abathathu bokugqibela bathumele idatha ye-bot kwiseva ukuze baqhubeke nokungena ngemvume.

Nje ukuba uqhagamshele siya kwenza ifayile ye- Iluphu engenasiphelo apho siya khona ukufumana nokuthumela idatha ukusuka / kwiseva:

[ikhowudi] ngelixa 1:
i-readbuffer = i-readbuffer + s.recv (1024)
temp = umtya.split (i-readbuffer, "\ n")
readbuffer = temp.pop ()
yomgca kwi-temp:
umgca = umtya.
umgca = umgca.split (CHAN + ':')

ukuba umgca [0] .fumana ("PING")! -1:
pingid = umgca [0] .plpl () [1] thumela ("PONG% s \ r \ n"% pingid)
[/ ikhowudi]

Kuyo yonke imigca ebhalwe apha ngasentla, ndiza kuphawula kuphela kwezi zibalulekileyo.
Con umgca = umgca.split (CHAN + ':'into esiyenzayo kukwahlula into esithunyelwa kuyo ngumncedisi xa masifumane into kwitshaneli.
Umzekelo lo mgca ulandelayo ubonakalisa ukuba umntu othile ubhale okuthile kwisitishi:

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

Eyokuqala ligama lomsebenzisi kunye nedatha yoqhagamshelo (eyahlulwe ngu!), Umyalelo (kule meko ibonisa ukuba ubhalile), ijelo kwaye ekugqibeleni, emva kwekholoni, umyalezo othunyelweyo. Andizukuchaza eminye imiyalelo emininzi kuba oko akuweli kwesi sifundo.

Eminye imigca ebalulekileyo yile basemva kokuba if. Umncedisi uhlala ethumela i-PING ukuyalela ukuba umsebenzisi usaqhagamshelwe. Kwimeko apho, i-bot ithumela i-PONG command kunye ne-ID ethi i-PING ithumele ukubonisa iseva ukuba isadityanisiwe.

Ngale nto sele sinesiseko se-bot. Ngoku ndiza kuqhubeka ndicacisa ukuba ungayenza njani i-bot iphendule ngokwento esiyifunayo kwimiyalelo ethile, nokuba ivela kwi-IRC uqobo okanye kubasebenzisi.

Ukuphendula kwimiyalelo ye-IRC:

I-PING kunye ne-PRIVMSG yimizekelo yemiyalelo ye-IRC. Mininzi imiyalelo, kodwa njengoko besenditshilo ngaphambili, yinto endingazukungena kwiinkcukacha malunga nayo.
Umzekelo, singenza ukuba i-bot ithi molo kubasebenzisi abaxhuma:

[ikhowudi] ukuba umgca [0] .fumana ('JOIN')! -1:
igama = umgca [0] .split ('!') [0] .split (':') [1] ukuba igama! = NICK kunye negama.find (HOST) == -1:
thumela ("PRIVMSG% s: Wamkelekile @% s ^ ^ \ n"% (CHAN, igama))
[/ ikhowudi]

Kuqala sijonga ukuba iseva iyawuthumela na umyalelo Joyina ebonisa ukuba umntu uqhagamshele kwiseva. Emva koko siyikhupha i-nick, sijonga ukuba i-nick ayisiyo i-IRC url (ukuba akunjalo kwakamsinya nje ukuba sibale i-bot iya kubulisa i-url) kwaye ekugqibeleni sithumela umyalezo wokubulisa.

Imiyalelo yeBot:

Ngoku ndiyenza njani i-bot yam phendulani kwimiyalelo yam? Makhe sijonge ngcono umzekelo:

[ikhowudi] ukuba umgca [1] == '$ version':
Thumela («I-PRIVMSG% s: I-CalicoBot 0.1.2 (c) i-2012 Son Link \ n»% CHAN)
[/ ikhowudi]

Kulo mzekelo ukuba umntu ubhala Inguqulelo ye- $ i-bot iya kubonisa umyalezo obonisa igama layo, uguqulelo kunye nombhali. Ikhowudi epheleleyo yomzekelo yile:

[ikhowudi] yokungenisa socket
ukungenisa umtya

HOST = »indawo yangaphakathi»
ISICWANGCISO = 6667
NICK = »I-CalicoBot»
ISazisi = »ICalicoBot»
IGAMA LOKUQALA = »ICalicoBot»
CHAN = »# Ikhaya»
i-readbuffer = »»
s = isokethi.socket ()
s. uqhagamshelo ((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)

ngelixa 1:

i-readbuffer = i-readbuffer + s.recv (1024)
temp = umtya.split (i-readbuffer, "\ n")
readbuffer = temp.pop ()
yomgca kwi-temp:
umgca wokuprinta
umgca = umtya.
umgca = umgca.split (CHAN + ':')

ukuba umgca [0] .fumana ("PING")! -1:
pingid = umgca [0] .plpl () [1] thumela ("PONG% s \ r \ n"% pingid)

ukuba umgca [0] .fumana ('JOIN')! -1:
igama = umgca [0] .split ('!') [0] .split (':') [1] ukuba igama! = NICK kunye negama.find (HOST) == -1:
thumela ("PRIVMSG% s: Wamkelekile @% s ^ ^ \ n"% (CHAN, igama))

ukuba len (umgca) <1:
ukuba umgca [1] == '$ version':
Thumela («I-PRIVMSG% s: I-CalicoBot 0.1.2 (c) i-2012 Son Link \ n»% CHAN)
[/ ikhowudi]

Ndiyathemba ukuba usithandile esi sifundo, kwaye kunjalo, ndikushiya ikhonkco kwikhowudi ye-bot yam ukuze ubone ikhowudi yayo ngokupheleleyo kwaye ungabona ngcono ukuba isebenza njani (nangona ndiyisusile imiyalelo yokusebenzisa kwam).

CalicoBot


Shiya uluvo lwakho

Idilesi yakho ye email aziyi kupapashwa. ezidingekayo ziphawulwe *

*

*

  1. Uxanduva lwedatha: UMiguel Ángel Gatón
  2. Injongo yedatha: Ulawulo lwe-SPAM, ulawulo lwezimvo.
  3. Umthetho: Imvume yakho
  4. Unxibelelwano lwedatha: Idatha ayizukuhanjiswa kubantu besithathu ngaphandle koxanduva lomthetho.
  5. Ukugcinwa kweenkcukacha
  6. Amalungelo: Ngalo naliphi na ixesha unganciphisa, uphinde uphinde ucime ulwazi lwakho.

  1.   KwAurosZx sitsho

    Heh, andinakuyiphosa iBot ye-bullshit oyikhweleyo kwi-IRC article Inqaku elinomdla kakhulu.

  2.   Cesar sitsho

    Inkcazo elula necacileyo.
    Ungathini ukuba, ikhowudi ye-python ilahlekile yonke induction?

  3.   rafa sitsho

    Inqaku elihle kunye nendlela ekulula ngayo ukuqhagamshela kwi-IRC ukwenza inkqubo ye-bot:)…

    Indikhumbuza ngala maxesha apho sasiziva ngathi badwelisi benkqubo babhala izikripthi zeMIRC kwiMSN okanye izingxoxo zeMSNGroups

  4.   itruko22 sitsho

    Ndinomdla wokugcina 😀

  5.   IGeneral Vargas J. (@elprincipiodeto) sitsho

    excelente !!

  6.   elinx sitsho

    Iluncedo kakhulu, enkosi Son_Link!

    Nibuliso!

  7.   mzantsiweb sitsho

    Masinwabe…

    ukulandela imigca yakho kunye nokuvavanya ekuphela kwento esebenzayo yile
    ukungenisa isokethi
    ukungenisa umtya

    HOST = »indawo yangaphakathi»
    ISICWANGCISO = 6667
    NICK = »I-CalicoBot»
    ISazisi = »ICalicoBot»
    IGAMA LOKUQALA = »ICalicoBot»
    CHAN = »# Ikhaya»
    i-readbuffer = »»
    s = isokethi.socket ()
    s. uqhagamshelo ((HOST, PORT))
    Thumela ("NICK% srn"% NICK)
    Thumela ("USER% s% s bla:% srn"% (IDENT, HOST, REALNAME))
    Thumela ("Joyina:% srn"% CHAN)

    Ukutshintsha ijelo kunye ne-nick ngoku apha ngezantsi kundiphosela impazamo syntax

    Ndibuze abanye endibaziyo kwaye bandixelela ukuba ayibonakali ngathi yipython

    Andazi ukuba ndenza into engalunganga okanye kutheni ndikopa yonke into kwaye ndiyincamathisela kwi-python ndiyinike ukungena kwaye idibane nejelo kodwa emva kwemizuzwana engama-250 ijelo liyayisusa kuba bekungekho mpendulo ivela kwipong ...

  8.   ikhonkco sitsho

    Ikhowudi epheleleyo ayisebenzi kum, umhlathi wokugqibela yile nto isilelayo kwaye andifumani mpazamo. Ukuba ndiyayicima loo nxalenye, iyaqhagamshela kwaye isebenze ngokugqibeleleyo. Uvavanywe ngePython 2.7.3 kwiWindows 7.

    I-PS: Kwimeko yam ndinxibelelana neseva enegama eligqithisiweyo kwaye ndongeza le migca:
    I-PASS = »Ipaselboti»
    thumela ("PASS% s \ r \ n"% PASS)

  9.   I-DoLpHiN sitsho

    Molo Son Son, enkosi kakhulu ngenqaku, linomdla kakhulu, andikwazi nje ukuphendula kwimiyalelo ethunyelweyo. Inkqubo ayingeni kokugqibela ukuba kwaye andazi ukuba kutheni: "if len (line)> 1:"
    Ndilinde impendulo yakho.
    Gracias