Я сделал бота на aiogram который связан с БД. Но мне выдаёт ошибку:
sqlite3.IntegrityError: UNIQUE constraint failed: users.user_id
Вот код:
#Импорт
import random
import sqlite3
from collections import Counter
import tokenbot
from aiogram import Bot, Dispatcher, executor, types
from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup, callback_query
from aiogram.dispatcher.filters import Text
#Переменные и списки
bot = Bot(token=tokenbot.TOKEN, parse_mode='HTML')
dp = Dispatcher(bot=bot)
db = sqlite3.connect('db/database.db')
cursor = db.cursor()
jokes_list = ['пустил анекдот', 'пошутил', 'рассказал шутку', 'рассказал анекдот']
flowers_list = ['любовных роз', 'победных гладиолусов', 'мужественных эдельвейсов', 'ностальгических розмаринов']
tricks_list = ['', 'двойное', 'тройное', 'четвертное']
#Старт (меню)
with db:
@dp.message_handler(commands=['start'])
async def start_handler(message: types.Message):
username = message.from_user.first_name
userid = message.from_user.id
user = (userid, username)
await message.answer('Привет, я КуклоБот.')
cursor.execute(""" INSERT INTO users (user_id, user_name) VALUES(?, ?);""", user)
db.commit()
#ПРИКОЛЮХИ
@dp.message_handler(content_types="text")
async def send_hug(message: types.Message):
your_id = message.from_user.id
your_name = message.from_user.first_name
msg = message.text.lower()
if msg == 'фокус':
try:
friend_name = message.reply_to_message.from_user.first_name
friend_id = message.reply_to_message.from_user.id
await message.delete()
await message.answer(f'
{your_name} показал фокус клоуну
{friend_name}.')
except:
await message.delete()
await message.answer(f'
{your_name} показал фокус на сцене.')
if msg == 'сальто':
await message.delete()
salto = random.choices(['', 'двойное ', 'тройное ', 'четвертное '], weights=[16, 8, 4, 2])
salto_str = ' '.join(salto)
await message.answer(f'
{your_name} сделал {salto_str}сальто!')
if msg == 'шутка':
try:
friend_name = message.reply_to_message.from_user.first_name
friend_id = message.reply_to_message.from_user.id
await message.delete()
await message.answer(f'
{your_name} {random.choice(jokes_list)}, и
{friend_name} посмеялся.')
except:
await message.delete()
await message.answer(f'
{your_name} {random.choice(jokes_list)}.')
if msg == 'конфета':
try:
friend_name = message.reply_to_message.from_user.first_name
friend_id = message.reply_to_message.from_user.id
await message.delete()
await message.answer(f'
{your_name} подарил конфету
{friend_name}.')
except:
await message.delete()
await message.answer(f'
{your_name} съел конфету с фантиком.')
if msg == 'букет':
try:
friend_name = message.reply_to_message.from_user.first_name
friend_id = message.reply_to_message.from_user.id
await message.delete()
await message.answer(f'
{your_name} подарил букет {random.choice(flowers_list)} клоуну
{friend_name}.')
except:
await message.delete()
await message.answer(f'
{your_name} уронил букет с цветами на пол.')
if msg == 'правда':
try:
friend_name = message.reply_to_message.from_user.first_name
friend_id = message.reply_to_message.from_user.id
#await message.delete()
await message.reply(f'
{your_name} согласен с
{friend_name}.')
except:
await message.delete()
await message.answer(f'
{your_name} сказал "я дурачок". Это чистая правда.')
if msg == 'ложь':
try:
friend_name = message.reply_to_message.from_user.first_name
friend_id = message.reply_to_message.from_user.id
#await message.delete()
await message.reply(f'
{your_name} несогласен с
{friend_name}.')
except:
await message.delete()
await message.answer(f'
{your_name} сказал "я умный". Жаль что это не так.')
if msg[:4] == 'грим':
try:
friend_name = message.reply_to_message.from_user.first_name
friend_id = message.reply_to_message.from_user.id
await message.delete()
await message.answer(f'
{your_name} загримировал
{friend_name} под {message.text[5:]}.')
except:
await message.delete()
await message.answer(f'
{your_name} нанёс грим {message.text[5:]}.')
#Запуск
executor.start_polling(dp, skip_updates=True)