@@ -0,0 +1,846 @@
+from twisted.plugin import IPlugin%0Afrom txircd.channel import IRCChannel%0Afrom txircd.module_interface import IModuleData, ModuleData%0Afrom zope.interface import implements%0A%0Aclass AutoJoin(ModuleData):%0A    implements(IPlugin, IModuleData)%0A%0A    name = %22AutoJoin%22%0A%0A    def hookIRCd(self, ircd):%0A        self.ircd = ircd%0A%0A    def actions(self):%0A        return %5B (%22welcome%22, 1, self.autoJoinChannels) %5D%0A%0A    def autoJoinChannels(self, user):%0A        for chanName in self.ircd.config.getWithDefault(%22client_join_on_connect%22, %5B%5D):%0A            if chanName%5B0%5D != %22#%22:%0A                chanName = %22#%7B%7D%22.format(chanName)%0A            if chanName in self.ircd.channels:%0A                channel = self.ircd.channels%5BchanName%5D%0A            else:%0A                channel = IRCChannel(self.ircd, chanName)%0A            user.joinChannel(channel)%0A%0AautoJoin = AutoJoin()

Implement the autojoin on connect module