natsbot

NATS bot
git clone https://git.instinctive.eu/natsbot.git
Log | Files | Refs | README | LICENSE

commit 9bf547b547a69daa7fbf9a2649853b3ba863933d
parent fef175d112af373859834f9a107d65f7afe92f04
Author: Natasha Kerensikova <natgh@instinctive.eu>
Date:   Thu, 11 Sep 2025 21:35:25 +0000

Callbacks for internal events are dispatched
Diffstat:
Mnatsbot.go | 30+++++++++++++++++++++++++++++-
1 file changed, 29 insertions(+), 1 deletion(-)

diff --git a/natsbot.go b/natsbot.go @@ -114,7 +114,35 @@ func Loop(cb NatsBot, mainScript string, capacity int) { } func processEvt(L *lua.LState, evt *internalEvent) { - // TODO + tbl, idx := stateConnTable(L) + connLua := L.RawGetInt(tbl, idx[evt.nc]) + fn := L.GetField(L.GetField(L.GetMetatable(connLua), "__index").(*lua.LTable), evt.name) + if lua.LVIsFalse(fn) { + return + } + + var subLua lua.LValue + if evt.subs == nil { + subLua = lua.LNil + } else { + tbl, idx := stateSubsTable(L) + subLua = L.RawGetInt(tbl, idx[evt.subs]) + } + + var errLua lua.LValue + if evt.err == nil { + errLua = lua.LNil + } else { + errLua = lua.LString(evt.err.Error()) + } + + err := L.CallByParam(lua.P{Fn: fn, NRet: 0, Protect: true}, + connLua, + subLua, + errLua) + if err != nil { + panic(err) + } } func processMsg(L *lua.LState, msg *nats.Msg) {