Здравствуйте, уже несколько дней ломаю голову как сделать меню для игрового бота .
Смысл в том что хочу сделать магазин и в нём вещи которые выбираються по категориям. Всего вещей около 1000.
я пытался реализовать путём добавления каждого предмета в Бд, но идея оказалась провальной.
В идеале Я хотел сделать что бы если игрок купил предмет он изчез в категории (инлайн кнопка пропала) а так же возможность добавить предмет в избранное, что после этого инлайн кнопка появилась в отдельном меню "Избранное"
Важно! я не прошу готовый код. Я прошу дать идею или статью которая поможет реализовать мою задумка. Заранее спасибо
Да, сообщение с инлайн-кнопками можно редактировать, убирая в них лишнее или добавляя что-то новое, заменяя кнопки некоторого уровня вложенности кнопками следующего уровня, итд итп. Но можно и новые сообщения отправлять. Можно посмотреть как это реализовано в моём боте https://t.me/glagolitic_bot .
Василий Банников, ну у меня была схема такая что я выводил в бд к примеру
предмет1 : 1
предмет2 : 0
где 0 это не куплено а 1 куплено
и как сделать что бы если 1 инлайн кнопка убиралась у меня предстовлений нет. а за добавление в избранное так тем более
Frik44, при любой отправке или редактировании сообщения изменённая клавиатура всегда отправляется целиком заново, нельзя отправить только изменившиеся части. Поэтому надо хранить у себя в базе/FSM-контексте/in-memory-хранилище/ещё-где-то исходные данные, на основе которых можно составить клавиатуру, и формировать их каждый раз заново.
Например, если мы хотим выдавать все элементы корзины, то храним список товаров с их количеством, и выдаём строчками кнопки: "минус", "текущее количество", "плюс". Минус и плюс изменяют текущее количество, по средней кнопке можно отправлять новым сообщением или редактированием текущего с добавленной кнопокой "назад в корзину" показывать описание этого товара.
Тут много можно навертеть, сделать весьма изощрённо и красиво. Конечно, ограничения Телеграма всё равно никуда не денутся (например, на максимальное количество инлайн-кнопок - придётся придумывать способ постраничного вывода корзины...), это недостаток, но как бы трудно ожидать от готовой платформы такой же гибкости, как от собственного приложения.