Kaip sukurti IRC robotą: 12 žingsnių (su paveikslėliais)

Turinys:

Kaip sukurti IRC robotą: 12 žingsnių (su paveikslėliais)
Kaip sukurti IRC robotą: 12 žingsnių (su paveikslėliais)

Video: Kaip sukurti IRC robotą: 12 žingsnių (su paveikslėliais)

Video: Kaip sukurti IRC robotą: 12 žingsnių (su paveikslėliais)
Video: Куриный Карааге 2024, Balandis
Anonim

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

Sukurkite IRC robotą 1 veiksmas
Sukurkite IRC robotą 1 veiksmas

Ž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ų.

Sukurkite IRC robotą 2 veiksmas
Sukurkite IRC robotą 2 veiksmas

Ž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.

Sukurkite IRC robotą 3 veiksmas
Sukurkite IRC robotą 3 veiksmas

Ž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ą

Sukurkite IRC robotą 4 veiksmas
Sukurkite IRC robotą 4 veiksmas

Ž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.
Sukurkite IRC robotą 5 veiksmas
Sukurkite IRC robotą 5 veiksmas

Ž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ų.

Sukurkite IRC robotą 6 veiksmas
Sukurkite IRC robotą 6 veiksmas

Ž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ą.

Sukurkite IRC robotą 7 veiksmas
Sukurkite IRC robotą 7 veiksmas

Ž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

Sukurkite IRC robotą 8 veiksmas
Sukurkite IRC robotą 8 veiksmas

Ž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.

Sukurkite IRC robotą 9 veiksmas
Sukurkite IRC robotą 9 veiksmas

Ž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ą.

Sukurkite IRC robotą 10 veiksmas
Sukurkite IRC robotą 10 veiksmas

Ž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ą.
Sukurkite IRC robotą 11 veiksmas
Sukurkite IRC robotą 11 veiksmas

Ž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).
Sukurkite IRC robotą 12 veiksmas
Sukurkite IRC robotą 12 veiksmas

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.

Rekomenduojamas: