Как добавить базу данных в игровой бот для телеграмма

Есть простой кликер бот для телеграм, как добавить базу данных sql. То есть так чтобы количество кликов и уровень прокачки сохранялось в базу данных за конкретным пользователем, а при выводе информации брало значения из базы данных.

import telebot
from telebot import types
import sqlite3
bot=telebot.TeleBot("1837738147:AAEHDWsu8raDyF1pkwqwwBAtbOPDXdt_pEE")
chet=0
dob=1

@bot.message_handler(commands=["start"])
def priv(message):
    
    connect = sqlite3.connect('kliker.db')
    cursor = connect.cursor()
    cursor.execute("""CREATE TABLE IF NOT EXISTS login_id(
        id INTEGER
    )""")
    
    connect.commit()
    people_id=message.chat.id
    cursor.execute(f"SELECT id FROM login_id WHERE id={people_id}")
    
    user_id=[message.chat.id]
    cursor.execute("INSERT INTO login_id VALUES(?);",user_id)
    connect.commit()
    
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    item1 = types.KeyboardButton("кнопка?")
    item2 = types.KeyboardButton("информацияℹ️")
    item3 = types.KeyboardButton("прокачка?")
    markup.add(item1,item2,item3)
    
    bot.send_message(message.chat.id, 'добро пожаловать в мега кликер',reply_markup=markup)


    
@bot.message_handler(content_types=['text'])
def handler(message):
    global chet
    global dob
    if message.text == "кнопка?":
      chet+=dob
    if message.text == "информацияℹ️":
      bot.send_message(message.chat.id,"информация\nсчёт: {0}\nза клик: {1}".format(chet,dob))
    if message.text == "прокачка?":
      if chet>=10:
        dob+=1
        chet-=10
      else:
        bot.send_message(message.chat.id,"недостаточно кликов?")
if __name__=="__main__":
    bot.infinity_polling()

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

Автор решения: K_R_O_K_O_D_I_L_L_O

Это должно работать:

import telebot
from telebot import types
import sqlite3

bot = telebot.TeleBot("1734369637:AAFtguRVj0jNZuMewRQ8w-A8yD_uwjWilbo")
chet = {}
dob = {}


def get(conn):
    cursor = conn.cursor()
    cursor.execute("SELECT * from login_id")
    result = cursor.fetchall()
    return result


def insert(conn, id, score, ups):
    cursor = conn.cursor()
    cursor.execute("""CREATE TABLE IF NOT EXISTS login_id(
        id INTEGER,
        score INTEGER,
        ups INTEGER
    )""")

    conn.commit()

    user_id = [id, score, ups]
    cursor.execute("INSERT INTO login_id VALUES(?,?,?);", user_id)
    conn.commit()


@bot.message_handler(commands = ["start"])
def priv(message):
    global chet
    global dob
    conn = sqlite3.connect('kliker.db')

    try:
        data = get(conn)
        for user in data:
            if message.chat.id in user:
                data = list(user)
                chet[data[0]] = data[1]
                dob[data[0]] = data[2]
            else:
                chet[message.chat.id] = 0
                dob[message.chat.id] = 1
                id = message.chat.id
                score = 0
                ups = 1
                insert(conn, id, score, ups)

        markup = types.ReplyKeyboardMarkup(resize_keyboard = True)
        item1 = types.KeyboardButton("кнопка?")
        item2 = types.KeyboardButton("информацияℹ️")
        item3 = types.KeyboardButton("прокачка?")
        markup.add(item1, item2, item3)

        bot.send_message(message.chat.id, 'добро пожаловать в мега кликер', reply_markup = markup)

    except:
        print("[info] table is not exists")
        chet[message.chat.id] = 0
        dob[message.chat.id] = 1
        id = message.chat.id
        score = 0
        ups = 1
        insert(conn, id, score, ups)


@bot.message_handler(commands = ["save"])
def save(message):
    conn = sqlite3.connect('kliker.db')
    insert(conn, message.chat.id, chet.get(message.chat.id), dob.get(message.chat.id))


@bot.message_handler(content_types = ['text'])
def handler(message):
    global chet
    global dob
    print(chet, dob)
    if message.text == "кнопка?":
        chet[message.chat.id] = chet.get(message.chat.id) + dob.get(message.chat.id)
    if message.text == "информацияℹ️":
        bot.send_message(message.chat.id,
                         f"информация\nсчёт: {chet.get(message.chat.id)}\nза клик: {dob.get(message.chat.id)}")
    if message.text == "прокачка?":
        if chet.get(message.chat.id) >= 10:
            dob[message.chat.id] = dob.get(message.chat.id) + 1
            chet[message.chat.id] = chet.get(message.chat.id) - 10
        else:
            bot.send_message(message.chat.id, "недостаточно кликов?")


if __name__ == "__main__":
    bot.infinity_polling()

Правда, после перезапуска бота надо писать /start, но думаю вам это поможет.

→ Ссылка