TeleBot. Помогите пожалуйста, как сделать чтоб данные не путались?

Предположим одновременно 2 пользователя решили создать некий тест, они заполняют вопрос, ответ, название, после либо добавляют фото либо нет, и тут у меня возникла проблема что у 1 пользователя могли оказаться данные 2 пользователя и куча других проблем, пожалуйста помогите сделать код правильным

from telebot import types 
import sqlite3 
import os

def add_test(bot): 
    @bot.message_handler(commands=["add_test"]) 
    def register_add_test_1(message): 
    sel = bot.send_message(message.chat.id, "Введите вопрос:") 
    bot.register_next_step_handler(sel, register_add_test_2)

def register_add_test_2(message):
    user_text_question_test = message.text
    sel = bot.send_message(message.chat.id, "Введите ответ:")
    bot.register_next_step_handler(sel, register_add_test_3, user_text_question_test)


def register_add_test_3(message, user_text_question_test):
    user_text_answer_test = message.text
    sel = bot.send_message(message.chat.id, "Введите название:")
    bot.register_next_step_handler(sel, s_test1, user_text_question_test, user_text_answer_test)


def s_test1(message, user_text_question_test, user_text_answer_test):
    chat_id = message.chat.id
    user_text_title_test = message.text 
    split_text_test = [user_text_question_test, user_text_answer_test, user_text_title_test]
    print(split_text_test)
    markup = types.InlineKeyboardMarkup()
    buttonYES = types.InlineKeyboardButton(text='Да', callback_data=f"{chat_id}/Yes/")
    buttonNO = types.InlineKeyboardButton(text='Нет', callback_data=f"{chat_id}/No/")
    markup.add(buttonYES, buttonNO)
    bot.send_message(message.chat.id, "Добавить фото:", reply_markup=markup)
    calldata(split_text_test)


def calldata(split_text_test):
    @bot.callback_query_handler(func=lambda call: call.data.startswith(f'{call.message.chat.id}/No/'))
    def saveNO(call):
        chat_id = call.message.chat.id


        try: 
            bot.send_message(chat_id, "Добавлено!")
            with sqlite3.connect('tests.db') as con:
                cur = con.cursor()
                cur.execute(f"INSERT INTO '{chat_id}' (vop,otv,name) VALUES('{split_text_test[0]}','{split_text_test[1]}','{split_text_test[2]}')")
        except sqlite3.OperationalError:
            bot.send_message(chat_id, "Вы не прошли регестрацию! Ее можно пройти здесь: /start") 
            return
        except IndexError:
            bot.send_message(chat_id, "Вы не верно ввели данные!")
            return
            
    @bot.callback_query_handler(func=lambda call: call.data.startswith(f'{call.message.chat.id}/Yes/'))
    def saveYES(call):     
        chat_id = call.message.chat.id
        split_text_test = call.data.split("/")
        photo_register = bot.send_message(chat_id, "Ваше фото:")
        bot.register_next_step_handler(photo_register, photo_id, split_text_test)


    def photo_id(message, split_text_test):
        chat_id = message.chat.id
        fileID = message.photo[-1].file_id   
        file_info = bot.get_file(fileID)
        downloaded_file = bot.download_file(file_info.file_path)
        with open(f"{chat_id}.jpg", 'wb') as new_file:
            new_file.write(downloaded_file)
        with open(f"{chat_id}.jpg", "rb") as photo:
            photo_read = photo.read()
        with sqlite3.connect('tests.db') as con:
            cur = con.cursor()
            po = f'''INSERT INTO '{chat_id}' (vop,otv,name,photo) VALUES (?, ?, ?, ?)'''
            cur.execute(po,(f'{split_text_test[0]}',f'{split_text_test[1]}',f'{split_text_test[2]}', photo_read,))
            bot.send_message(message.chat.id, "Добавлено!")
            os.remove(f"{chat_id}.jpg") 

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