Twitch doesn’t have donations. Streamers use other services like streamlabs for those.
What is the client doing with it that it needs validating? If the client only receives the data from a server it trusts and does not pass it on to anyone else, does it matter if the client modifies it for its own use, even if not originally intended by you?
The server can get the latest bit donations for a certain channel using the Twitch API.
Since each donation message contains a “message_id”, the server may be able to get the information of this message from that “message_id” using the Twitch API.
Do you need to listen to more than 500 topics though? The 50 topics per connection is a hard limit as more than that results in an error message, but the 10 connections per IP is a recommendation and as the documentation says The two limits above are likely to be relaxed for approved third-party applications, as we start to better understand third-party requirements. so there might be options to go beyond that without issue.
As for 3. the additional processing power required to have the connections server side rather than client side will be minimal and not something that should make any difference. You also have to consider you are already listening for messages about cheers, except right now you’re just listening to the clients (and thus having the issue of not being able to ensure authenticity of the messages as having been from Twitch and not edited/made up) instead of listening directly to pubsub.