manage_users.py 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  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. from bot.dispatcher import bot
  6. async def list_users(message: types.Message):
  7. db = database.Database()
  8. if not db.sql_fetchone(sql=f"select tg_id from user_table where tg_id ={message.from_user.id}") or \
  9. not db.sql_fetchone(sql=f"select approved from user_table where tg_id={message.from_user.id}"):
  10. await message.delete()
  11. await message.answer("Команды станут доступны после регистрации", reply_markup=register_kb)
  12. if not db.sql_parse_users("select id,name,tg_id,phone from user_table where approved = '0'"):
  13. await message.answer('Заявки на регистрацию отсутствуют')
  14. else:
  15. data = db.sql_parse_users("select id,name,tg_id,phone from user_table where approved = '0'")
  16. await message.answer(beauty_reg_request(data[0]),
  17. reply_markup=manage_kb(f"u_accept:{data[0]['ID']}", f"u_deny:{data[0]['ID']}", f"u_next:0",
  18. f"u_prev:0", f"1/{len(data)}"))
  19. async def next_user_page(call: types.CallbackQuery):
  20. db = database.Database()
  21. data = db.sql_parse_users("select id,name,phone from user_table where approved = '0'")
  22. index = int(call.data.split(":")[1]) + 1
  23. if not data:
  24. await call.message.answer('Заявки на регистрацию отсутствуют')
  25. if index == len(data):
  26. pass
  27. else:
  28. user_id = data[index]['ID']
  29. await call.message.edit_text(beauty_reg_request(data[index]),
  30. reply_markup=manage_kb(f"u_accept:{user_id}", f"u_deny:{user_id}", f"u_next:{index}",
  31. f"u_prev:{index}", f"{index + 1}/{len(data)}"))
  32. async def prev_user_page(call: types.CallbackQuery):
  33. db = database.Database()
  34. data = db.sql_parse_users("select id,name,phone from user_table where approved = '0'")
  35. index = int(call.data.split(":")[1])-1
  36. if not data:
  37. await call.message.answer('Заявки на регистрацию отсутствуют')
  38. elif index < 0:
  39. pass
  40. else:
  41. user_id = data[index]['ID']
  42. await call.message.edit_text(beauty_reg_request(data[index]),
  43. reply_markup=manage_kb(f"u_accept:{user_id}", f"u_deny:{user_id}", f"u_next:{index}",
  44. f"u_prev:{index}", f"{index + 1}/{len(data)}"))
  45. async def accept_user(call: types.CallbackQuery):
  46. db = database.Database()
  47. data = db.sql_parse_users("select id,name,phone,tg_id from user_table where approved = '0'")
  48. index = int(call.message.reply_markup.inline_keyboard[1][1].text.split("/")[0])-1
  49. if len(data) == 1:
  50. user_id = data[index]['ID']
  51. db.sql_query_send(f"UPDATE booking.user_table SET approved='1' WHERE id={user_id}")
  52. await call.message.delete()
  53. await call.message.answer('Заявки на регистрацию отсутствуют')
  54. await bot.send_message(data[index]["tg_id"], "Заявка на регистрацию одобрена")
  55. elif index == 0:
  56. user_id = data[index]['ID']
  57. db.sql_query_send(f"UPDATE booking.user_table SET approved='1' WHERE id={user_id}")
  58. await call.message.edit_text(beauty_reg_request(data[index+1]),
  59. reply_markup=manage_kb(f"u_accept:{user_id}", f"u_deny:{user_id}", f"u_next:{index + 1}",
  60. f"u_prev:{index + 1}", f"{index + 1}/{len(data) - 1}"))
  61. elif index == len(data)-1:
  62. user_id = data[index]['ID']
  63. db.sql_query_send(f"UPDATE booking.user_table SET approved='1' WHERE id={user_id}")
  64. await call.message.edit_text(beauty_reg_request(data[index-1]),
  65. reply_markup=manage_kb(f"u_accept:{user_id}", f"u_deny:{user_id}", f"u_next:{index - 1}",
  66. f"u_prev:{index - 1}", f"{index}/{len(data) - 1}"))
  67. else:
  68. user_id = data[index]['ID']
  69. db.sql_query_send(f"UPDATE booking.user_table SET approved='1' WHERE id={user_id}")
  70. await call.message.edit_text(beauty_reg_request(data[index-1]),
  71. reply_markup=manage_kb(f"u_accept:{user_id}", f"u_deny:{user_id}", f"u_next:{index}",
  72. f"u_prev:{index}", f"{index}/{len(data) - 1}"))
  73. async def deny_user(call: types.CallbackQuery):
  74. db = database.Database()
  75. data = db.sql_parse_users("select id,name,phone from user_table where approved = '0'")
  76. index = int(call.message.reply_markup.inline_keyboard[1][1].text.split("/")[0])-1
  77. if len(data) == 1:
  78. user_id = data[index]['ID']
  79. db.sql_query_send(f"DELETE FROM booking.user_table WHERE id={user_id}")
  80. await call.message.delete()
  81. await call.message.answer('Заявки на регистрацию отсутствуют')
  82. elif index == 0:
  83. user_id = data[index]['ID']
  84. db.sql_query_send(f"DELETE FROM booking.user_table WHERE id={user_id}")
  85. await call.message.edit_text(beauty_reg_request(data[index+1]),
  86. reply_markup=manage_kb(f"u_accept:{user_id}", f"u_deny:{user_id}", f"u_next:{index + 1}",
  87. f"u_prev:{index + 1}", f"{index + 1}/{len(data) - 1}"))
  88. elif index == len(data)-1:
  89. user_id = data[index]['ID']
  90. db.sql_query_send(f"DELETE FROM booking.user_table WHERE id={user_id}")
  91. await call.message.edit_text(beauty_reg_request(data[index-1]),
  92. reply_markup=manage_kb(f"u_accept:{user_id}", f"u_deny:{user_id}", f"u_next:{index - 1}",
  93. f"u_prev:{index - 1}", f"{index}/{len(data) - 1}"))
  94. else:
  95. user_id = data[index]['ID']
  96. db.sql_query_send(f"DELETE FROM booking.user_table WHERE id={user_id}")
  97. await call.message.edit_text(beauty_reg_request(data[index-1]),
  98. reply_markup=manage_kb(f"u_accept:{user_id}", f"u_deny:{user_id}", f"u_next:{index}",
  99. f"u_prev:{index}", f"{index}/{len(data) - 1}"))
  100. # Регистрация команд
  101. def admin_handlers(dp: Dispatcher):
  102. dp.register_message_handler(list_users, text='👤 Управление пользователями')
  103. dp.register_callback_query_handler(next_user_page, text_startswith='u_next')
  104. dp.register_callback_query_handler(prev_user_page, text_startswith='u_prev')
  105. dp.register_callback_query_handler(accept_user, text_startswith='u_accept')
  106. dp.register_callback_query_handler(deny_user, text_startswith='u_deny')