I think the problem with skipping multiple songs is right here. When one song completes, it can send :on_complete multiple times. This then causes multiple songs to skip. I'm going to experiment with adding something here to prevent that.