Я делаю бота для ВК. И мне на днях пришла мысль добавить коды бета-тестеров. Суть заключается в том, что я раздаю коды определенным людям, которые будут бета-тестерами. Эти люди вписывают код в личку боту. И тут нужно создать такой код, который будет проверять то что написал пользователь, например "Код - 12345", и будет проверять наличие кода '12345' в списке, а если этот код есть в списке, то будет выводить сообщение "Вы стали бета-тестером" и удалять '12345, из списка. Получается этот самый код для бета-тестеров одноразовый. Как написать такой код?
Saddy0747, вижу написали "Я делаю бота для ВК", значит код должны уметь писать. Соответственно к своему обработчику вводимого пользователем добавить процедуру проверки/закрепления этого кода за пользователем, типа такого
CODES_FILENAME = "codes.txt"
def claim_code(code):
with open(CODES_FILENAME) as f:
codes = f.read().splitlines()
# если код есть в списке, то удаляем из списка и выполняем что еще нужно в случае успеха
if code in codes:
codes.remove(code)
with open(CODES_FILENAME, "w") as of:
of.write('\n'.join(codes))
# здесь например запуск какой-то функции для проставления бета-тестера
return True
return False
# затем при получении ввода пользователя вызывать нашу процедуру
res = claim_code('298')
print(res)
Но это простейший случай, не учитывает потенциальную возможность параллельного обращения к файлу (например, запросилась проверка одноверменно, файл прочитали в одно время, в результате один и тот же код для обоих покажется свободным). Можно использовать блокировку файла или еще что аналогичное. Или же хранить коды в базе данных.