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 см");

                    }

}

На сам мотив команды прошу не обращать внимание.
  • Вопрос задан
  • 156 просмотров
Решения вопроса 1
sHinE
@sHinE
веб-разработчик, php/js/mysql и сопутствующее
Так храните время последнего обращения юзера к боту в базе вместе с размером писюна. При поступлении команды выбирайте из базы вместе с данными и время последнего обращения. Сравниваете его с текущим и либо выводите ошибку, либо делаете что вы там хотели.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы