Items hinted through "!hint XYZ" (or "/hint Player XYZ" on the server, and presumably location scouting as well), which the server only responds to with a PrintJSON (and a RoomUpdate packet if hint points were consumed from the player's slot), does not trigger the TrackHints handler.
Either the hint tracker should request the _read_hints key when it spots a hint request (PrintJSON with the hint data pointing to this player), or ideally it should be reading chat messages for hints (they have the "Hint" type and an object with all the important information about it).
It should also probably fire when a hinted item is collected.
Items hinted through "!hint XYZ" (or "/hint Player XYZ" on the server, and presumably location scouting as well), which the server only responds to with a PrintJSON (and a RoomUpdate packet if hint points were consumed from the player's slot), does not trigger the TrackHints handler.
Either the hint tracker should request the _read_hints key when it spots a hint request (PrintJSON with the hint data pointing to this player), or ideally it should be reading chat messages for hints (they have the "Hint" type and an object with all the important information about it).
It should also probably fire when a hinted item is collected.