Очень сильно может зависеть от метода генерации этого токена. Если там используется hmac с каким-то неочевидным ключом, то быстро это вряд ли можно разгадать.
Yupiter7575, никогда не надо использовать sleep в ботах, потому что это полностью останавливает работу бота на указанное время. А ещё не надо использовать time.sleep в асинхронных скриптах, потому что он блокирует event loop, вместо этого надо использовать асинхронный asyncio.sleep.
uvelichitel, поскольку я BSD не пользуюсь, а в Linux обычно есть штатная сборка, избегать использования которой мне смысла нет, я с подобными проблемами не сталкивался :) Ну собственно да, выбрать один получше (какие бы критерии этого ни были) и снести другой - разумное решение.
На heroku не гарантируется сохранность локальных файлов. В любой момент скрипт может быть перезапущен, переехать на другой сервер итд итп, при этом файлы не будут сохранены.
Для начала, надо сразу отмечать, что речь идёт о решении вопроса в сервисе Flow XO.
Далее, в этом сервисе надо изучить, можно ли к пользователю приписывать какие-то данные. Например, запросил пользователь что-то - мы записываем в переменную user_data.request_time (не знаю как там всё устроено - это просто предположение) дату запроса. При следующем запросе проверяем, что request_time+3>now. Вообще, не исключено, что это будет для этой конкретной платформы слишком сложно.
Frayl, очень зря, ув. SoreMix показал пример как раз в тему. И там очень хорошо видно, что callback на кнопках следует обрабатывать в другом типе событий.
for hello_prefix in HELLOUSER:
if hello_prefix in message.text.lower():
bot.send_message(message.chat.id, 'О, привет!')
return
bot.send_message(message.chat.id, 'Моя твоя не понимать...')