Алан Гибизов, У меня задумка другая немного: Есть человек, который регистрирует анкету и его анкету вручную должен одобрить администратор. Представим, что после регистрации id пользователя заносится в таблицу "wholikes", а администратору приходит сообщение, что появилась новая анкета. Если анкета одна, то и циклы никакие не нужны, просто после нажатия на кнопку посмотреть выводится анкета и две кнопки: "одобрить" и "отклонить", если одобрить то пользователю присылается мол анкета одобрена и его id удаляется из wholikes, если отклонить то тоже самое только с отказом.. Но если вдруг у нас зарегистрируется два человека одновременно? Для этого и создал цикл в котором будет лежать весь тот код с двумя кнопками, только теперь у нас бот будет пробегаться по этим двух айдишникам:
(для примера код)
# пользователь регистрируется и администратору отправляется сообщение:
inline_btn_1 = InlineKeyboardButton('Посмотреть', callback_data='gol')
gol = InlineKeyboardMarkup().add(inline_btn_1)
admin = 1234567890 # id admin
await bot.send_message(admin, "появилась новая анкета для рассмотрения", reply_markup=gol)
@dp.callback_query_handler(text="gol")
async def gol(call: types.CallbackQuery):
conn = sqlite3.connect('db.db')
cur = conn.cursor()
cur.execute(
f'''SELECT wholikes FROM users WHERE user_id LIKE {call.from_user.id}''')
whl = cur.fetchone()[0]
print(whl)
how = len(whl)
print(how)
if how > 1: # тут если вдруг накопилось больше двух анкет
for i in whl:
print(i)
odobr = InlineKeyboardButton(f'Да', callback_data='yes')
otkl = InlineKeyboardButton('Нет', callback_data='nextfpr')
inline_kb_in_for = InlineKeyboardMarkup().add(odobr).add(otkl)
# тут дальше выводится анкета
await bot.send_message(call.from_user.id, f"Новая анкета, одобрить ?",
reply_markup=inline_kb_in_for)
break # тут как бы ждём ответ
else: # если накопилась только одна анкета
# мы в принципе делаем всё тоже самое, за исключением того, что не перенаправляем админа обратно в эту же функцию, а просто присылаем сообщение мол. анкеты для рассмотрения закончились..
@dp.callback_query_handler(text="yes")
async def n1(call: types.CallbackQuery):
# в случае если одобрено
await bot.send_message(i, "ваша анкета одобрена, напишите /menu")
await bot.edit_message_text(chat_id=call.from_user.id, message_id=call.message.message_id, text=хорошо, переходим к следующей анкете...)
# тут идёт процесс удаления id только что рассмотренного пользователя из "wholikes"
await gol(call) # смотрим дальше анкеты
(для примера код)