Не обновляется данные в Базе Данный sqilite3
Делаю телеграмм бота на aiogram 3
. Пытаюсь сделать реферальную систему.
Вроде всё подключается, но я не могу обновить кол-во tixets
в базе данных:
import sqlite3
class Database:
def __init__(self, db_file):
self.connection = sqlite3.connect(db_file)
self.cursor = self.connection.cursor()
def user_exist(self, user_id):
with self.connection:
result = self.cursor.execute("SELECT * FROM 'users' WHERE 'user_id' = ?", (user_id,)).fetchall()
return bool(len(result))
def add_user(self, user_id, referrer_id=None, tixets=None):
with self.connection:
if referrer_id != None:
return self.cursor.execute("INSERT INTO 'users' ('user_id', 'referrer_id', 'tixets') VALUES (?, ?)", (user_id, referrer_id,))
else:
return self.cursor.execute("INSERT INTO 'users' ('user_id') VALUES (?)", (user_id,))
def count_reeferals(self, user_id):
with self.connection:
return self.cursor.execute("SELECT COUNT(id) as count FROM users WHERE referrer_id= ?", (user_id,)).fetchone()[0]
def count_tixets(self, user_id):
with self.connection:
return self.cursor.execute("UPDATE users SET tixets = (tixets + ?) WHERE user_id=?"), (1, user_id,)
Вот код для бота:
import config as cfg
import markups as nav
from db import Database
from aiogram import Bot, Dispatcher, types, F
from aiogram.types.web_app_info import WebAppInfo
from aiogram.filters.command import Command, CommandStart, CommandObject
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton, Message
from aiogram.utils.keyboard import InlineKeyboardBuilder
bot = Bot(token=cfg.TOKEN)
dp = Dispatcher()
db = Database('database.db')
logging.basicConfig(level=logging.INFO)
@dp.message(CommandStart())
async def StartOpenProgramm(message: Message):
if not db.user_exist(message.from_user.id):
start_command = message.text
referrer_id = str(start_command[7:])
if str(referrer_id) != "":
if str(referrer_id) != str(message.from_user.id):
db.add_user(message.from_user.id, referrer_id)
db.count_tixets(referrer_id)
try:
await message.answer(referrer_id, 'По вашей ссылке зарегистрировался новый пользователь!')
except:
pass
else:
await message.answer(f'Нельзя регистрироваться по собственной реферальной ссылке!')
else:
db.add_user(message.from_user.id)
await message.answer(f'Добро пожаловать {message.from_user.first_name}',
reply_markup=nav.mainMenu())
Не появляется кол-во tixets
:
Ответы (1 шт):
Автор решения: Gosha Pavlenko
→ Ссылка
У вас, кажется, возникла путаница со скобками.
Вот как у вас:
return self.cursor.execute("UPDATE users SET tixets = (tixets + ?) WHERE user_id=?"), (1, user_id,)
А вот как надо:
return self.cursor.execute("UPDATE users SET tixets = (tixets + ?) WHERE user_id=?", (1, user_id))