[Python] Chirongwa chebhodhi re IRC

Nhasi ndiri kuzokudzidzisa maitiro ekuronga a Bot nokuti irc. Chekutanga pane zvese, kune avo vasingazive, bhoti chirongwa chinobatana neiyo IRC chiteshi uye chinopindirana nacho, icho chinotibvumidza, semuenzaniso, kuyera chiteshi pasina kuti takabatana uye nekudaro dzivisa spam, kana kuti inoona yakateedzana odha uye inoita inoenderana kodhi.
Kunyangwe paine atove akagadzirira bots, chokwadi ini ndiri mumwe wevaya vanofarira kugadzira avo vega mapurogiramu ekudzidza uye kugutsikana kukuru kwaanotipa mushure mekuona kuti kunoshanda ^^

Nezvo zvakati, ngatiendererei mberi kudzidziso.

Kuronga iyo bot isu tichada a akajeka mavara edhita cualquiera (nano, gedit, kufungisisa, nezvimwewo) and the python muturikiri (2.6 kana 2.7 ichave inodikanwa, haishande ne python 3.x).

Kutanga tinopinza iyo zvinodiwa ma module, mune ino nyaya isu tinongoda maviri:

[kodhi] #! / usr / bin / env python
# - * - kukodha: utf-8 - * -

importsocket
kupinza tambo
[/ kodhi]

Iye zvino tinoenderera mberi gadza iyo bot:

[kodhi] HOST=»irc.desdelinux.net»
PORT = 6667
NICK = »CalicoBot»
IDENT = "CalicoBot»
REALNAME = »CalicoBot»
CHAN = »# Kumba»
muverengi = »»
[/ kodhi]

Ini ndichatsanangura musiyano wega wega:

  • HOST: Iyo URL ye server iyo yatinozobatanidza
  • PORT: Chiteshi che server. Nekukanganisa iri 6667.
  • NICK, IDENT uye REALNAME: Ivo vanoenderana nezita remadunhurirwa rekuti bot, kuzivikanwa kwayo uye zita chairo.
  • CHAN: Iyo chiteshi iyo bot inopinda
  • readbuffer: Mukusiyana uku data rakatumirwa neserura richachengetedzwa.

Kana bhoti yedu yagadziriswa tinopfuurira kubatana

[kodhi] s = socket.socket ()
s. kubatana ((HOST, PORT))
tumira ("NICK% s \ r \ n"% NICK)
tumira ("USER% s% s bla:% s \ r \ n"% (IDENT, HOST, REALNAME))
tumira ("JOIN:% s \ r \ n"% CHAN)
[/ kodhi]

Mutsara wekutanga hauna zvakavanzika zvakawanda, wechipiri unogadzira iyo server kubatana uye matatu ekupedzisira anotumira iyo data yedhoti kuseva kuti ienderere mberi nekupinda.

Kana tangobatana tichagadzira Isingagumi chiuno kwatichaenda kugamuchira uye kutumira data kubva / kune server:

[kodhi] nepo 1:
readbuffer = kuverenga mabhuku + s.recv (1024)
temp = tambo.split (readbuffer, "\ n")
kuverengabuffer = temp.pop ()
yetambo mu temp:
mutsetse = tambo.
mutsara = mutsara.split (CHAN + ':')

kana mutsara [0]. tsvaga ("PING")! = -1:
pingid = mutsetse [0] .split () [1] s.tumira ("PONG% s \ r \ n"% pingid)
[/ kodhi]

Pamitsetse yese yakanyorwa pamusoro, ini ndinongotaura pane akakosha.
Con mutsara = mutsara.split (CHAN + ':') zvatinoita kupatsanura izvo sevha inotitumira isu ngatitore chimwe chinhu kubva mugero.
Semuenzaniso mutsara unotevera unoratidza kuti mumwe munhu akanyora chimwe chinhu mugero

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

Yekutanga izita remadunhurirwa remushandisi uye data rekubatanidza (rakaparadzaniswa na!), Iwo wekuraira (mune ino kesi zvinoratidza kuti akanyora), chiteshi uye pakupedzisira, mushure mekoloni, meseji yakatumirwa. Ini handitsanangure yakawanda yakawanda mirairo sezvo izvo zvisingawire mukati meiyi dzidziso.

Mimwe mitsara yakakosha ndiyo iyo vari mushure me if. Ivhavha nguva dzose inotumira iyo PING kuraira kuti uone kana mushandisi achiri akabatana. Muchiitiko ichocho, iyo bot inotumira iwo PONG rairo ine ID iyo PING yakatumira kuratidza kune server kuti ichiri kubatana.

Nezvo isu tatova nechepasi pebhoti. Iye zvino ini ndichaenderera mberi ndichitsanangura maitiro ekuita iyo bot kupindura sezvatinoda kune mimwe mirairo, ingave kubva ku IRC pachayo kana kubva kune vashandisi.

Kupindura IRC mirairo:

PING uye PRIVMSG mienzaniso yemirairo ye IRC. Kune mirairo yakawanda, asi sezvandakambotaura, ndicho chinhu chandisingazotaure nezvazvo.
Semuenzaniso, tinogona kuita kuti bot iti hello kune vashandisi vanobatana:

[kodhi] kana mutsara [0]. tsvaga ('JOIN')! = -1:
zita = mutsara [0] .split ('!') [0] .split (':') [1] kana zita! = NICK uye zita.find (HOST) == -1:
s.send ("PRIVMSG% s: Welcome @% s ^ ^ \ n"% (CHAN, zita))
[/ kodhi]

Kutanga isu tinotarisa kana sevha inotumira rairo ONA izvo zvinoratidza kuti mumwe munhu akabatana neserura. Ipapo isu tinoburitsa nick, tinoongorora kuti nick haisi IRC url (kana zvisiri tikangomhanya iyo bot inozokwazisa iyo url) uye pakupedzisira tinotumira kukwazisa.

Mirairo yeBot:

Zvino ndogadzira sei bot yangu teererai kumirayiro yangu? Ngatitarisei zviri nani pane muenzaniso:

[kodhi] kana mutsara [1] == '$ vhezheni':
tumira («PRIVMSG% s: CalicoBot 0.1.2 (c) 2012 Mwanakomana Chinongedzo \ n»% CHAN)
[/ kodhi]

Mumuenzaniso uyu kana mumwe munhu akanyora $ vhezheni iyo bot icharatidza iwo meseji inoratidza zita rayo, vhezheni uye munyori. Iyo yakazara kodhi yemuenzaniso ndeiyi:

[kodhi] yekupinza sokisi
kupinza tambo

HOST = »localhost»
PORT = 6667
NICK = »CalicoBot»
IDENT = "CalicoBot»
REALNAME = »CalicoBot»
CHAN = »# Kumba»
muverengi = »»
s = socket.socket ()
s. kubatana ((HOST, PORT))
tumira ("NICK% s \ r \ n"% NICK)
tumira ("USER% s% s bla:% s \ r \ n"% (IDENT, HOST, REALNAME))
tumira ("JOIN:% s \ r \ n"% CHAN)

apo 1:

readbuffer = kuverenga mabhuku + s.recv (1024)
temp = tambo.split (readbuffer, "\ n")
kuverengabuffer = temp.pop ()
yetambo mu temp:
mutsara wekudhinda
mutsetse = tambo.
mutsara = mutsara.split (CHAN + ':')

kana mutsara [0]. tsvaga ("PING")! = -1:
pingid = mutsetse [0] .split () [1] s.tumira ("PONG% s \ r \ n"% pingid)

kana mutsara [0]. tsvaga ('JOIN')! = -1:
zita = mutsara [0] .split ('!') [0] .split (':') [1] kana zita! = NICK uye zita.find (HOST) == -1:
s.send ("PRIVMSG% s: Welcome @% s ^ ^ \ n"% (CHAN, zita))

kana len (mutsara) <1:
kana mutsara [1] == '$ vhezheni':
tumira («PRIVMSG% s: CalicoBot 0.1.2 (c) 2012 Mwanakomana Chinongedzo \ n»% CHAN)
[/ kodhi]

Ndinovimba waifarira iyi dzidziso, uyezve, ndinokusiira iyi link kune iyo kodhi yebhoti rangu kuti iwe ugone kuona kodhi yayo zvizere uye iwe ugone kuona zvirinani kuti inoshanda sei (kunyangwe ndakabvisa mimwe mirairo yekushandisa kwako).

CalicoBot


Siya yako yekutaura

Your kero e havazobvumirwi ichibudiswa. Raida minda anozivikanwa ne *

*

*

  1. Inotarisira iyo data: Miguel Ángel Gatón
  2. Chinangwa cheiyo data: Kudzora SPAM, manejimendi manejimendi.
  3. Legitimation: Kubvuma kwako
  4. Kutaurirana kwedata
  5. Dhata yekuchengetedza: Dhatabhesi inobatwa neOccentus Networks (EU)
  6. Kodzero: Panguva ipi neipi iwe unogona kudzora, kupora uye kudzima ruzivo rwako

  1.   auroszx akadaro

    Heh, ini handina kukwanisa kurasikirwa neBot yemombe yaunokwira pa IRC article Nyaya inonakidza kwazvo.

  2.   Cesar akadaro

    Tsananguro yakapusa uye yakajeka.
    Ko kana, iyo python kodhi isipo zvese induction.

  3.   rafa akadaro

    Yakanaka chinyorwa uye kuti zviri nyore sei kubatanidza kune IRC kuronga bot:)…

    Izvo zvinondiyeuchidza nezvenguva idzo dzatainzwa kunge programmers vachinyora zvinyorwa zveMIRC muMSN kana MSNGroups chats

  4.   truko22 akadaro

    Zvinonakidza ndinozvichengeta 😀

  5.   Vargas Vargas J. (@elprincipiodeto) akadaro

    rakanaka kwazvo!

  6.   elynx akadaro

    Inonyanya kubatsira, ndatenda Son_Link!

    Ndinokutendai!

  7.   dbziirwa akadaro

    Mufaro…

    kutevera mitsara yako uye kuyedza chete chinhu chinoshanda is
    importsocket
    kupinza tambo

    HOST = »localhost»
    PORT = 6667
    NICK = »CalicoBot»
    IDENT = "CalicoBot»
    REALNAME = »CalicoBot»
    CHAN = »# Kumba»
    muverengi = »»
    s = socket.socket ()
    s. kubatana ((HOST, PORT))
    tumira ("NICK% srn"% NICK)
    tumira ("USER% s% s bla:% srn"% (IDENT, HOST, REALNAME))
    s. kutumira ("JOIN:% srn"% CHAN)

    kuchinja chiteshi uye zita remadunhurirwa izvozvi pazasi zvinondikanda syntax yekukanganisa

    Ndakabvunza vamwe vandaizivana navo uye vanondiudza kuti izvo hazviite kunge python

    Ini handizive zvandiri kutadza kana kuti nei ndichiteedzera zvese nekuzvinamatira mu python ndozvipa iyo inopinda uye inobatana neiyo chiteshi asi mushure memasekondi mazana maviri nemakumi mashanu chiteshi chinoibvisa nekuti pakanga pasina mhinduro kubva pong ...

  8.   pinfry akadaro

    Iyo yakazara kodhi haina kundishandira, yekupedzisira ndima ndiyo inotadza uye ini handisi kuwana iko kukanganisa. Kana ndikadzima icho chikamu, chinobatana uye chinoshanda zvakakwana. Kwayedzwa ne Python 2.7.3 paWindows 7.

    PS: Mune yangu kesi ndinobatana neserura ine password uye ndinowedzera iyi mitsara:
    PASS = »Passdelbot»
    tumira ("PASS% s \ r \ n"% PASS)

  9.   DoLpHiN akadaro

    Mhoro Mwanakomana Chinongedzo, ndinokutendai zvikuru nechinyorwa, chinonakidza kwazvo, ini handigone kupindura kumirairo yakatumirwa. Chirongwa hachiendi kune yekupedzisira if uye ini ndotadza kuziva kuti sei: "if len (line)> 1:"
    Ndakamirira mhinduro yako.
    gracias