Вопрос в заголовке. При повторном подключении пользователя и запросе меню, бот выдает ошибку
"sqlite3.IntegrityError: UNIQUE constraint failed: User.user_id"
я понимаю, что надо исключить каким то образом пользователя из списка на добавление, но не могу задать верный вопрос гуглу.
import telebot
import sqlite3
from telebot import types # для указание типов
token = 'xxx'
bot = telebot.TeleBot(token)
conn = sqlite3.connect('db/db.db', check_same_thread=False)
cursor = conn.cursor()
def db_table_val(user_id: int, user_name: str, user_surname: str, username: str):
cursor.execute('INSERT INTO User (user_id, user_name, user_surname, username) VALUES (?, ?, ?, ?)', (user_id, user_name, user_surname, username))
conn.commit()
@bot.message_handler(commands=['start'])
def start(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton(" Посмотреть меню")
btn2 = types.KeyboardButton("❓ Сделать заказ")
btn3 = types.KeyboardButton("Как я работаю?")
markup.add(btn1, btn2, btn3)
bot.send_message(message.chat.id, text="Привет, {0.first_name}! Я тестовый бот для шаурмечной".format(message.from_user), reply_markup=markup)
@bot.message_handler(content_types=['text', 'photo'])
def func(message):
if(message.text == " Посмотреть меню"):
bot.send_photo(message.chat.id, open('photo.jpg', 'rb'))
us_id = message.from_user.id
us_name = message.from_user.first_name
us_sname = message.from_user.last_name
username = message.from_user.username
db_table_val(user_id=us_id, user_name=us_name, user_surname=us_sname, username=username)