Arkistomatskua
Otathan huomioon, että tämä on yli 16 vuotta vanha artikkeli, joten sisältö ei ole välttämättä ihan ajan tasalla. Olin artikkelin kirjoittamishetkellä 20-vuotias.
Irkin myötä olen innostunut myös irc-boteista. Eniten olen tutustunut eggdroppiin, joka on minulla tälläkin hetkellä käytössä. Botin nimi on Haamu ja se sijaitsee QuakeNetissä kanavilla #rolleweb, #rolletrivia, #angsti ja #pulina. Haamun tekoäly on joskus jopa varsin onnistunutta, se osaa vastailla kysymyksiin, antaa asioita pyydettäessä, kertoa sään… lisää Haamun komennoista täällä.
Vaikka suurinosa scripteistä on netistä haettuja, olen muokannut niistä suurimman osan. Lisäksi olen opetellut jo itsekin koodaamaan tcl:ää ja tässä viestissä päätin näyttää tcl-koodikielen alkeita – vaikka olenkin vielä täysi amatööri. Eggdrop TCL-scriptin perusparametreja ovat mm. bind ja proc. Bind säätää yleensä komentojen nimet ja proc on eräänlaisena osoittajana. Minun tekemäni vastailija.tcl vastailee satunnaisilla lauseilla eri asioihin, kuten hyvänyöntoivotuksiin. Set asettaa tässä tapauksessa lauseet:
set randomoita {
”Hyvää yötä.”
”Öitä.”
”Ööt, nuku hyvin!”
}
Bindilla taas tehdään sanat jotka botti tunnistaa (tässä tapauksessa ”ööt” ja ”öitä”):
bind pub – ööt pub:oita
bind pub – öitä pub:oita
Nyt kun tarpeelliset on säädetty, tuleekin vaikein osa, eli proc:
proc pub:oita {nick host hand chan $randomoita} {
global randomoita
puthelp ”PRIVMSG $chan :[lindex $randomoita [rand [llength $randomoita]]]”
}
Edellinen rimpsu säätää niin että aina kun sanotaan ööt tai öitä niin botti heittää $randomoita -muuttujan tilalle jonkun näistä kolmesta säädetyistä lauseista satunnaisesti (set-kohta). Jos haluaa suojata botin ylikuormittumiselta (esim jos joku peelo floodaa öitä) niin kannattaa laittaa vielä if-lauseke, jolloin proc-osa näyttää tältä:
proc pub:oita {nick host hand chan $randomoita} {
global randomoita
if [rand 2] {
puthelp ”PRIVMSG $chan :[lindex $randomoita [rand [llength $randomoita]]]”
}
return 1
}
Se oli semmoinen nopea vinkkiopas. Toivottavasti auttoi alkuun tcl:n koodaamisessa.