soul shards aura

soul shards aura must generate up to 3 soul for warlock

if soul is over 3 it’ll decrease soul shards to 3 but below 3 not work(must generate soul shard to 3)

i wrote this script but could not hook aura

it just work if i use .cast 246985 in game.

can you please help me how to hook this aura?

SPELL_WARLOCK_SOUL_SHARDS =247054,

// 246985 - Soul Shards

class spell_warl_soul_shards : public SpellScriptLoader
{
public:
spell_warl_soul_shards() : SpellScriptLoader(“spell_warl_soul_shards”) { }

class spell_warl_soul_shards_AuraScript : public AuraScript
    {
        PrepareAuraScript(spell_warl_soul_shards_AuraScript);

    bool Validate(SpellInfo const* /*spellInfo*/) override
        {
            return ValidateSpellInfo({ SPELL_WARLOCK_SOUL_SHARDS });
        }
        void HandleApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
        {
            PreventDefaultAction();
            GetCaster()->CastSpell(GetCaster(), SPELL_WARLOCK_SOUL_SHARDS, true);
            
        }
        void Register() override
        {
            OnEffectApply += AuraEffectApplyFn(spell_warl_soul_shards_AuraScript::HandleApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);           
        }
    };

AuraScript* GetAuraScript() const override
    {
        return new spell_warl_soul_shards_AuraScript();
    }
};