manage_users.py 4.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. from bot import database
  2. from aiogram import types, Dispatcher
  3. from bot.functions import beauty_reg_request
  4. from bot.keyboards import manage_kb, register_kb
  5. async def list_users(message: types.Message):
  6. db = database.Database()
  7. if not db.sql_fetchone(sql=f"select tg_id from user_table where tg_id ={message.from_user.id}") or \
  8. not db.sql_fetchone(sql=f"select approved from user_table where tg_id={message.from_user.id}"):
  9. await message.delete()
  10. await message.answer("Команды станут доступны после регистрации", reply_markup=register_kb)
  11. if not db.sql_parse_users("select id,name,phone from user_table where approved = '0'"):
  12. await message.answer('Заявки на регистрацию отсутствуют')
  13. else:
  14. data = db.sql_parse_users("select id,name,phone from user_table where approved = '0'")
  15. await message.answer(beauty_reg_request(data[0]),
  16. reply_markup=manage_kb(f"u_accept:{data[0]['ID']}", f"u_deny:{data[0]['ID']}", f"u_next:0",
  17. f"u_prev:0", f"1/{len(data)}"))
  18. async def next_user_page(call: types.CallbackQuery):
  19. db = database.Database()
  20. data = db.sql_parse_users("select id,name,phone from user_table where approved = '0'")
  21. index = int(call.data.split(":")[1]) + 1
  22. if not data:
  23. await call.message.answer('Заявки на регистрацию отсутствуют')
  24. if index == len(data):
  25. pass
  26. else:
  27. user_id = data[index]['ID']
  28. await call.message.edit_text(beauty_reg_request(data[index]),
  29. reply_markup=manage_kb(f"u_accept:{user_id}", f"u_deny:{user_id}", f"u_next:{index}",
  30. f"u_prev:{index}", f"{index + 1}/{len(data)}"))
  31. async def prev_user_page(call: types.CallbackQuery):
  32. db = database.Database()
  33. data = db.sql_parse_users("select id,name,phone from user_table where approved = '0'")
  34. index = int(call.data.split(":")[1])-1
  35. if not data:
  36. await call.message.answer('Заявки на регистрацию отсутствуют')
  37. elif index < 0:
  38. pass
  39. else:
  40. user_id = data[index]['ID']
  41. await call.message.edit_text(beauty_reg_request(data[index]),
  42. reply_markup=manage_kb(f"u_accept:{user_id}", f"u_deny:{user_id}", f"u_next:{index}",
  43. f"u_prev:{index}", f"{index + 1}/{len(data)}"))
  44. async def accept_user(call: types.CallbackQuery):
  45. db = database.Database()
  46. data = db.sql_parse_users("select id,name,phone from user_table where approved = '0'")
  47. index = int(call.message.reply_markup.inline_keyboard[1][1].text.split("/")[0])-1
  48. if len(data) == 1:
  49. user_id = data[index]['ID']
  50. db.sql_query_send(f"UPDATE booking.user_table SET approved='1' WHERE id={user_id}")
  51. await call.message.delete()
  52. await call.message.answer('Заявки на регистрацию отсутствуют')
  53. elif index == 0:
  54. user_id = data[index]['ID']
  55. db.sql_query_send(f"UPDATE booking.user_table SET approved='1' WHERE id={user_id}")
  56. await call.message.edit_text(beauty_reg_request(data[index+1]),
  57. reply_markup=manage_kb(f"u_accept:{user_id}", f"u_deny:{user_id}", f"u_next:{index + 1}",
  58. f"u_prev:{index + 1}", f"{index + 1}/{len(data) - 1}"))
  59. elif index == len(data)-1:
  60. user_id = data[index]['ID']
  61. db.sql_query_send(f"UPDATE booking.user_table SET approved='1' WHERE id={user_id}")
  62. await call.message.edit_text(beauty_reg_request(data[index-1]),
  63. reply_markup=manage_kb(f"u_accept:{user_id}", f"u_deny:{user_id}", f"u_next:{index - 1}",
  64. f"u_prev:{index - 1}", f"{index}/{len(data) - 1}"))
  65. else:
  66. user_id = data[index]['ID']
  67. db.sql_query_send(f"UPDATE booking.user_table SET approved='1' WHERE id={user_id}")
  68. await call.message.edit_text(beauty_reg_request(data[index-1]),
  69. reply_markup=manage_kb(f"u_accept:{user_id}", f"u_deny:{user_id}", f"u_next:{index}",
  70. f"u_prev:{index}", f"{index}/{len(data) - 1}"))
  71. # Регистрация команд
  72. def admin_handlers(dp: Dispatcher):
  73. dp.register_message_handler(list_users, text='👤 Управление пользователями')
  74. dp.register_callback_query_handler(next_user_page, text_startswith='u_next')
  75. dp.register_callback_query_handler(prev_user_page, text_startswith='u_prev')
  76. dp.register_callback_query_handler(accept_user, text_startswith='u_accept')