Генерация сообщения с выбранными товарами в телеграм боте
У меня есть список в котором хранятся кортежи с информацией о товаре.
cart = [
(6754, 'Футболка', '50 грн', 'XL'),
(666, 'Кроссовки Abibas', '300 грн', '39'),
(7954, 'Штаны', '40 гривень', 'XXXXXXL')
]
Количество товаров может быть разное, и я не буду его знать, поэтому нужно сгенерировать сообщение выбранные товары пользователем.
Мне нужно отправить сообщение в Телеграмм боте по команде "/cart", где и будут те самые товары. Но я не могу понять как это можно реализовать.
Сообщение должно выглядеть примерно так:

Заранее спасибо!
Ответы (3 шт):
Используйте aiogram.
Либо pyTelegramBotAPI.
Нужная для вас информация и примеры есть в документации.
Для форматирования \n и прочее используйте.
В красивом оформлении:
beautiful_message = (
'? Список товаров в корзине:'
'\n\n'
f' 1. {cart[0][1]}:\n'
f' Цена: {cart[0][2]}\n'
f' Размер: {cart[0][3]}\n'
'\n'
f' 2. {cart[1][1]}:\n'
f' Цена: {cart[1][2]}\n'
f' Размер: {cart[1][3]}\n'
'\n'
f' 3. {cart[2][1]}:\n'
f' Цена: {cart[2][2]}\n'
f' Размер: {cart[2][3]}\n'
)
Также вы можете использовать цикл, который будет генерировать это сообщение, чтобы не пришлось писать постоянно вручную.. а сделать это можно пройдясь двумя циклами, сперва по всем имеющимся товарам, после по данным в каждом из кортежей для получения информации о товаре, в итоге получаем такую карусель:
beautiful_message = ('? Список товаров в корзине:\n\n')
for product in cart:
for beauty_text in range(len(product)):
if beauty_text != 0 and beauty_text == 1:
beautiful_message += f' {cart.index(product)+1}. {product[beauty_text]}:\n'
elif beauty_text == 2:
beautiful_message += f' Цена: {product[beauty_text]}\n'
elif beauty_text == 3:
beautiful_message += f' Размер: {product[beauty_text]}\n\n'
# весь текст расположен в переменной beautiful_message
def generate(cart: tuple) -> str:
result = "? Список товаров в корзине:"
if len(cart) == 0:
result += f"\n\n{' '*8}Корзина пуста."
for index, item in enumerate(cart):
result += f"\n\n{' '*8}{index+1}. {item[1]}:\n{' '*12}Цена: {item[2]}\n{' '*12}Размер: {item[3]}"
return result
Результат работы функции, полностью готовое сообщение:
Можете сами отредактировать параметры {' '*8}, чтобы задать другой отступ (*8 это кол-во пробелов).

