diff --git a/handler.go b/handler.go
index bb78240..d0eef3e 100644
--- a/handler.go
+++ b/handler.go
@@ -64,6 +64,22 @@ func handleMode(conn *irc.Conn, line *irc.Line) {
 	}
 }
 
+func handleInvite(conn *irc.Conn, line *irc.Line) {
+	if line.Args[0] != conn.Me.Nick {
+		return
+	}
+
+	user := line.Src[strings.Index(line.Src, "!")+1:]
+	if user[0] == '~' {
+		user = user[1:]
+	}
+
+	owner, _ := auth.String(conn.Network, "owner")
+	if user == owner {
+		conn.Join(line.Text)
+	}
+}
+
 func isChannel(target string) bool {
 	return target[0] == '#' || target[0] == '&'
 }
diff --git a/rbot.go b/rbot.go
index 3b3b230..1df8807 100644
--- a/rbot.go
+++ b/rbot.go
@@ -53,6 +53,7 @@ func connect(network string) {
 		})
 	c.AddHandler("privmsg", handlePrivmsg)
 	c.AddHandler("mode", handleMode)
+	c.AddHandler("invite", handleInvite)
 
 	for {
 		fmt.Printf("Connecting to %s...\n", server)
@@ -80,7 +81,7 @@ func autojoin(conn *irc.Conn) {
 }
 
 func readConf() {
-	var err os.Error;
+	var err os.Error
 	conf, err = config.ReadDefault("rbot.conf")
 	if (err != nil) {
 		fmt.Printf("Config error: %s\n", err)
@@ -90,14 +91,14 @@ func readConf() {
 func readConfString(section, option string) string {
 	value, err := conf.String(section, option)
 	if err != nil {
-		panic(fmt.Sprintf("Config error: %s", err));
+		panic(fmt.Sprintf("Config error: %s", err))
 	}
 	return value
 }
 func readConfBool(section, option string) bool {
 	value, err := conf.Bool(section, option)
 	if err != nil {
-		panic(fmt.Sprintf("Config error: %s", err));
+		panic(fmt.Sprintf("Config error: %s", err))
 	}
 	return value
 }