Просто скопируй код, который тебя интересует, то что ты написал - это тупо отправка сообщений в чат, по ним не понять, чего ты хочешь от GetSpellCooldown, какие аргументы ты него суешь.
А так вообще по скопированному проблема скорее всего в том, как часто ты вызываешь свою функцию, по какому-то ивенту, или просто на постоянной основе - конечно будет спамить.
А еще ты не понял, что такое enabled, но уже гонишь на сервер :)
Таймер основывается на GetTime(), start и duration.
start - he time when the cooldown started (as returned by GetTime()); zero if no cooldown; current time if (enabled == 0).
Например ты использовал паловский стан через секунду после полуночи, и start = 1
duration - Cooldown duration in seconds, 0 if spell is ready to be cast.
Кд паловского стана 40 секунд
GetTime() - текущее время
Ты запустил свою функцию в 0часов 0минут 21 секунд:
start = 1
duration = 40
GetTime() = 21
А дальше идут проверки в if / ilseif / else и выводится подходящее сообщение.
cooling down, wait (start + duration - GetTime()) seconds for the next one.
В аддонах все по похожему сценарию, но со своими параметрами и часто со своими функциями. Но сравнение времени есть всегда, там и ищи.