She should dispute it with her credit card.
Yes. She should make much of the fact that Carnival sold her room, thus not encurring a full loss. Why should Carnival get paid twice for the same cabin? She should negotiate to pay only what they actually lost.
(Hmm — I wonder if whoever ended up with the cabin is the one who cancelled her reservation, then bought it at a last minute discount.)
That said, an idiot who posts their booking number, etc. on Facebook doesn’t get full sympathy.
No way will the credit card company help her. Whoever it was that got the number from her negligence and cancelled did so days before the cruise. That’s standard for all cruises to not refund 15 days prior to cruise. Now maybe she had insurance on the cruise and could go through the ship’s insurance company.