12Go usually showing most of the options, I ruled out non-flights for you.
They don’t have many packed joints right now, I guess some ferry companies are not running. You basically can take a bus (from either Southern or Morchit) or a train. Train is preferable, you can get a sleeper to Surat, short bus to Donsak and then a ferry of your choice (they are interconnected).
In fact if you look for Bangkok to Suratthani and Surattani to Samui separately, you find a lot more options, but you have to find what better for your join. Mind that trains are usually delayed.