From b469c8ddbda62ceecbd10883e4af1fbfe5d54898 Mon Sep 17 00:00:00 2001 From: Wim Date: Sat, 8 Apr 2017 00:42:37 +0200 Subject: Rejoin channel when kicked (irc). Closes #146 --- bridge/config/config.go | 5 +++-- bridge/irc/irc.go | 8 +++++++- 2 files changed, 10 insertions(+), 3 deletions(-) (limited to 'bridge') diff --git a/bridge/config/config.go b/bridge/config/config.go index 564ebddb..78274165 100644 --- a/bridge/config/config.go +++ b/bridge/config/config.go @@ -10,8 +10,9 @@ import ( ) const ( - EVENT_JOIN_LEAVE = "join_leave" - EVENT_FAILURE = "failure" + EVENT_JOIN_LEAVE = "join_leave" + EVENT_FAILURE = "failure" + EVENT_REJOIN_CHANNELS = "rejoin_channels" ) type Message struct { diff --git a/bridge/irc/irc.go b/bridge/irc/irc.go index b1041f2a..8f72f0f7 100644 --- a/bridge/irc/irc.go +++ b/bridge/irc/irc.go @@ -167,14 +167,19 @@ func (b *Birc) handleNewConnection(event *irc.Event) { i.AddCallback("JOIN", b.handleJoinPart) i.AddCallback("PART", b.handleJoinPart) i.AddCallback("QUIT", b.handleJoinPart) + i.AddCallback("KICK", b.handleJoinPart) i.AddCallback("*", b.handleOther) // we are now fully connected b.connected <- struct{}{} } func (b *Birc) handleJoinPart(event *irc.Event) { - flog.Debugf("Sending JOIN_LEAVE event from %s to gateway", b.Account) channel := event.Arguments[0] + if event.Code == "KICK" { + flog.Infof("Got kicked from %s by %s", channel, event.Nick) + b.Remote <- config.Message{Username: "system", Text: "rejoin", Channel: channel, Account: b.Account, Event: config.EVENT_REJOIN_CHANNELS} + return + } if event.Code == "QUIT" { if event.Nick == b.Nick && strings.Contains(event.Raw, "Ping timeout") { flog.Infof("%s reconnecting ..", b.Account) @@ -182,6 +187,7 @@ func (b *Birc) handleJoinPart(event *irc.Event) { return } } + flog.Debugf("Sending JOIN_LEAVE event from %s to gateway", b.Account) b.Remote <- config.Message{Username: "system", Text: event.Nick + " " + strings.ToLower(event.Code) + "s", Channel: channel, Account: b.Account, Event: config.EVENT_JOIN_LEAVE} flog.Debugf("handle %#v", event) } -- cgit v1.2.3