корзина в telegram bot

197
03 сентября 2021, 23:40

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

public void shavermaBurrito(final long chat_id) {
    SendMessage message = new SendMessage().setChatId(chat_id).setText(getAnswer("shaverma.burrito"));
    List<List<InlineKeyboardButton>> rowsInline = new ArrayList<>();
    List<InlineKeyboardButton> rowInline = new ArrayList<>();
    rowInline.add(new InlineKeyboardButton().setText(getAnswer("shaverma.burrito.chicken")).setCallbackData("update_msg_text"));
    rowsInline.add(rowInline);
    rowInline = new ArrayList<>();
    rowInline.add(new InlineKeyboardButton().setText(getAnswer("shaverma.burrito.beef")).setCallbackData("update_msg_text"));
    rowsInline.add(rowInline);
    rowInline = new ArrayList<>();
    rowInline.add(new InlineKeyboardButton().setText(getAnswer("shaverma.burrito.vension")).setCallbackData("update_msg_text"));
    rowsInline.add(rowInline);
    rowInline = new ArrayList<>();
    rowInline.add(new InlineKeyboardButton().setText("Корзина").setCallbackData("update_msg_text"));
    rowsInline.add(rowInline);
    markupInline.setKeyboard(rowsInline);
    message.setReplyMarkup(markupInline);
    try {
        execute(message);
    } catch (TelegramApiException e) {
        e.printStackTrace();
    }
}

В самом телеграмме это выглядит так:

Я хочу, что бы, при нажатии на кнопку например "С курицей 210 руб." товар попадал в корзину. И тут у меня затык. Как это реализовать?

Answer 1

Как вариант - использовать базы данных. Для своих проектов я использую Hibernate + MySQL.

Пример реализации корзины с помощью БД:

Логика:

Есть таблица User и есть Product. Теперь мы создаем таблицу ShoppingCart, куда будут записываться все покупки. Одна строчка ShoppingCart - это одна корзина у одного юзера. Как тогда записать список продуктов в данную строчку? С помощью ProductList! Создаем в ProductList 2 колонки, где левая часть ShoppingCart_id, а правая - Product_id.

Как добавлять продукты в таблицу?

Честно, я не знаю. Но как идея: проверяем, что существует корзина в ShoppingCart. Если есть - берем id ShoppingCart, берем id Product и записываем в ProductList. Если нету ShoppingCart - создаем новую строчку в SC и пишем нужные нам данные: user_id, address и т.д.

Что добавить в Телеграме?

Как вариант, в callBackData записывать ID продукта. При проверки callBack в onUpdateReceived(Update update) сделать if-statement

String callData = update.getCallbackQuery().getData();
if(callData.startWith("product"){
  Long id = Long.valueOf(calldata.split("&")[1]);
}

Еще один пример:

rowInline.add(new InlineKeyboardButton().setText(getAnswer("shaverma.burrito.beef")).setCallbackData("product&1"));
READ ALSO
Thread pool и ForkJoin pool

Thread pool и ForkJoin pool

Я делаю свой домашний проект и столкнулся с проблемой производительностиВ моей бд лежит около 10000 записей, в каждой записи лежит ссылка

203
Java веб стэк технологий

Java веб стэк технологий

Вроде изучаю Spring, но тем не менее никак не могу понять(и найти), реальный пример с продакшн стэком технологий, которые используют в реальных...

156
Бесконечное меню

Бесконечное меню

Здраствуйте, может кто знает, как сделать так, чтобы меню бесконечно повторялось после выполнение задания (выход с меню в 4 пункте есть)То...

345
Почему два одинаковые алгоритмы дают разный результат?

Почему два одинаковые алгоритмы дают разный результат?

Уже много раз сталкиваюсь с одной проблемойЕсть два алгоритма на Java и Python

135