Задать вопрос
Treimox
@Treimox

Как сделать задержку на команду в боте ВКонтакте?

Создал бота на основе Callback API, основу для кода брал с этого сайта - тут
Не совсем понимаю того, как нужно создавать задержку для команды. Можете пожалуйста объяснить - как создать эту самую задержку? Хочу сделать примерную конструкцию задержки -

- Пользователь вводит команду (если впервые), бот ему отвечает тот код, который я ввёл.
После должно пройти 24 часа, то есть сутки.
- Если пользователь вводит команду раньше, чем за сутки, то ему выводится сообщение о том, что команда уже использовалась.

Сам код команды -
else if ($message == '/писюн') {

    
    $userInfo = $vk->request("users.get", ["user_ids" => $vk_id]);
    $first_name = $userInfo[0]['first_name']; // Имя пользователя
    $last_name = $userInfo[0]['last_name']; // Фамилия пользователя
    
    $sm = dbquery("SELECT * FROM usrazmer WHERE vk_id = $vk_id")->fetch();
    
    $raz = (mt_rand(1, 15));
    
    if (dbquery("SELECT vk_id FROM usrazmer WHERE vk_id = $vk_id")->fetchAll(PDO::FETCH_ASSOC)) {
                    $otv = 1;
                }
                     if ($otv) {
                        switch (mt_rand(0, 1)) {
                        
                        case 0: $vk->sendMessage($peer_id, "❓@id$vk_id($first_name $last_name)  твій пісюн виріс на $raz см. Тепер його довжина " . $sm['razmer'] . " см"); break; {
                             
                            $sm = dbquery("SELECT * FROM usrazmer WHERE vk_id = $vk_id")->fetch();
                             
                            for ($i = $sm['razmer']; $i < $raz; $i++);
                                $db->query("UPDATE usrazmer SET razmer WHERE razmer = $i");
                        }
                        case 1: $vk->sendMessage($peer_id, "❓@id$vk_id($first_name $last_name)  твій пісюн зменшився на $raz см. Тепер його довжина " . $sm['razmer'] ." см"); break;
                        };
                    } else {
                 
                $db->query("INSERT INTO usrazmer (vk_id, razmer) VALUES ($vk_id, $raz)");
               
                $vk->sendMessage($peer_id, "❓@id$vk_id($first_name $last_name) вітаю в грі писюн, ти зіграв в перший раз і зараз твій пісюн має довжину $raz см");

                    }

}

На сам мотив команды прошу не обращать внимание.
  • Вопрос задан
  • 164 просмотра
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
sHinE
@sHinE
веб-разработчик, php/js/mysql и сопутствующее
Так храните время последнего обращения юзера к боту в базе вместе с размером писюна. При поступлении команды выбирайте из базы вместе с данными и время последнего обращения. Сравниваете его с текущим и либо выводите ошибку, либо делаете что вы там хотели.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽