Большинство рейтлимитов работает обчно через базу -
при отправке проверяется кол-во отправленных за последний час, если нет превышения - отправляем и инкриментим количество, если текущий час != час который в базе обнулить счетчик и записать.
также нужно решить что делать если лимит превышен (не отправлять вобще, ставить в очередь и что делать если очередь все время растет)