Пишет None, даже когда в таблице написано значение: SQLite, Python
Пишу своего бота в Telegram и сейчас делаю выбор языка пользователя при первом запуске. Переводы хранятся в файлах .json. По факту, в таблице изменения обновляются, но при этом в консоль всё равно выводит None, соответственно мое условие не выполняется и бот снова присылает сообщение с выбором языка.
# Обновление элемента в таблице по кнопке
@bot.callback_query_handler(func=lambda callback: True)
def callback_message(callback):
global messages, file
db = sqlite3.connect('users.db')
cursor = db.cursor()
if callback.data == 'EN':
file = open("en.json", "r", encoding="utf-8")
messages = json.load(file)
cursor.execute(f"""UPDATE options SET language = 'en' WHERE id = {callback.message.chat.id}""")
db.commit()
start(callback.message)
# Команда /start
@bot.message_handler(commands=['start'])
def start(message):
db = sqlite3.connect('users.db')
cursor = db.cursor()
cursor.execute("""CREATE TABLE IF NOT EXISTS options(
id integer UNIQUE,
language text,
game text,
timer integer DEFAULT 10,
percents integer DEFAULT 1
)""")
cursor.execute(f"""SELECT id FROM options WHERE id = {message.chat.id}""")
data = cursor.fetchone()
if data is None:
cursor.execute(f"""INSERT INTO options (id) VALUES ({message.chat.id})""")
db.commit()
cursor.execute(f"""SELECT language FROM options WHERE id = {message.chat.id}""")
cursor.fetchone()
db.commit()
print(cursor.fetchone())
if cursor.fetchone() is None:
markup = types.InlineKeyboardMarkup()
rus = types.InlineKeyboardButton('?? English', callback_data='EN')
eng = types.InlineKeyboardButton('?? Русский', callback_data='RU')
markup.row(rus, eng)
bot.send_message(message.chat.id, "?? Choose a language\n?? Выберите язык", reply_markup=markup)
elif cursor.fetchone() == 'en': #еще пробовал '(en,)' как обычно выводится в консоль
bot.send_message(message.chat.id, messages['Main'], parse_mode='HTML', reply_markup=main_mark())