natsbot

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

commit 1f94ec5c6c74be77853ee77027367b80008368ce
parent 34d01919b74ac4ad99d0e8a8359fcc9cdbe4b416
Author: Natasha Kerensikova <natgh@instinctive.eu>
Date:   Fri, 29 Aug 2025 19:00:01 +0000

Dispatch of incoming messages to subscription callbacks
Diffstat:
Mnatsbot.go | 13++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/natsbot.go b/natsbot.go @@ -79,7 +79,18 @@ func Loop(cb NatsBot, mainScript string, capacity int) { } func processMsg(L *lua.LState, msg *nats.Msg) { - // TODO + tbl := stateSubsTable(L) + id := L.RawGetInt(tbl, 1).(*lua.LUserData).Value.(subsMap)[msg.Sub] + log.Printf("Received message on %q, for sub %q, at id %d", msg.Subject, msg.Sub.Subject, id) + subs := L.RawGetInt(tbl, id) + fn := L.GetField(L.GetMetatable(subs), "__call") + err := L.CallByParam(lua.P{Fn: fn, NRet: 0, Protect: true}, + subs, + lua.LString(msg.Subject), + lua.LString(string(msg.Data))) + if err != nil { + panic(err) + } } /********** State Object in the Lua Interpreter **********/