← Вернуться к списку тем

Чат-Бот-Магазин закрытие заказа

Здраствуйте есть небольшой вопрос по вашему боту
как админ может закрыть заказ после его доставки ?
https://imakebots.ru/article/sozdanie-chat-bot-magazin-v-telegram-s-nulya-chast-tretya
Буду очень благодарен за помощь ?

Ответы


  • IGNORGTO [26.12.2020 в 18:47 → IGNORGTO]
    Вопрос решил небольшим костылём
    
                $orderCount = $this->pdo->prepare("SELECT * FROM bot_shop_order " . $dop_user_id);
                $orderCount->execute($dop_user_arr);
                $count = $orderCount->rowCount();
                // проверяем на количество
                if ($count >= 0) {
                    $prev = ($begin == 0) ? $count - 1 : $begin - 1;
                    $next = ($count == $begin   1) ? 0 : $begin   1;
                    // выводим навигацию
                    $buttons[] = [
                        $this->buildInlineKeyBoardButton('>', 'orderGo_' . $next . '_' . $user_id),
                    ];
                }
            } else {
                $text = "Нет заказов для отображения /start";
                $buttons = "";
            }
            // возвращаем данные
            return [
                'text' => $text,
                'buttons' => $buttons,
            ];
        }
        private function orderDel($data)
        {
            $param = explode("_", $data['data']);
            if (!$param[2]) {
                $user_id = $this->admin;
            } else {
                $user_id = $this->getChatId($data);
            }
            $id = $param[1];
            $rt = "DELETE FROM 'bot_shop_order' WHERE 'bot_shop_order'.'id' = '$id'";
            $re = $this->pdo->prepare($rt);
            if($re->execute()){
                $mess =  "Заказ № $id удален";
            }else{
                $mess = "Произошла ошибка при удалении";
            }
    
            $array = $this->drawOrder($param[2], $param[1]);
            // готовим для отправки
            $data_send = [
                'chat_id' => $user_id,
                'message_id' => $data['message']['message_id'],
                'text' => $mess,
                'parse_mode' => 'html',
            ];
            // если есть кнопки то добавляем
            if (is_array($array['buttons'])) {
                $data_send['reply_markup'] = $this->buildInlineKeyBoard($array['buttons']);
            }
            // отправляем данные
            $this->botApiQuery("editMessageText", $data_send);
            $this->notice($data['id']);
        }
    
  • IGNORGTO [26.12.2020 в 18:48 → IGNORGTO]
    Осталась только проблема с тем что картинка не выводится
  • IGNORGTO [28.12.2020 в 17:24 → IGNORGTO]
    Вопрос решён
    [code]
    private function prepareProduct($id, $type = "")
    {
    $product = $this->pdo->prepare("SELECT * FROM bot_shop_product" . $type . " WHERE id = :id");
    $product->execute(['id' => $id]);
    if ($product->rowCount() === 0) {
    return false;
    } else {
    $item = $product->fetch();
    // создаем переменную для складирования текста
    $text = "";
    // данные картикни
    if (empty($item['image'])) {
    $image = "Не загружена";
    } else {
    // получаем путь относительно домена
    $path = $_SERVER['PHP_SELF'];
    // получаем вхождение последнего слеша
    $path_len = mb_strripos($_SERVER['PHP_SELF'], "/");
    // отрезаем имя файла - получаем путь до текущей директории
    $path_new = mb_strcut($path, 0, $path_len 1);
    if(!$path){
    $path_new = '/'.mb_strcut($path, 0, $path_len 1);
    }

    $image = "";
    $text .= "