38 lines
623 B
Go
38 lines
623 B
Go
|
package commands
|
||
|
|
||
|
import (
|
||
|
lua "github.com/yuin/gopher-lua"
|
||
|
"meow.tf/residentsleeper/commands"
|
||
|
)
|
||
|
|
||
|
func Loader(L *lua.LState) int {
|
||
|
mod := L.SetFuncs(L.NewTable(), exports)
|
||
|
L.Push(mod)
|
||
|
return 1
|
||
|
}
|
||
|
|
||
|
var exports = map[string]lua.LGFunction{
|
||
|
"register": commandRegister,
|
||
|
}
|
||
|
|
||
|
func commandRegister(L *lua.LState) int {
|
||
|
name := L.CheckString(1)
|
||
|
|
||
|
handler := L.CheckFunction(2)
|
||
|
|
||
|
cb := func(ctx *commands.CommandContext) {
|
||
|
L.Push(handler)
|
||
|
L.Push(lua.LString(ctx.User))
|
||
|
|
||
|
for _, v := range ctx.Arguments {
|
||
|
L.Push(lua.LString(v))
|
||
|
}
|
||
|
|
||
|
L.PCall(1+ctx.ArgumentCount, 0, nil)
|
||
|
}
|
||
|
|
||
|
commands.Register(name, cb)
|
||
|
|
||
|
return 0
|
||
|
}
|