user_id принимает значение None после вызова функции (telebot, sqlite3)
Делаю бота в телеграм через библиотеку telebot. Данная функция достает из базы данных SQL3 город проживания, который раннее выбрал пользователь в переменную city_living.
def get_city_living(user_id: int):
with sqlite3.connect('server.db') as conn:
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
user_id INTEGER PRIMARY KEY,
first_seen TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
city_living TEXT
)
''')
cursor.execute('SELECT city_living FROM users WHERE user_id = ?', (user_id,))
city = cursor.fetchone()
return city[0]
В результате вызова функции возникает ошибка
File "<string>", line 376, in
bot_message
File "<string>", line 86, in
get_city_living
TypeError: 'NoneType' object is not
subscriptable
Line 86 это последняя строка кода. Как думаете, почему у user_id значение None? Я перед вызовом функции прописывал user_id=callback.message.from_user.id.
Кстати, заметил, что если последние две строки закомментировать и добавить print(user_id), то вначале в терминале user_id выводится, а уже после вызова функции преобретает значение None (исходя из текста ошибки). Почему?
Ответы (1 шт):
Попробуйте вывести саму city и посмотреть ее содержимое. Есть вероятность что она просто пустая. И уберите запятую в строчке 84 после user_id.