Задать вопрос
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 см");

                    }

}

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

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

Похожие вопросы
FoodSoul Калининград
от 160 000 до 250 000 ₽
BGStaff Москва
До 300 000 ₽
Greenway Global Новосибирск
от 150 000 до 250 000 ₽