How to read messages from chat using tmi?

I’ve read both the twitch API docs and the - rather fragmented and somewhat rudimentary - TMI docs on the subject. From there it’s clear, both whispers and normal chat messages are supposed to go both ways. This was something I checked with the documentation even before I begun coding for this project.

Your OP was mainly referring to utilisation of whispers

OK, that’s a slight misunderstanding (sorry). What I meant to say was that the “message” event seem to occure only when either self is true or data[“message-type”] equals “whisper”. It’s like the twitch server doesn’t share chat events with my bot client, unless they originate from the bot itself. Why?
The fact that whispers come through is, however, proof of a proper connection from server to client.

Then … there is the issue of whispers. TMI is just a framework for message handling with twitch API. And, as said before, twitch AIP docs state very clearly that PRVMSG is a message type for which twitch suppors both Send and Receive.