Timer not calling the function

i have many timers in my project that i use for different things. but for some odd reason this timer will just not call my function.

void ADOP_FPS_Character::OnFire()
{
	ADOP_DM_Weapons* myWeapon = Cast<ADOP_DM_Weapons>(Weapons[ActiveWeapon]->GetChildActor());
	if (myWeapon->WeaponName == "")
	{
		return;
	}
	
		if (GetWorldTimerManager().IsTimerActive(FiringHandle)) { return; }
		if (Weapons.Num() > 0)
		{
			FTimerDelegate TimerDel = FTimerDelegate::CreateUObject(this, &ADOP_FPS_Character::FireWeapon);
			UE_LOG(LogTemp, Warning, TEXT("On Fire called"));
			GetWorldTimerManager().SetTimer(FiringHandle, TimerDel, myWeapon->FireRate, true);
// also tried 
/*GetWorldTimerManager().SetTimer(FiringHandle, this, &ADOP_FPS_Character::FireWeapon, myWeapon->FireRate, true,0);*/



		}
	
}

i have logs in the function being called which is this

void ADOP_FPS_Character::FireWeapon()
{
	UE_LOG(LogTemp, Warning, TEXT("fire weapon"));
	ADOP_DM_Weapons* myWeapon = Cast<ADOP_DM_Weapons>(Weapons[ActiveWeapon]->GetChildActor());
	CallFireWeapon(myWeapon->BurstMaxCount, myWeapon->CurrentFireModeIndex, myWeapon->Damage, myWeapon->GunFireMontage, myWeapon->ArmFireMontage);

}

but its just not being called everything works in the OnFire()even get the log but i dont get anything from the function in the timer.

yeah they are all UFUNCTION()

	UFUNCTION()
		void OnFire();
	UFUNCTION()
		void CallFireWeapon(int32 MaxBurst, int32 FireModeIndex, int32 WepDamage, class UAnimMontage* GunFire, class UAnimMontage* ArmFire);

	UFUNCTION()
		void FireWeapon();

Thats why im so stuck cause im not even getting an error. every thing compiles fine and even during play i get no logs of any kind saying its erroring out. it just seems to be ignoring it.

Check your function is a UFUNCTION() happend to me all the time with delegates

Soooooo… turns out im just dumb and for got to add the fire rate var to the weapon being added to the weapon slot. so when i was calling the timer it was seeing the timer as being set to 0, which in turn would not allow the function to be called. pure case of user error go me. #ToManyLongHoursCoding