Ошибка AioGram 2.0: TypeError: 'NoneType' object is not subscriptable

Код должен получать с базы данных информацию о человеке и выявлять нужное сообщение. Вроде сделал все правильно, но появилась тупая ошибка.

Код:

user_id = callback.message.from_user.id
cursor.execute("SELECT subs_chanel FROM users_quests WHERE user_id = ?", (user_id,))
subs = cursor.fetchone()
count_subs = subs[0]
if count_subs == 'NO':
    if callback.message.chat.type == 'private':
        user_id = callback.from_user.id
        if await check_sub_channels(cfg.CHANNELS, callback.message.from_user.id):
            cursor.execute("UPDATE users SET earns = earns + 4 WHERE user_id = ?", (user_id,))
            cursor.execute("UPDATE users_quests SET subs_chanel = subs_chanel + 1 WHERE user_id = ?", (user_id,))
            await bot.edit_message_caption(
    chat_id=callback.message.chat.id,
    message_id=callback.message.message_id,
    caption=f'? Здравствуй! {callback.from_user.first_name}\n\n? Спасибо за вашу поддержку!\n? Вам было начислено 4 звезды.',
    reply_markup=backing)
        else:
            await bot.edit_message_caption(
    chat_id=callback.message.chat.id,
    message_id=callback.message.message_id,caption=f"? Здравствуй! {callback.from_user.first_name}\n\n? Вы не подписались на все каналы.", reply_markup=subing_channels)
elif count_subs == 'YES':
    await bot.edit_message_caption(
        chat_id=callback.message.chat.id,
        message_id=callback.message.message_id,
        caption=f"? Здравствуй! {callback.from_user.first_name}\n\n? Вы уже выполнили данное задание.",
        reply_markup=backing)
elif count_subs == 'NONE':
    await bot.send_message(callback.message.chat.id, 'Ошибка.\n\nСообщите администрации проекта.')

Ошибка:

File "C:\Users\Wizi\Desktop\bot\main.py", line 151, in back_button
count_subs = subs[0]
TypeError: 'NoneType' object is not subscriptable

Ответы (1 шт):

Автор решения: Evgenii Evstafev

Вероятно в таблице users_quests нет пользователя с искомым user_id, поэтому возвращается None; можно попробовать проверить, перед выполнением основной логики:

user_id = callback.message.from_user.id 
cursor.execute("SELECT subs_chanel FROM users_quests WHERE user_id = ?", (user_id,))
subs = cursor.fetchone() 

if subs is not None: # Проверяем, что запись для пользователя найдена
    count_subs = subs[0] # Теперь безопасно извлекаем значение
→ Ссылка