Down 19.07.2006 10:47 - oppdatert 655 dager siden av Terje Pedersen SenCmd

SenCmd 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.

bugtrack

Noen små bot kommandoer i Lua

echo

  1. function register ()
  2. addfilter("echo")
  3. end
  4. function run()
  5. send(sencmd.cmdline)
  6. end

greeting

  1. function register()
  2. addfilter("greet")
  3. end
  4. function run()
  5. send("Hei " .. msg.from .. " :-)")
  6. end

Lenger eksempel, typisk IRC-bot kommando, factoid

  1. learn = {}
  2. function register()
  3. addfilter(":.*:(.*) is also (.*)") -- Append fact
  4. addfilter(":.*:(.*) is (.*)") -- Set fact
  5. addfilter(":.*:(.*)\\?") -- Get fact
  6. end
  7. function run()
  8. require("save.lua")
  9. dofile(storage)
  10. if msg.match == 1 then setfact(result("$1"),result("$2"))
  11. elseif msg.match == 2 then getfact(result("$1"))
  12. elseif msg.match == 0 then appendfact(result("$1"),result("$2"))
  13. end
  14. end
  15. function appendfact(key,append)
  16. key = string.lower(key)
  17. learn[key] = learn[key]..", "..append
  18. writeto(storage)
  19. save("learn",learn)
  20. send(key.." is now "..learn[key])
  21. end
  22. function setfact(key,value)
  23. key = string.lower(key)
  24. if learn[key] then send(key.." is already set to "..learn[key])
  25. else
  26. learn[string.lower(key)] = value
  27. writeto(storage)
  28. save("learn",learn)
  29. send(key.." is stored")
  30. end
  31. end
  32. function getfact(key)
  33. key = string.lower(key)
  34. if learn[key] then
  35. s,e = string.find(learn[key],"|")
  36. if e then randomfact(key)
  37. else send(key.." is said to be "..learn[key]) end
  38. else send(key.." isn't registered") end
  39. end
  40. function randomfact(key)
  41. local splitted = {}
  42. local regex = "([^|]*)|?"
  43. i = 1
  44. for item in string.gfind(learn[key].."|",regex) do
  45. splitted[i] = item
  46. i = i + 1
  47. end
  48. send(key.." is "..(string.gsub(splitted[math.random(1,i-2)],"^%s*(.-)%s*$","%1")))
  49. end
Tilbaketråkk url: klikk her!
Stikkord: prosjekt

Relevante innlegg/sider/lenker

0 tilbaketråkk: