Ошибка 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] # Теперь безопасно извлекаем значение