Thumbnail

rani/matterbridge.git

Clone URL: https://git.buni.party/rani/matterbridge.git

commit 9ffa8832d6a3d0e42e4479cfff313be42618d539 Author: Wim <wim@42.be> Date: Sun Nov 22 22:44:15 2020 +0000 Join on invite (irc). Fixes #1231 (#1306) diff --git a/bridge/irc/handlers.go b/bridge/irc/handlers.go index aaaf42f..6310f57 100644 --- a/bridge/irc/handlers.go +++ b/bridge/irc/handlers.go @@ -676 +6720 @@ func (b *Birc) handleFiles(msg *config.Message) bool {   return true  }   +func (b *Birc) handleInvite(client *girc.Client, event girc.Event) { + if len(event.Params) != 2 { + return + } + + channel := event.Params[1] + + b.Log.Debugf("got invite for %s", channel) + + if _, ok := b.channels[channel]; ok { + b.i.Cmd.Join(channel) + } +} +  func (b *Birc) handleJoinPart(client *girc.Client, event girc.Event) {   if len(event.Params) == 0 {   b.Log.Debugf("handleJoinPart: empty Params? %#v", event) @@ -1176 +1317 @@ func (b *Birc) handleNewConnection(client *girc.Client, event girc.Event) {   i.Handlers.Add("PART", b.handleJoinPart)   i.Handlers.Add("QUIT", b.handleJoinPart)   i.Handlers.Add("KICK", b.handleJoinPart) + i.Handlers.Add("INVITE", b.handleInvite)  }    func (b *Birc) handleNickServ() { diff --git a/bridge/irc/irc.go b/bridge/irc/irc.go index 8470a1c..2352fcd 100644 --- a/bridge/irc/irc.go +++ b/bridge/irc/irc.go @@ -306 +307 @@ type Birc struct {   Local chan config.Message // local queue for flood control   FirstConnection, authDone bool   MessageDelay, MessageQueue, MessageLength int + channels map[string]bool     *bridge.Config  } @@ -406 +418 @@ func New(cfg *bridge.Config) bridge.Bridger {   b.Nick = b.GetString("Nick")   b.names = make(map[string][]string)   b.connected = make(chan error) + b.channels = make(map[string]bool) +   if b.GetInt("MessageDelay") == 0 {   b.MessageDelay = 1300   } else { @@ -1126 +1157 @@ func (b *Birc) Disconnect() error {  }    func (b *Birc) JoinChannel(channel config.ChannelInfo) error { + b.channels[channel.Name] = true   // need to check if we have nickserv auth done before joining channels   for {   if b.authDone {