@s4dd666

Как сделать актуализацию данных?

Использую Peewee
Есть следующий хендлер, при отправке команды /start, он записывает данные пользователя в БД.
Как сделать чтобы он проверял актуальность данных? Если юзер уже внесён в БД, чтобы он проверял совпадает ли user_name, first_name и last_name у пользователя с тем же telegram_in?
(get_or_update я думаю идеально бы зашло, но увы такого нет (либо я не нашёл)

@dp.message_handler(commands=['start'])
async def cmd_start(message: types.Message):
	create_or_update = User.get_or_create(
		telegram_id=message.from_user.id,
		defaults={
			'user_name': message.from_user.username,
			'first_name': message.from_user.first_name,
			'last_name': message.from_user.last_name,
			'date_time_join': message.date
		})
	
	await message.reply(f"Привет, {message.from_user.full_name}.\n")
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Используй on_conflict. Он позволяет как молча проигнорировать втавляемые данные, так и частично обновить существующую строку.
Причем достаточно конфликта по ключу (id пользователя).

Собственно, это хорошо работает, если тебе нужно просто хранить в базе всех, кто обращался к твоему боту.
Если же тебе нужна именно своя регистрация (а тут надо дважды подумать - нужна ли? может, нафиг её?), то тогда сначала проверяй вручную, прошёл ли пользователь регистрацию.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы