Waiting 1 frame didn’t work but after reading the other comments I decided to try waiting 2 frames and it works perfectly
func scroll_to_bottom() -> void:
for i in range(2):
await get_tree().process_frame
scroll_container.scroll_vertical = int(scroll_container.get_v_scroll_bar().max_value)