19.07.2006 10:47
- oppdatert 652 dager siden av Terje Pedersen
SenCmdSenCmd er en kommandoserver for å lage boter som fungerer på tvers av teknologier som muliggjør sending/mottakking av kommandoer/svar som f.eks. IRC, XMPP, MSN, SMS/MMS, console, e-post osv.
- Du kan bruke den teknologien som passer deg til enhver tid.
- Du kan utvikle nye kommandoer uten å at SenCmd kobler seg ned fra den måtte være tilkoblet f.eks. IRC-servere.
Første implementasjon var gjort i Java med BeanShell som scriptspråk bot kommandoer. Denne versjonen er desverre utilgjengelig da den ligger på en havarert harddisk, det var på en liten helg med programmering så den hadde desverre ikke havnet i versjonshåndteringssystemet.
Men siden jeg hadde det så kjekt med SenCmd bestemte jeg meg for å implementere på nytt, det sies vel at det gjøres bedre for hver gang en gjør noe, forhåpentligvis :-) Så dagens versjon er laget i C# med Lua som scriptspråk. Kunne nok tenkt meg også her å bruke Minky ved en senere anledning.
Vet du om noen komersielle andvendelser av SenCmd eller lurer på noe så ikke nøl med å ta kontakt med meg.
Noen små bot kommandoer i Lua
echo
- function register ()
- addfilter("echo")
- end
- function run()
- send(sencmd.cmdline)
- end
greeting
- function register()
- addfilter("greet")
- end
- function run()
- send("Hei " .. msg.from .. " :-)")
- end
Lenger eksempel, typisk IRC-bot kommando, factoid
- learn = {}
- function register()
- addfilter(":.*:(.*) is also (.*)") -- Append fact
- addfilter(":.*:(.*) is (.*)") -- Set fact
- addfilter(":.*:(.*)\\?") -- Get fact
- end
- function run()
- require("save.lua")
- dofile(storage)
- if msg.match == 1 then setfact(result("$1"),result("$2"))
- elseif msg.match == 2 then getfact(result("$1"))
- elseif msg.match == 0 then appendfact(result("$1"),result("$2"))
- end
- end
- function appendfact(key,append)
- key = string.lower(key)
- learn[key] = learn[key]..", "..append
- writeto(storage)
- save("learn",learn)
- send(key.." is now "..learn[key])
- end
- function setfact(key,value)
- key = string.lower(key)
- if learn[key] then send(key.." is already set to "..learn[key])
- else
- learn[string.lower(key)] = value
- writeto(storage)
- save("learn",learn)
- send(key.." is stored")
- end
- end
- function getfact(key)
- key = string.lower(key)
- if learn[key] then
- s,e = string.find(learn[key],"|")
- if e then randomfact(key)
- else send(key.." is said to be "..learn[key]) end
- else send(key.." isn't registered") end
- end
- function randomfact(key)
- local splitted = {}
- local regex = "([^|]*)|?"
- i = 1
- for item in string.gfind(learn[key].."|",regex) do
- splitted[i] = item
- i = i + 1
- end
- send(key.." is "..(string.gsub(splitted[math.random(1,i-2)],"^%s*(.-)%s*$","%1")))
- end
Relevante innlegg/sider/lenker
| Sider: Lenker: | På forsiden: |



0 tilbaketråkk: