Система промокодов Telebot
Подскажите как реализовать систему использования промокодов, чтоб пользователь мог только один раз использовать промокод. У меня в голову приходит только записывать ид каждого пользователя, который ввел промокод и записывать его в базе. Но может есть более легкий способ реализации?
Ответы (3 шт):
А обязательно ли занесение промокодов в БД? Если не обязательно, то может подойдёт следующий вариант:
promocode = input() # сюда админ бота вводит промокод для пользователя
promo_in = input('Please, enter here your promocode: /n') # сюда пользователь вводит промокод
if promo_in == promocode:
del promocode # удаляет переменную с промокодом, а значит, даже если пользователь введёт его повторно, проверку на совпадение с админским вводом пройти он не сможет
Однако при использовании данного кода понадобится админская функция создания нового промокода, например, при нажатии на админскую кнопку доступную соответственно только админу.
Реализовал через текстовик. При создании промокода создавался текстовик. Когда пользователь использовал промокод, его id записывался в текстовик. Ну и при удалении промокода удаляется и текстовик
Если использовать SQLite, то можно применить такую конструкцию:
SELECT * FROM table_name q WHERE NOT EXISTS(SELECT 1 FROM table_name WHERE промо_проверяемый = q.ранее_введённый_промокод AND проверяемый_id = q.записанный_в_базе_id)
Записываете всё в базу, а этим селектом проверяете новые данные, нет ли совпадений.. если есть - не делаете дальнейшие действия.