manage_users.py 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. from bot import database
  2. from aiogram import types, Dispatcher
  3. from bot.functions import beauty_reg_request
  4. from bot.keyboards import user_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=user_manage_kb(f"accept:{data[0]['ID']}",
  17. f"deny:{data[0]['ID']}",
  18. f"next:0",
  19. f"prev:0",
  20. f"1/{len(data)}"))
  21. async def next_user_page(call: types.CallbackQuery):
  22. db = database.Database()
  23. data = db.sql_parse_users("select id,name,phone from user_table where approved = '0'")
  24. index = int(call.data.split(":")[1]) + 1
  25. if not data:
  26. await call.message.answer('Заявки на регистрацию отсутствуют')
  27. if index == len(data):
  28. pass
  29. else:
  30. user_id = data[index]['ID']
  31. await call.message.edit_text(beauty_reg_request(data[index]),
  32. reply_markup=user_manage_kb(f"accept:{user_id}",
  33. f"deny:{user_id}",
  34. f"next:{index}",
  35. f"prev:{index}",
  36. f"{index + 1}/{len(data)}"))
  37. async def prev_user_page(call: types.CallbackQuery):
  38. db = database.Database()
  39. data = db.sql_parse_users("select id,name,phone from user_table where approved = '0'")
  40. index = int(call.data.split(":")[1])-1
  41. if not data:
  42. await call.message.answer('Заявки на регистрацию отсутствуют')
  43. elif index < 0:
  44. pass
  45. else:
  46. user_id = data[index]['ID']
  47. await call.message.edit_text(beauty_reg_request(data[index]),
  48. reply_markup=user_manage_kb(f"accept:{user_id}",
  49. f"deny:{user_id}",
  50. f"next:{index}",
  51. f"prev:{index}",
  52. f"{index+1}/{len(data)}"))
  53. async def accept_user(call: types.CallbackQuery):
  54. db = database.Database()
  55. data = db.sql_parse_users("select id,name,phone from user_table where approved = '0'")
  56. index = int(call.message.reply_markup.inline_keyboard[1][1].text.split("/")[0])-1
  57. if len(data) == 1:
  58. user_id = data[index]['ID']
  59. db.sql_query_send(f"UPDATE booking.user_table SET approved='1' WHERE id={user_id}")
  60. await call.message.delete()
  61. await call.message.answer('Заявки на регистрацию отсутствуют')
  62. elif index == 0:
  63. user_id = data[index]['ID']
  64. db.sql_query_send(f"UPDATE booking.user_table SET approved='1' WHERE id={user_id}")
  65. await call.message.edit_text(beauty_reg_request(data[index+1]),
  66. reply_markup=user_manage_kb(f"accept:{user_id}",
  67. f"deny:{user_id}",
  68. f"next:{index + 1}",
  69. f"prev:{index + 1}",
  70. f"{index+1}/{len(data) - 1}"))
  71. elif index == len(data)-1:
  72. user_id = data[index]['ID']
  73. db.sql_query_send(f"UPDATE booking.user_table SET approved='1' WHERE id={user_id}")
  74. await call.message.edit_text(beauty_reg_request(data[index-1]),
  75. reply_markup=user_manage_kb(f"accept:{user_id}",
  76. f"deny:{user_id}",
  77. f"next:{index - 1}",
  78. f"prev:{index - 1}",
  79. f"{index}/{len(data) - 1}"))
  80. else:
  81. user_id = data[index]['ID']
  82. db.sql_query_send(f"UPDATE booking.user_table SET approved='1' WHERE id={user_id}")
  83. await call.message.edit_text(beauty_reg_request(data[index-1]),
  84. reply_markup=user_manage_kb(f"accept:{user_id}",
  85. f"deny:{user_id}",
  86. f"next:{index}",
  87. f"prev:{index - 1}",
  88. f"{index}/{len(data) - 1}"))
  89. # Регистрация команд
  90. def admin_handlers(dp: Dispatcher):
  91. dp.register_message_handler(list_users, text='👤 Управление пользователями')
  92. dp.register_callback_query_handler(next_user_page, text_startswith='next')
  93. dp.register_callback_query_handler(prev_user_page, text_startswith='prev')
  94. dp.register_callback_query_handler(accept_user, text_startswith='accept')