Вобщем, хочу сделать в боте авторизацию по Telegram ID, чтобы каждому пользователю отображалось его имя, которое он задаст.
import telebot
import sqlite3
with sqlite3.connect("data.db") as db:
cursor = db.cursor()
query = """CREATE TABLE IF NOT EXISTS users(
user_id INTEGER PRIMARY KEY,
name VARCHAR(30),
busies TEXT(500),
admin NOT NULL DEFAULT 1
)"""
cursor.executescript(query)
@bot.message_handler(commands=['start'])
def greeting_message(message):
startmsg = bot.send_message(message.chat.id, "Привет, напиши своё имя")
bot.register_next_step_handler(startmsg, busy)
def busy(message):
db = sqlite3.connect("data.db")
cursor = db.cursor()
name = None
try:
cursor.execute("INSERT INTO users(user_id,name) VALUES(?, ?);", (message.from_user.id, message.text))
cursor.execute("SELECT name FROM users WHERE user_id = ?;",(message.from_user.id,))
db.commit()
name = cursor.fetchone()
except sqlite3.Error as e:
print("Error: ", e)
bot.send_message(message.chat.id, f"Здравствуй, {name})
И проблема в этой строчке кажется
cursor.execute("SELECT name FROM users WHERE user_id = ?;",(message.from_user.id,))
SQLite после выполнения кода возвращает ошибку: UNIQUE constraint failed: users.user_id