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

Почему вылезает ошибка tuple index out of range?

Первая часть кода работает хорошо, но после elif vigov[3] == 1: выходит ошибка
disnake.ext.commands.errors.CommandInvokeError: Command raised an exception: IndexError: tuple index out of range

Сам код:
@client.slash_command()
async def vig(inter, member: disnake.Member):
    base.execute('CREATE TABLE IF NOT EXISTS {}(userid INT PRIMARY KEY, nick, pred INT, vig INT)'.format('system'))
    base.commit()

    vigov = cur.execute('SELECT vig FROM system WHERE userid == ?',(member.id,)).fetchone()
    if vigov == None:
        cur.execute('INSERT INTO system (userid, nick) VALUES(?, ?)',(member.id,member.name))
        base.commit()
        cur.execute('UPDATE system SET vig == ? WHERE userid == ?',(1,member.id))
        base.commit()
        await inter.send(embed=disnake.Embed(title='[INFO] Vig', description='Модератор получил первый выговор'), ephemeral=True)
        await inter.channel.send(embed=disnake.Embed(title='[INFO] Vig', description=f'{inter.author.mention} установил +1 выговор модератору {member.mention}. Всего выговоров: 1/3'))

    elif vigov[3] == 1:
        cur.execute('UPDATE system SET vig == ? WHERE userid == ?',(2,member.id))
        base.commit()
        await inter.send(embed=disnake.Embed(title='[INFO] Vig', description='Модератор получил второй выговор'), ephemeral=True)
        await inter.channel.send(embed=disnake.Embed(title='[INFO] Vig', description=f'{inter.author.mention} установил +1 выговор модератору {member.mention}. Всего выговоров: 2/3'))

    elif vigov[3] == 2:
        cur.execute('UPDATE system SET vig == ? WHERE nserid == ?',(3,member.id))
        base.commit()
        await inter.send(embed=disnake.Embed(title='[INFO] Vig', description='Модератор получил третий выговор и должен быть снят/понижем'), ephemeral=True)
        await inter.channel.send(embed=disnake.Embed(title='[INFO] Vig', description=f'{inter.author.mention} установил +1 выговор модератору {member.mention}. Всего выговоров: 3/3'))


ПОЧЕМУ я же обращаюсь к 4 столбцу, а так как счёт идёт от нуля, 4-1==3
  • Вопрос задан
  • 53 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Потому что fetchone возвращает кортеж колонок выборки. Выбираете вы одну колонку - vig, соответственно, это кортеж из одного элемента. Вы же пытаетесь обратиться к 4-у, что и вызывает ошибку.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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