Задать вопрос
@serosine

Как исправить ошибку «IndexError: list index out of range» для чат-бота телеграмм на библиотеке aiogram?

dict_data_user = await state.get_data()
    list_data_user = []
    for k, v in dict_data_user.items():
        list_data_user.append(v)
        user_id = message.from_user.id
        id_product = list_data_user[0]
        full_name = list_data_user[1]
        index_adress = list_data_user[2]
        number_phon = list_data_user[3]
        user_db.add_user(id_product=id_product, user_id=user_id, full_name=full_name,
                             index_adress=index_adress, number_phon=number_phon)
        await state.clear()


Когда бот подходит к этому моменту, то выдает ошибку либо в строке full_name либо id_product.

Помогите исправить, пробовал уже наверное всё: менял числа, менял логику проекта.
Всё безрезультатно.
  • Вопрос задан
  • 59 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
А голову включить и код по шагам пройти не пробовал?
dict_data_user = await state.get_data()
list_data_user = []  # сначала список пуст
for k, v in dict_data_user.items():  # начинаем цикл, первая итерация
    list_data_user.append(v)  # добавляем в список элемент. Длина списка равна 1.
    user_id = message.from_user.id
    id_product = list_data_user[0]  # читаем из списка элемент с индексом 0. ОК, он есть, мы его только что добавили
    full_name = list_data_user[1]  # откуда бы взяться элементу с индексом 1 в списке из одного элемента?!
    index_adress = list_data_user[2]
    number_phon = list_data_user[3]
    user_db.add_user(id_product=id_product, user_id=user_id, full_name=full_name,
                     index_adress=index_adress, number_phon=number_phon)
    await state.clear()

Тут вопрос стоит, ты вообще понимаешь, что пишешь? Ты точно имел ввиду распаковку list_data_user, а не v или ещё чего-нибудь?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы