Задать вопрос
@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")
  • Вопрос задан
  • 124 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Используй on_conflict. Он позволяет как молча проигнорировать втавляемые данные, так и частично обновить существующую строку.
Причем достаточно конфликта по ключу (id пользователя).

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

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

Похожие вопросы