У меня есть тг бот, который при /start создаёт пользователю аккаунт, баланс аккаунта изначально равен нулю, но если этот же пользователь ещё раз введёт команду /start, то он опять запишется в БД, надо сделать чтобы он добавлялся только один раз в БД.
Код:
@dp.message_handler(commands=['start'])
async def start_command(message: types.Message):
us_id = message.from_user.id
us_name = message.from_user.first_name
us_last_name = message.from_user.last_name
db.db_table_val(user_id=us_id, user_name=us_name, user_last_name=us_last_name)
await bot.send_message(message.chat.id, "Добрый день!\nВас приветствует телеграмм бот по накрутке (подписки, реакции, просмотры, комментарии)\nОзнакомтесь, пожалуйста, с правилами использования бота и оплаты. ↓", reply_markup=start)
if message.from_user.id == int(ADMIN_ID):
await bot.send_message(message.chat.id, "Привет админ)", reply_markup=main_admin)
class all(StatesGroup):
all_message = State()
@dp.message_handler(text='Правила использования бота')
async def all_message(message: types.CallbackQuery):
await bot.send_message(message.chat.id, "Потом добавим")
@dp.message_handler(text='Правила оплаты')
async def all_message(message: types.CallbackQuery):
await bot.send_message(message.chat.id, "Потом добавим")
@dp.message_handler(text='Профиль')
async def all_message(message: types.CallbackQuery):
user_name = db.cur.execute('SELECT user_name FROM users WHERE user_id = ?', (message.from_user.id,)).fetchall()
for row in user_name:
us = row[0]
user_last_name = db.cur.execute('SELECT user_last_name FROM users WHERE user_id = ?', (message.from_user.id,)).fetchall()
for row in user_last_name:
us_last = row[0]
price = db.cur.execute('SELECT price FROM users WHERE user_id = ?',
(message.from_user.id,)).fetchall()
for row in price:
pr = row[0]
await bot.send_message(message.chat.id, f"Ваш профиль:\nИмя: {us} {us_last}\nБаланс: {pr}")
БД:
def db_table_val(user_id: int, user_name: str, user_last_name: str):
cur.execute('INSERT INTO users (user_id, user_name, user_last_name) VALUES (?, ?, ?)',
(user_id, user_name, user_last_name))
db.commit()