ITKbot

ITKbotten ble startet av Torvald i Python, men skrevet om til Go høsten 2013 og lagt ut på ITK sitt git-område.

Tilgjengelige kommandoer

Spør ITKbotten med !help, for å få kommandoene som fungerer per dags dato.

Hvordan åpne dører

Du må først legge til identen din i /etc/itk/allowed_opendoor.conf. Kun brukere fra tjenere som kjører identd er tillatt, for å være sikker på at det er rett bruker. Brukere fra tjenere som ikke kjører identd er identifisert med en ~ foran brukernavnet i identen.

Deretter kan du åpne følgende dører:

!opendoor [fjerde | nsh | bakdoera | itk]

Uten argumenter defaulter den til fjerde.

Fjerde er hovedinngangen til fjerde etasje, itk er døren inn til arbeidslokalet, nsh er døren for å komme inn på nordre sideloft og bakdoera er selvsagt bakdøren ved DH.

Utvikling

ITKbotten er som sagt skrevet i Go og kan sjekkes ut fra ITK sitt git-område. For å komme i gang:

  1. git clone /home/cassarossa/itk/felles/git/itkbot
  2. cp example.config.conf config.conf
  3. Endre konfigurasjonsfilen og eksporter GOPATH i skallet ditt
  4. go get -d && go build && ./itkbot
  5. Start å utvikle!

Når du vil teste endringene dine kan bygge på nytt og deretter sende HUP til prosessen ( killall -u <brukernavn> -HUP itkbot ). Den vil da kjøre seg selv på nytt, uten å miste IRC-tilkoblingen.

Utrulling av ny kode

Etter du har pushet endringene dine ønsker du antageligvis rulle de ut på botten. Dette gjøres enkelt ved å kjøre dette på cassarossa:

# systemctl reload itkbot

Dette vil pulle, bygge og reloade botten.

Starte og stoppe botten

itkbot kjører som en systemd service. Den er satt opp til å starte ved oppstart og når botten avslutter (med mindre den ble stoppet av systemctl). Dermed er det vanligvis ikke nødvendig å starte den manuelt. Om det likevel skulle være ønskelig kan det gjøres med:

# systemctl start itkbot

start kan som vanlig byttes ut med stop, restart eller status for å gjøre disse tingene isteden.

Legge til funksjonalitet

Det finnes to typer funksjonalitet:

Tenk ut hvilken type kategori funksjonaliteten du ønsker å legge til havner i og finn eksempler på implementasjon i koden.

Kort om virkemåte

I main-metoden lyttes det på en channel/buss (kalt mainframe) som goroutines kan skrive til. Når det skrives til denne bussen så skriver boten dette ut i socketen sin til ircserveren.

E.g. hvis jeg vil legge til funksjon som svarer "Hei" hvis en bruker gir kommandoen !goddag, så må man først parse inndataen og deretter skrive "Hei" på bussen, slik:

mainframe <- "NOTICE #kanal :Hei"

Verre er det ikke (!)

Passiv funksjonalitet er implementert ved at hver lytter/metode kjøres i en egen goroutine/tråd med referanse til "mainframen".

Hva er Go?

Nytt programmeringsspråk (2009) laget av Google. Gjør trådprogrammering ufattelig enkelt og er en deilig blanding mellom C og Python, for å sette det litt på spissen.

Wikipedia

Demo

Lenker: Start

Mail: itk@samfundet.no | Telefon: 992 15 925 | Sist endret: 2016-01-17 18:25 | Revisjon: 12 (historie, blame) | Totalt: 1467 kB | Rediger