@progerstas

Почему код работает только если next_free равняется 0?

Вот код:
@client.command()
async def bonus(ctx):
    cursor.execute(f"SELECT next_free FROM users WHERE id = '{ctx.message.author.id}'")
    if int(cursor.fetchone()[0]) < round(time.time()) or cursor.fetchone()[0] == 0:
        r = random.randint(150, 300)
        cursor.execute(f"SELECT coins next_free FROM users WHERE id = '{ctx.message.author.id}'")
        new_balance = r + cursor.fetchone()[0]
        cursor.execute(f"UPDATE users SET coins = {new_balance} WHERE id = '{ctx.message.author.id}'")
        conn.commit()

        t = round(time.time()) + 10800
        cursor.execute(f"UPDATE users SET next_free = {t} WHERE id = '{ctx.message.author.id}'")
        conn.commit()
        await ctx.send(f'Вы получили {r} монет!')
    else:
        await ctx.send('Вы не можете получить бонус сейчас!')


Вот ошибка:
Ignoring exception in command bonus:
Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\discord\ext\commands\core.py", line 83, in wrapped
    ret = await coro(*args, **kwargs)
  File "C:\All\Python\Bot DS\SecurityBot\main.py", line 718, in bonus
    if int(cursor.fetchone()[0]) < round(time.time()) or cursor.fetchone()[0] == 0:
TypeError: 'NoneType' object is not subscriptable

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\discord\ext\commands\bot.py", line 892, in invoke
    await ctx.command.invoke(ctx)
  File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\discord\ext\commands\core.py", line 797, in invoke
    await injected(*ctx.args, **ctx.kwargs)
  File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\discord\ext\commands\core.py", line 92, in wrapped
    raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: 'NoneType' object is not subscriptable
  • Вопрос задан
  • 143 просмотра
Пригласить эксперта
Ответы на вопрос 1
@MrCute
Студент
Может потому что проходит проверка cursor.fetchone()[0] == 0

А ошибка потому что курсор ничего не возвращает - cursor.fetchone().
И поэтому cursor.fetchone() возвращает NoneType, с которого не можно взять элемент с индексом 0.
Ответ написан
Ваш ответ на вопрос

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

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