@fokioff

Как реализовать очередь сообщений?

При написании бота столкнулся с проблемой: не могу придумать как реализовать очередь сообщений. Кратко, администратору после регистрации анкеты присылается эта самая анкета и кнопки к ней "одобрить", "отклонить". В базу данных, в отдельную строчку, записывается userid пользователя, который зарегистрировался:

cur.execute(
                f'''UPDATE users SET userid = {message.from_user.id} WHERE username = "admin"'''
)

cur.execute(
                f'''SELECT userid FROM users WHERE username = "admin"''')
userid = cur.fetchone()[0]

При нажатии одобрить из базы данных достаётся userid и бот отправляет по нему сообщение:

await bot.send_message(userid, "Ваша анкета одобрена!")


Однако, если зарегистрируется к примеру 1 человек, его userid отправится в базу, (предположим, что администратор не обработал его) а затем зарегистрируется второй человек, и соответственно его userid тоже отправится в базу, в которой заменит прошлый userid.

Получается, что если администратор не успевает, то мы уже не сможем прислать ответ первому пользователю, т.к его userid уже не будет в базе.

Как это можно решить? Буду очень благодарен!
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Храните в БД все заявки вообще, сразу заносите их. Просто добавьте булево поле «рассмотрено» и булево поле «одобрено» (по-умолчанию оба поля false). Когда админ добирается до рассмотрения заявок, он получает заявки, где «рассмотрено» == false, и после рассмотрения оно становится true, а «одобрено» либо останется false, либо станет true.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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