They are both right. English has more formal and less formal words. Temperamental sounds more formal than moody. But moody usually implies that a person is often sulky, sad, grumpy, and generally unhappy. Temperamental simply means that a person changes often between happy, sad, angry, etc.