The documentation states:
For a join, the message contains all chat-room settings. For changes, only the relevant tag is sent.
The example shows this correctly:
Example: On the dallas channel, slow mode is set to 10 seconds:
> @slow=10 :tmi.twitch.tv ROOMSTATE #dallas
Only including the relevant tag would be fine (and I think it did before), but at least right now it’s sending all the tags, but all the non-changed ones set to “0”:
SENT: PRIVMSG #tduvatest :/slow
@msg-id=slow_on :tmi.twitch.tv NOTICE #tduvatest :This room is now in slow mode. You may send messages every 120 seconds.
@emote-only=0;followers-only=0;r9k=0;rituals=0;room-id=41140058;slow=120;subs-only=0 :tmi.twitch.tv ROOMSTATE #tduvatestSENT: PRIVMSG #tduvatest :/emoteonly
@msg-id=emote_only_on :tmi.twitch.tv NOTICE #tduvatest :This room is now in emote-only mode.
@emote-only=1;followers-only=0;r9k=0;rituals=0;room-id=41140058;slow=0;subs-only=0 :tmi.twitch.tv ROOMSTATE #tduvatest
On join:
@emote-only=1;followers-only=-1;r9k=0;rituals=0;room-id=41140058;slow=120;subs-only=0 :tmi.twitch.tv ROOMSTATE #tduvatest
So it is sending wrong information on ROOMSTATE change messages.