updated code to one file

fixed nits. more polite, better error handling, docs

have join use self.target always

formatting and use link to PR instead of a irc-channel-link