https://discordapp.com/oauth2/authorize?client_id=353241122593832962&scope=bot&permissions=0
Botten reagrer på mentions (@LarsScript) etterfulgt av en kodeblokk:
@LarsScript#3640
si("hei")
Man kan også tilordne nøkkelord til botten:
@LarsScript#3640 assign to si hei
si("hei")
Med dette vil botten evaluere nøkkelordet hvergang det blir nevnt i guilden:
-
Ingen desimaltall, Lars er ikke så punktelig.
lovelig eksempel:kontobalanse er 1
ulovelig eksempel:kontobalanse er 1.1 -
Import setninger er ikke lovelig, Lars bruker kun sin egen kode.
-
Lars bruker ikke
TrueellerFalsehan brukertjaognei(tjavil tilfeldig bli satt tilTrueellerFalse(OBS! dette gjelder forøverig ALLE evalueringen som evaluerer tilTrue, de vil ha en 50% sjansje for å bliFalse))
lovelig eksempel:EØS er tja
ulovelig eksempel:EØS er True -
Feilmeldinger er oppskryt, Lars vet ikke hva han gjorde feil derfor finnes ikke dette. (Dersom man ønsker å la brukeren skape feil kan man bruke den innebygde avtalen
KlikkIVinkel(melding)) -
Istedenfor
returnbruker vigi unnskyldning:, når Lars har sagt han skal gjøre en avtale kan han komme opp med en unnskyldning for å bryte ut av avtalen.
lovelig eksempel:gi unnskyldning: tja
ulovelig eksempel:return True -
En funksjonsdefinisjon starter med nøkkelordet
avtale, alle funksjoner fungerer som avtaler for Lars. De er derfor også primitive verdier og kan byttes ut med andre primitive verdier slik som tall og tekst når som helst.
lovelig eksempel:
avtale spilleLeague(medVenner){
dersom ikke medVenner er ingenting?{
KlikkIVinkel("Brukerfeil! avtalen spilleLeague() ble tilsendt venner, dette stemmer ikke. Lars har ingen venner")
} ellers{
gi unnskyldning: "Kan ikke spille uansett, må vaske bilen til dama"
}
}
Gyldige primitive verdier:
- nøkkeordet
ingenting, dette er den atomære verdien for ingenting altsånull - boolskeverdier,
tjaognei - heltallsverdier, altså ℤ {..., -3, -2, -1, 0, 1, 2, 3, ...}
- tekststrenger, MERK: tekstnotasjon benytter dobbelt anførselstegn (
"Nettet er helt Afrika atm") - lister, definieres ved bruk av
[]- eks:fagBestått er [] - hashmaps, definieres ved bruk av
{}- eks:myAccomplishments er {"å ha dame": tja, "å ha venner": nei} - avtaler (funksjoner)
Aritmetiske operasjoner:
+gjør addisjon-gjør substraksjon*gjør multiplikasjon/gjør divisjon>/størreevaluerer to uttrykk mot hverandre medgreater thanutsagnet</mindreevaluerer to uttrykk mot hverandre medlesser thanutsagnet%gjør modulo
Flyt i språket:
()definerer sammensatte setninger{}definerer skop, slik som i Javaikkeevaluerer til det samme somnotogevaluerer til det samme somandellerevalueres til det samme somordersom/ellerkanskje/ellersevalueres respektivt tilif/else if/elsemensevalueres tilwhile(do while,forogfor eachfinnes ikke ettersom disse løkkene er for vanskelig for Lars)erfungerer både for sammenligning og tilordning (både==og=)- for sammenligning skal man som nevnt bruke
er, men et sammenligningsuttrykk må ende med?(dette gjelder forøvering alle sammenligningsuttrykk>=/<osv.)
lovelig eksempel:
antallVenner er 0
dama er "alt jeg har"
dersom antallVenner er 0 og dama er "alt jeg har"?{
si("alt er ok")
} ellers {
KlikkIVinkel("?????")
}
- for å oppnå prosedyrebasert objektorientering i LarsScript trenger vi en måte å få skrivetilgang til ikkelokale variabler (
nonlocali python.i Java). Dette løses elegant ved at Lars hadde tilgang til variabelen når den var ipre-alpha, vi kan dermed få skrivetilgang til variabler utenfor vårt eget skop med å brukepre-alphanøkkelordet.
eksempel:
avtale vaskeBilenTilDama(){
såpemerke er "den dama liker best"
avtale byttSåpe(){
pre-alpha såpemerke er "dama fant en hun likte bedre"
}
}
- tenke(String) - ber om input fra bruker og gir dette tilbake som en unnskyldning
- si(String) - printer informasjon til skjermen
- antall(val) - returnerer lengden av en tekststreng eller antall elementer i en liste
- teksten(val) - gir tilbake
.toString()av verdien - KlikkIVinkel(String) - kaster en feilmelding (Lars lager ikke egne feilmeldinger)
