- user_id (integer) | Items (text) | amount_items (integer), в общем,я хочу сделать так:
Если у человека более 1 предмета(слова) в графе Items, в команде /inv отображается не 1 предмет в 1 строке,а 2 предмета на 1 строку, только я не знаю как это реализовать :(
Хендлер инвентаря:
@dp.message_handler(commands=['inv'])
async def handle_inv_command(message: types.Message):
# Запрос данных из базы данных для текущего пользователя
user_id = message.from_user.id
cursor.execute("SELECT Items, amount_items FROM Generation WHERE User_id=?", (user_id,))
inventory = cursor.fetchall()
if not inventory:
await message.reply("Ваш инвентарь пуст.")
return
# Форматирование и отправка данных инвентаря
inventory_text = "Инвентарь:\n"
for item, amount in inventory:
inventory_text += f"{item}<b>{amount}</b>\n"
await message.reply(inventory_text, parse_mode='HTML')
Также могу скинуть полный код через dpaste, чтобы было понятнее
Я правильно понимаю, что вопрос в том, как изменить стрчку for item, amount in inventory: inventory_text += f"{item}<b>{amount}</b>\n" , чтобы перенос строки был не на каждый предмет, а на каждые 2? А как ты добился скриншота ниже, где такое уже сделано?
Это не мой бот,я лишь знаю,что этот бот также на aiogram
Тут аиограм ни при чем тогда, просто поменять цикл вывода
я вот так сделал for pair in zip(inventory[::2], inventory[1::2]): for item, amount in pair: inventory_text += f"{item}<b>{amount}</b>" inventory_text += "\n"
я вот так сделал, мб можно короче for i in range(0, len(inventory), 2): pair = inventory[i: i+2] for item, amount in pair: inventory_text += f"{item}<b>{amount}</b>" inventory_text += "\n"
О, спасибо, чуток позже буду тестить, когда решу проблему,почему у меня не работает код из учебника
Обсуждают сегодня