summaryrefslogtreecommitdiffstats
path: root/bridge/irc
diff options
context:
space:
mode:
Diffstat (limited to 'bridge/irc')
-rw-r--r--bridge/irc/handlers.go15
-rw-r--r--bridge/irc/irc.go4
2 files changed, 19 insertions, 0 deletions
diff --git a/bridge/irc/handlers.go b/bridge/irc/handlers.go
index aaaf42fb..6310f57e 100644
--- a/bridge/irc/handlers.go
+++ b/bridge/irc/handlers.go
@@ -67,6 +67,20 @@ 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)
@@ -117,6 +131,7 @@ 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 8470a1c3..2352fcd7 100644
--- a/bridge/irc/irc.go
+++ b/bridge/irc/irc.go
@@ -30,6 +30,7 @@ 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
}
@@ -40,6 +41,8 @@ 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 {
@@ -112,6 +115,7 @@ 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 {