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:
git clone /home/cassarossa/itk/felles/git/itkbot
cp example.config.conf config.conf
- Endre konfigurasjonsfilen og eksporter GOPATH i skallet ditt
go get -d && go build && ./itkbot
- 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:
- (Interaktiv) Input fra bruker og gi tilbakemelding på dette. Eksempel: !lasttweet
- (Passiv) Lytte på tjeneste og gi tilbakemelding når noe skjer. Eksempel: lytter på twitter/snapshat og varsle om nye tweets/bilder.
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.
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