Фиксируешь время нажатия на кнопку.
Выбираешь из базы значение предыдущего времени по id пользотеля запросом
SELECT.
Если значения нет, человек пишет в первый раз, заносим значение времени и id пользователя в базу запросом
INSERT. Отправляем сообщение о бонусе.
Если значение есть, и разница между ним и текущим временем более 24 часов, человек может получить бонус. Обновляем значение в базе запросом
UPDATE и отправляем сообщение о бонусе.
Если значение есть, и разница менее 24 часов, отправляем сообщение с оставшимся до следующего бонуса временем.