Создание Чат-Бот-Магазин в Телеграм с нуля. Часть первая

Продолжение: Часть 2Часть 3, Часть 4

Создание «Чат-Бот-Магазин в Телеграм» начнем с разработки технического задания, без использования каких-либо шаблонов, а так по-простому, для себя.

В первую очередь давайте определимся, что по итогу мы хотим получить. Я представляю это как каталог товаров, где пользователь может ознакомиться с карточкой товара, добавить товар в корзину, и оформить покупку, не выходя из мессенджера.

Это будет бот с минимально-необходимым набором функций, для ознакомительных целей, в дальнейшем вы сможете расширить функционал бота под ваши потребности.

Наполнение контентом будем осуществлять через сам бот, для этого нам надо будет сделать систему администрирования, также организовать права доступа в админ-чат.

Сделаем возможность добавления категорий и карточек товара. Редактирование товара и категорий делать не будем, при необходимости это можно будет доработать вне рамок статей. Добавление и редактирование информации в разделе Помощь.

Разделы бота:

  1. Личный кабинет
  2. Каталог
  3. Корзина
  4. Помощь

Теперь подробнее …

Личный кабинет.
В кабинете пользователя будут храниться личные данные необходимые для оформления покупки. Заполнение данных нужно сделать доступным как при оформлении покупки, так и просто в разделе Личного кабинета.

Данные:

  1. Имя Фамилия
  2. Телефон
  3. Адрес доставки

Каталог
Навигация по каталогу должна быть удобная и интуитивно понятная. Необходимо реализовать возможность перемещаться не только вглубь каталога, но и на шаг назад. Это также должно работать в любом другом разделе бота.

  1. Категория
    1. Карточка товара
      1. Название
      2. Картинка (1 шт, при желании можно расширить)
      3. Описание в том числе характеристики
      4. Цена
      5. Единица измерения

Корзина
Корзина покупателя позволяет сложить в нее интересующий товар и оформить покупку. В корзине обязательно должны быть инструменты по управлению:

  1. Удалить товар из корзины
  2. Просмотреть все товары в корзине
  3. Увеличить\уменьшить количество товара
  4. Оформить покупку
    1. Адрес доставки
    2. Телефон
    3. Фамилия Имя
    4. Оплата
      1. Онлайн (попробуем Яндекс.Кассу или QIWI)
      2. При получении товара
  5. Предпросмотр покупки

Помощь
В этом разделе можно разместить информацию о магазине, службе поддержки, способы обратной связи и другое.

По мере продвижения вперед, будем в ТЗ что-то или дополнять, или исключать. Код будем писать в нашем уже известном файле index.php (это файл, на который у нас настроен webHook), познакомимся с PDO 


Таблицы базы данных

Личный кабинет

  1. id – уникальный идентификатор
  2. user_id – id пользователя в Телеграм
  3. first_name – имя пользователя
  4. last_name – фамилия пользователя
  5. phone – телефон пользователя
  6. adress – адрес доставки

Каталог

  1. Категории
    1. id – уникальный идентификатор
    2. name – название каталога
  2. Карточка товара
    1. id – уникальный идентификатор
    2. parent – родительская категория
    3. name – название товара
    4. description – описание товара
    5. image_tgr – картинка товара в базе телеграм 
    6. image - картинка товара не стороннем сервере
    7. price – цена товара
    8. unit – единица измерения

Корзина

  1. id – уникальный идентификатор
  2. product_id – id товара
  3. product_count – количество товара
  4. user_id – id пользователя

Помощь

  1. description – описание раздела

Структура таблиц в формате SQL

--
-- Структура таблицы `bot_shop_basket`
--
CREATE TABLE IF NOT EXISTS `bot_shop_basket` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `product_id` int(11) NOT NULL,
  `product_count` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Структура таблицы `bot_shop_category`
--
CREATE TABLE IF NOT EXISTS `bot_shop_category` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Структура таблицы `bot_shop_help`
--
CREATE TABLE IF NOT EXISTS `bot_shop_help` (
  `description` text NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Структура таблицы `bot_shop_product`
--
CREATE TABLE IF NOT EXISTS `bot_shop_product` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `parent` int(11) NOT NULL,
  `name` varchar(200) NOT NULL,
  `description` text NOT NULL,
  `image_tlg` varchar(200) NOT NULL,
  `image` varchar(200) NOT NULL,
  `price` decimal(10,2) NOT NULL,
  `unit` varchar(10) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Структура таблицы `bot_shop_profile`
--
CREATE TABLE IF NOT EXISTS `bot_shop_profile` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `first_name` varchar(32) NOT NULL,
  `last_name` varchar(32) NOT NULL,
  `phone` varchar(15) NOT NULL,
  `adress` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Еще будет как минимум одна таблица для промежуточной записи шагов пользователя, то есть нам нужно понимать для каких целей пришла информация от пользователя, то ли это текст для редактирования фамилии, или для раздела Помощь.

Ок, на сегодня достаточно. В следующей статье мы уже перейдем сразу к практике.

 


Комментарии

Авторизуйтесь через Telegram, чтобы оставить комментарий.
Откройте бот @SiteAuthBot, нажмите кнопку Старт/Start. Следуйте инструкциям бота.


  • Очень интересно. Хочу вторую часть
    Анастасия Кудашкина 23.02.2018 в 20:50
    • Спасибо, вторая часть уже есть на сайте.
      iMakeBots 23.02.2018 в 22:37
  • Дешево и сердито
    Святой Ганж за лс бан 17.09.2019 в 18:34
  • А есть примеры этого магазина?
    W O N D E R F U L 10.05.2020 в 06:59
    • Был пример, но за давностью был удален
      iMakeBots 11.05.2020 в 18:00