@vladislavlisitsyn

Почему не выводит ошибку sqlite3?

Был код:
@client.slash_command()
async def regmoder(inter, member: disnake.Member):
    base.execute('CREATE TABLE IF NOT EXISTS {}(userid INT PRIMARY KEY, nick, pred INT, vig INT)'.format('system'))
    base.commit()
    cur.execute('INSERT INTO system (userid, nick) VALUES(?, ?)', (member.id, member.name))
    base.commit()
    await inter.send(embed=disnake.Embed(title='[INFO] Regmoder', description='Вы успешно зарегистрировали нового модератора'))

Когда в таблице имелся такой участник, выводил в консоль ошибку, что ожедаемо, т.к. userid INT PRIMARY KEY

Дописал код, чтобы выводил ошибку при написании команды:
@regmoder.error
async def regmoder_error(inter, error):
    if isinstance(error, sqlite3.IntegrityError):
        await inter.send(embed=disnake.Embed(title='[ERROR] Regmoder', description='Этот модератор уже зарегистрирован.'), ephemeral=True)

Теперь ошибка не выводится ни в консоли, ни в дискорде.

Полный код:
@client.slash_command()
async def regmoder(inter, member: disnake.Member):
    base.execute('CREATE TABLE IF NOT EXISTS {}(userid INT PRIMARY KEY, nick, pred INT, vig INT)'.format('system'))
    base.commit()
    cur.execute('INSERT INTO system (userid, nick) VALUES(?, ?)', (member.id, member.name))
    base.commit()
    await inter.send(embed=disnake.Embed(title='[INFO] Regmoder', description='Вы успешно зарегистрировали нового модератора'))


@regmoder.error
async def regmoder_error(inter, error):
    if isinstance(error, sqlite3.IntegrityError):
        await inter.send(embed=disnake.Embed(title='[ERROR] Regmoder', description='Этот модератор уже зарегистрирован.'), ephemeral=True)
  • Вопрос задан
  • 55 просмотров
Пригласить эксперта
Ответы на вопрос 1
Lapita12
@Lapita12
Тесты, тесты?
Вы забыли создать объект базы данных для выполнения операций здесь:
cur.execute('INSERT INTO system (userid, nick) VALUES(?, ?)', (member.id, member.name))


Попробуйте добавить строку кода перед этой строкой, чтобы создать объект базы данных:
base = sqlite3.connect('название_базы_данных.db')
cur = base.cursor()


Если список импорта не содержит sqlite3, добавьте его в начало файла:
import sqlite3
Также убедитесь, что вы верно указали токен бота и активировали команды. Если все еще не удается получить ошибку из базы данных, проверьте, правильно ли вы подключаетесь к базе данных, и есть ли записи в таблице «system». Возможно, вы должны сделать несколько модификаций в вашем коде, чтобы работать с ошибками правильно.
Ответ написан
Ваш ответ на вопрос

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

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