ghqstlysoul
@ghqstlysoul
Discord: ghqstlysoul

Как исправить ошибку sqlite3.OperationalError: near "=": syntax error?

Код выдаёт варн через команду /warn и заносит в БД, но высылает ошибку на команде /unwarn, помогите.

@bot.event
async def on_ready():
    print('Бот готов к работе')
    bot.db = await aiosqlite.connect('warning.db')
    await asyncio.sleep(3)
    async with bot.db.cursor() as cursor:
        await cursor.execute("CREATE TABLE IF NOT EXISTS warns(user INTEGER, reason TEXT, time INTEGER, guild INTEGER)")
    await bot.db.commit()

async def addwarn(ctx, reason, user):
    async with bot.db.cursor() as cursor:
        await cursor.execute("INSERT INTO warns (user, reason, timik, guild) VALUES (?, ?, ?, ?)", (user.id, reason, int(datetime.datetime.now().timestamp()), ctx.guild.id))
    await bot.db.commit()
    
@bot.slash_command(description="Выдача варна")
@commands.has_any_role(1011771434185535518)
async def warn(ctx, user: disnake.Member, *, reason: str = "Причина не указана"):
    await addwarn(ctx, reason, user)
    await ctx.send(f"Вы выдали предупреждение пользователю <@{user.id}> по причине {reason}")

@bot.slash_command(description="Забрать варн")
@commands.has_any_role(1011771434185535518)
async def unwarn(ctx, user: disnake.Member):
    async with bot.db.cursor() as cursor:
        await cursor.execute('SELECT reason FROM warns user = ? AND guild = ?', (user.id, ctx.guild.id))
        data = await cursor.fetchone()
        if data:
            await cursor.execute('DELETE FROM warns WHERE user = ? AND guild = ?', (user.id, ctx.guild.id))
            await ctx.send(f"Вы забрали предупреждение у пользователя <@{user.id}>")
        else:
            await ctx.send(f"Предупреждения у пользователя <@{user.id}> не были найдены.")
  • Вопрос задан
  • 48 просмотров
Пригласить эксперта
Ответы на вопрос 1
@EgorKh1
7 строчка с конца
не написано WHERE
await cursor.execute('SELECT reason FROM warns WHERE user = ? AND guild = ?', (user.id, ctx.guild.id))
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы