natsim

NATS ↔ Instant Messaging Bridge
git clone https://git.instinctive.eu/natsim.git
Log | Files | Refs | README | LICENSE

commit 2eff215f97581e6de9d61848782e47b3710f32a2
parent 13de439291f9284d7faba3d59ce534db79d5dc1d
Author: Natasha Kerensikova <natgh@instinctive.eu>
Date:   Tue, 17 Jun 2025 18:27:11 +0000

NATS connection delayed to after joining IRC channel
Diffstat:
Mmain.go | 37+++++++++++++++++++++----------------
1 file changed, 21 insertions(+), 16 deletions(-)

diff --git a/main.go b/main.go @@ -146,24 +146,9 @@ func NewNatsIM(configPath string) (*NatsIM, error) { natsim.cmdQueue = make(chan command, 10) natsim.ircQueue = make(chan string, 10) - optSeed, err := nats.NkeyOptionFromSeed(natsim.Nats.NkeySeed) - if err != nil { - return nil, err - } - - natsim.nc, err = nats.Connect(natsim.Nats.Server, - optSeed, - nats.ConnectHandler(natsim.natsConnected), - nats.DisconnectErrHandler(natsim.natsDisconnected), - nats.ReconnectHandler(natsim.natsReconnected), - nats.ReconnectErrHandler(natsim.natsReconnectErr)) - if err != nil { - return nil, err - } - natsim.irc = irc.IRC(natsim.Irc.Nick, "natsim") natsim.irc.AddCallback("001", natsim.ircJoin) - natsim.irc.AddCallback("366", func(e *irc.Event) {}) + natsim.irc.AddCallback("366", natsim.ircJoined) natsim.irc.AddCallback("PRIVMSG", natsim.ircReceive) err = natsim.irc.Connect(natsim.Irc.Server) @@ -228,6 +213,26 @@ func (natsim *NatsIM) doCommands() { func (natsim *NatsIM) ircJoin(e *irc.Event) { natsim.irc.Join(natsim.Irc.Channel) +} + +func (natsim *NatsIM) ircJoined(e *irc.Event) { + optSeed, err := nats.NkeyOptionFromSeed(natsim.Nats.NkeySeed) + if err != nil { + natsim.ircSendError("NkeyOptionFromSeed", err) + return + } + + natsim.nc, err = nats.Connect(natsim.Nats.Server, + optSeed, + nats.ConnectHandler(natsim.natsConnected), + nats.DisconnectErrHandler(natsim.natsDisconnected), + nats.ReconnectHandler(natsim.natsReconnected), + nats.ReconnectErrHandler(natsim.natsReconnectErr)) + if err != nil { + natsim.ircSendError("Connect", err) + return + } + natsim.cmdQueue <- command{name: "subscribeAll", arg: ""} }