Jei dalyvavote interneto perdavimo pokalbiuose (IRC), tikėtina, kad tam tikru momentu susidūrėte su robotu. Robotai yra nepriklausomos programos ar scenarijai, kurie prisijungia prie tinklo taip pat, kaip ir žmogus. Jie gali būti užprogramuoti atsakyti į vartotojo komandas ar net kalbėtis. Šiame vadove galite sužinoti, kokios yra jūsų galimybės sukurti IRC robotą ir kaip jį sukurti nuo nulio.
Žingsniai
1 iš 2 metodas: galimybių įvertinimas
Žingsnis 1. Apsvarstykite galimybę įdiegti kliento scenarijų
Kartais jūs norite, kad būtų atlikta paprasta užduotis, ir nenorite, kad tai būtų nepriklausoma programa. Tokiu atveju galite pridėti scenarijų prie IRC kliento. Tai gana įprasta daryti su „mIRC“, turinčiu tvirtą scenarijų variklį ir įvairius galimus scenarijus. Tai yra lengviausias pasirinkimas ir labai rekomenduojamas, jei neturite daug programavimo patirties. Likusioje šio vadovo dalyje instrukcijos reikalauja tam tikrų kompiuterinio programavimo žinių.
Žingsnis 2. Apsvarstykite jau sukurtą savo roboto kodų bazę
Yra daug atviro kodo ir nemokamų programų, kurios gali padėti greitai nustatyti savo pritaikytą robotą. Vienas iš tokių pavyzdžių yra „Eggdrop“, seniausias IRC robotas, kuris vis dar yra prižiūrimas.
Žingsnis 3. Apsvarstykite galimybę parašyti savo robotą
Pažengusiems IRC vartotojams ir kūrėjams, kurie jau išmano programavimo kalbą, tai puiki galimybė. Galite naudoti beveik bet kurią norimą kalbą, jei ji palaiko lizdą, tačiau populiariausios yra Python, Lua, PHP, C ir Perl. Jei nežinote nė vieno iš šių dalykų, bet žinote kitą kalbą, tai nėra problema. Paprastai internete galite rasti pavyzdžių bet kuria norima kalba. Šiame straipsnyje mes parodysime, kaip naudoti PHP. Jei norite naudoti PHP, kompiuteryje ar serveryje turite įdiegti PHP-CLI.
- PHP galima atsisiųsti iš php.net
- PHP scenarijus galima vykdyti iš komandinės eilutės. Daugiau informacijos ir pagalbos naudojant PHP rasite šiame PHP vadovo puslapyje.
2 metodas iš 2: sukurkite savo robotą
Žingsnis 1. Surinkite ryšio detales
Norėdami sėkmingai prisijungti prie tinklo, turėsite gauti šią informaciją.
-
Serveris: Serverio, naudojamo prisijungti prie IRC, domeno pavadinimas, pvz
chat.freenode.net
- Uostas: Daugeliu atvejų tai yra 6667, bet jei nesate tikri, patikrinkite savo IRC klientą arba tinklo svetainę.
- Slapyvardis: Slapyvardis, kurį turėtų naudoti jūsų robotas. Atminkite, kad kai kurie specialieji simboliai paprastai neleidžiami (@#! ~).
-
Tapatybė: Identifikavimo laukas atsiranda po slapyvardžio, kai kas nors atlieka tokį WHOIS:
slapyvardis! ident@hostname
- GECOS: Šiame lauke paprastai nurodomas tikrasis naudotojo vardas arba bendras roboto aprašymas, bet jūs galite ten įrašyti viską, ką norite.
- Kanalas: Paprastai norite, kad jūsų robotas būtų viename ar daugiau kanalų. Daugelyje tinklų jų priešdėlis yra „#“, tačiau tai gali būti kažkas kita.
Žingsnis 2. Inicijuokite konfigūraciją savo scenarijuje
Paprasčiausias būdas tai padaryti yra įvardyti kelis kintamuosius pagal aukščiau pateiktus konfigūracijos pavadinimus. Taip pat galite juos išsaugoti konfigūracijos faile ir išanalizuoti, tačiau kol kas laikysimės būtiniausių dalykų.
Žingsnis 3. Prisijunkite prie tinklo
Norėdami tai padaryti, turėsite atidaryti lizdą prie serverio nurodytame prievade. Taip pat šioje dalyje turėtumėte pridėti klaidų tvarkymo kodą, jei ryšys dėl kokių nors priežasčių nepavyks. Šiuo atveju PHP suteikia mums keletą tvarkingų funkcijų, leidžiančių efektyviai išspręsti klaidą.
Žingsnis 4. Užregistruokite savo robotą
Tai reiškia, kad serveriui reikia pateikti savo slapyvardį, tapatybę ir GECOS, o ne užsiregistruoti „NickServ“. Norėdami tai padaryti, tiesiog parašykite NICK ir USER komandas į serverį, po to - vežimo grąžinimo ir naujos eilutės. Būtina tai padaryti tiksliai taip, kaip parodyta, nes taip yra nurodyta RFC1459, IRC protokolo specifikacijoje.
Atminkite, kad turi būti nurodyti du viduriniai parametrai (šiuo atveju * ir 8), tačiau serveris jų nepaiso. Šiuos du naudoja tik susieti serveriai, o ne tiesiogiai jungiantis klientas
Žingsnis 5. Toliau gaukite duomenis iš lizdo naudodami kilpą
Jei nenaudotumėte ciklo, jūsų scenarijus būtų nedelsiant nutrauktas ir robotas iš esmės būtų nenaudingas. Jei norite palaikyti ryšį, turite gauti duomenis iš serverio, patikrinti, ar nėra norimo srauto įvesties, ir atsakyti, jei taip. Čia mes renkame duomenis naudodami „socket_read“(), kad paimtume visus turimus duomenis. Jei yra, mes ir toliau darome viską, kas yra cikle. Taip pat gali būti naudinga išvesti neapdorotus duomenis į konsolę, kad galėtumėte pamatyti, kas vyksta iš roboto perspektyvos.
Žingsnis 6. Parašykite ping tvarkyklę
Tai yra svarbu. Jei laiku neatsakysite į pingus, serveris jus atjungs. Pirmiausia pasirūpinkime tuo. Siunčiami iš serverio pingeliai atrodo taip:
PING: rajaniemi.freenode.net
. Serveris neprivalo rašyti savo pavadinimo po „:“, jis gali pateikti viską, ko nori. Jūs turite * pakartoti tiksliai tai, ką sakė serveris, išskyrus PONG naudojimą.
Žingsnis 7. Prisijunkite prie savo kanalų
Gerai, todėl turime robotą, kuris jungiasi prie tinklo ir reaguoja į ping'us, bet kitaip nieko nedaro. Kad žmonės galėtų pamatyti ir naudoti jūsų robotą, jis turėtų būti kanale (kitaip turėsite pasakyti, kad jis atsakytų į privačias žinutes).
- Norėdami tai padaryti, patikrinsime, ar nėra serverio būsenos kodų 376 arba 422. 376 reiškia, kad MOTD (dienos pranešimas) baigtas. 422 reiškia, kad nebuvo išsiųstas MOTD. Tas MOTD yra tik kažkas, ką serveris siunčia jums prisijungus, tačiau tai yra geras rodiklis, kada galime pradėti prisijungti prie kanalų.
- Turėsite išduoti JOIN komandą. Po šios komandos gali būti vienas ar daugiau kanalų, atskirtų kableliu.
- Atkreipkite dėmesį, kad serverio siunčiami duomenys yra patogiai atskirti tarpais. Tokiu būdu galime padalinti duomenis ir nurodyti juos naudodami masyvo indeksą.
Žingsnis 8. Atsakykite į kanalo pranešimus
Dabar apie linksmąją dalį. Jūsų robotas prisijungė prie kanalo, todėl dabar galite jį naudoti norimam tikslui. Sukurkime pavyzdinę komandą, pavadintą @moo.
- Atkreipkite dėmesį į poslinkį, kuriame prasideda pranešimai (tai taikoma ir kanalams, ir asmeniniams pranešimams). Jis visada yra toje pačioje vietoje.
- Komandas, kuriose yra tarpų, galite tvarkyti sujungę suskaidytus duomenis atgal ($ d). Tai yra už šio straipsnio ribų.
- Jei tikslas yra kanalas (pvz., #„Botters-test“), atsakykite į tai. Jei tai privati žinutė, ši dalis bus jūsų roboto slapyvardis! Tada turite atsakyti naudodami siuntėjo, o ne jūsų slapyvardį (kitaip jūs kalbėtumėte su savimi, ir tai tiesiog kvaila).
9. Išplėskite savo robotą
Naudodami aukščiau pateiktą diegimą galite pridėti daug naujų funkcijų. Yra daug kitų komandų, kurias galima duoti IRC tinklui, pavyzdžiui, operacijų valdymas, spardymas ir uždraudimas, temos nustatymas, be daugelio kitų funkcijų.
Patarimai
-
Komandos „/me“rezultatą galite gauti pridėdami savo pranešimų priešdėlį:
- PRIVMSG #channel: / 001ACTION tekstas čia / 001.
-
001 reiškia 1 ASCII simbolį ir bus interpretuojamas dvigubai cituojamoje PHP eilutėje. Arba galite naudoti
chr (1)
- už stygos.
- Spalvas pranešime galima sukurti priešdėlį „\ 003“(ASCII kodas 3), po kurio nurodomas spalvos numeris. 0 = balta, 1 = juoda, 2 = mėlyna, 3 = žalia, 4 = raudona […]. Daugiau spalvų rasite mIRC puslapyje.
- Mandagumo dėlei gaukite kanalų savininkų ir IRC operatorių sutikimą prieš įtraukdami savo robotą į internetą. Ne visi tinklai ir kanalai turi palankiai vertinamą politiką robotų, net ir gerai veikiančių, atžvilgiu.
- Kai kurie IRC demonai viršija protokolo specifikacijas ir įgyvendina kitas funkcijas. Jei pritaikote jį konkrečiam tinklui, tikrai galite pasinaudoti šiomis funkcijomis, jei žinote apie jų protokolą. Tačiau jei norite, kad jūsų robotas būtų įdiegtas keliuose tinkluose, pabandykite išlaikyti jį taip, kaip yra RFC.