OK, I found your problem: your joins, CAP REQ and PRIVMSG didn’t end with \r\n (“carriage return-line feed”) like you did with PONGs and sending your username and password when you start up the bot. This is a requirement for every data you send to an IRC server, as stated in the RFC 1459 standard, otherwise the server will reject any data that doesn’t end with \r\n.
I would suggest getting rid of all the added line endings in all of your code and change one of the lines in Sock.send_data to something like this:
self.con.sendall(bytes(self.data_send + '\r\n', self.encoding))
That way, once you get to making your commands, you don’t have to add \r\n to the end of every message you create. And that makes coding easier too. Hope that helps.