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 [itk | taket | fjerde | akvarium | dørek]

Fjerde er hovedinngangen til fjerde etasje, itk er døren inn til arbeidslokalet, taket er døra fra fjerde ut til take, akvarium er døra inn til aqua, dørek er døra inn til interntrappa i nybygg.

Eksterne funksjoner

Send snaps til #itk!

Det er alltid hyggelig å dele mer enn bare tekst på #itk, men det er ikke så lett når vi bruker irc. Heldigvis har itkbot en snap-funksjon!

Via webfjes

Man kan sende snaps (bilder) på irc ved hjelp av et webfjes som bor her.

Brukernavn: itk
Passord: <samme som for #itk>

Via Apple Shortcuts

Selv om det er kult å laste opp bilder i et stilrent php-webfjes, er det noen av oss som vil ha det enda lettere tilgjengelig.

Det er derfor laget en Apple Shortcut man kan legge på hjem-skjermen og enkelt ta et bilde og sende det av gårde. Disse funker da kun på Apple-enheter.

Hvordan får man det til å virke?

Last ned shortcut-en ved å trykke på denne linken.

Rediger den øverste tekstboksen til å inneholde brukernavnet ditt.

Bla helt ned og generer en SSH-nøkkel ved å trykke på "ed25519 key" under "Run script over SSH".

Tips til hvordan å få nøkkelen fra mobil til terminalen: Send den til deg selv på irc(/q <ditt_brukernavn>) eller samfundet-eposten din.

Åpne innstillinger-appen -> Shortcuts -> Advanced -> Allow running scripts

Beveg deg deretter over på pc, og logg på brukeren din på cassarossa, bytt til brukeren itkbot ved å skrive

sudo -u itkbot -i

Tast inn følgende kommando, og erstatt <DIN_NØKKEL> med nøkkelen du genererte i punkt 3. NB: pass på å beholde fnutten bak <DIN_NØKKEL>, da denne er viktig!

echo 'command="install -m 0644 /dev/stdin /home/cassarossa/itk/felles/itkbot/public_html/snaps/'$SUDO_USER'-$(( RANDOM ))-$(date +%y%m%d-%H%M%S).jpeg" <DIN_NØKKEL>' >> /home/cassarossa/itk/felles/itkbot/.ssh/authorized_keys

Så lett er det!

Da skal det bare være å kjøre snarveien, som lar deg velge mellom å sende et bilde fra kamerarullen, eller å ta et nytt bilde, enten med front eller bakkameraet, og sender det av gårde til itkbot. Du vil også få spørsmål om du vil sende bildet ditt over SSH, som du kan velge å måtte bekrefte hver gang, eller alltid tillate.

PRO-tip: Legg snarveien på hjemskjermen, så er den enda lettere tilgjengelig!

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

Ignore-regler

Om du vil ha mindre støy fra itkbot, kan du enten ignorere den, eller være litt mer selektiv (slik at du fortsatt får med f.eks. Twitter-infoen, men ikke at folk skal sjekke barsaldoen sin):

/ignore -regexp -pattern "^Noen ringer på hos ITK og vil inn.$" itkbot!itkbot@cassarossa.samfundet.no
/ignore -regexp -pattern "^Nokon ringer på hjå ITK og vil inn.$" itkbot!itkbot@cassarossa.samfundet.no
/ignore -regexp -pattern ".*rt.samfundet.no.*Display" itkbot!itkbot@cassarossa.samfundet.no
/ignore -regexp -pattern ".*kroner i baren.*" itkbot!itkbot@cassarossa.samfundet.no
/ignore -regexp -pattern ".*i µfs" itkbot!itkbot@cassarossa.samfundet.no
/ignore -regexp -pattern "Xboxen er.*" itkbot!itkbot@cassarossa.samfundet.no
/ignore -regexp -pattern ".*fikk en medalje:.*" itkbot!itkbot@cassarossa.samfundet.no
/ignore -regexp -pattern ^!saldo #itk
/ignore -regexp -pattern ^!xbox$ #itk
/ignore -regexp -pattern ^!minecraft$ #itk
/ignore -regexp -pattern "There are .* of a max" #itk
/ignore -regexp -pattern "F1: .*" #itk
/ignore -regexp -pattern ^!f1 #itk
/ignore -regexp -pattern "Ny meme: .*" #itk
/ignore -regexp -pattern "Serveren er" itkbot!itkbot@cassarossa.samfundet.no
/ignore -regexp -pattern "Ingen er pålogget" itkbot!itkbot@cassarossa.samfundet.no
/ignore -regexp -pattern "Følgende tjommier er pålogget" itkbot!itkbot@cassarossa.samfundet.no

Kommandoen !f1 og !pp støtter også "ignore" som et argument og returnerer de relevante reglene

Todo

Lenker: Start

Epost: itk@samfundet.no | Telefon: 992 15 925 | Sist endret: 2024-11-17 20:50 | Revisjon: 34 (historie, blame) | Totalt: 1905 kB | Rediger