↑↓ liiku Enter avaa Esc sulje Satunnainen kirjoitus

Koodaa bottisi puhumaan

1 min
242 sanaa

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 , #rolletrivia, #angsti ja . 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.

Hyvin kirjoitettu

Taputa, jos tykkäsit

Reaktiot

Tykkää, boostaa tai vastaa siellä, missä kirjoitus on jaettu. Reaktiot Mastodonista, Blueskysta ja Threadsista päivittyvät tänne. Jos jakoa ei vielä ole, hae kirjoituksen osoite Mastodon-palvelimesi haulla. Rolle Mastodonissa: @rolle@mementomori.social.

Jaa ja seuraa

Lue myös

Keskustelu

Ei vielä kommentteja

Kukaan ei ole vielä sanonut mitään. Aloita keskustelu Mastodonissa tai siellä, missä kirjoitus on jaettu.

Osallistu keskusteluun

Keskustelu käydään somessa. Julkiset kommentit Blueskysta, Threadsista ja Mastodonista tuodaan tämän artikkelin kylkeen automaattisesti. Voit vastata kirjoitukseen suoraan omalta Mastodon-tililtäsi tai miltä tahansa fediversumin palvelimelta:

  1. Kopioi kirjoituksen osoite
  2. Liitä osoite oman palvelimesi hakuun

    Haku löytää kirjoituksen, ja voit vastata siihen kuten mihin tahansa julkaisuun.

  3. Rolle Mastodonissa

    @rolle@mementomori.social

Jaa ja keskustele

Kun kirjoitus jaetaan Mastodonissa, Blueskyssa tai Threadsissa, jakoon tulleet vastaukset ja lainaukset kopioituvat tänne viestiketjuineen. Keskustelu näkyy täällä yleensä vartin sisällä.