registration.py 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import asyncio
  2. from aiogram import types, Dispatcher
  3. from aiogram.dispatcher.storage import FSMContext
  4. from bot import database
  5. from bot.states import RegisterStates
  6. from bot.keyboards import reset_register_kb, register_kb
  7. from bot.functions import validate_phone, reject_latin, reject_cmd, validate_fio
  8. from bot.notifications import new_user
  9. async def registration(call: types.CallbackQuery):
  10. await call.message.edit_text(f"Введите номер телефона\n"
  11. f"Возможные форматы:\n\n"
  12. f"<b>+79995554433</b>\n"
  13. f"<b>9997771122</b>\n"
  14. f"<b>89995554433</b>\n"
  15. f"<b>8-999-888-11-22</b>\n"
  16. f"<b>+7-999-888-11-22</b>", reply_markup=reset_register_kb())
  17. await RegisterStates.phone.set()
  18. async def get_number(message: types.Message, state: FSMContext):
  19. if validate_phone(message.text):
  20. await state.update_data(number=message.text)
  21. await message.delete()
  22. msg = await message.answer(f"Укажите ФИО\n"
  23. f"Например: Иванов Иван Иванович")
  24. await RegisterStates.FIO.set()
  25. await asyncio.sleep(60)
  26. await msg.delete()
  27. else:
  28. await message.delete()
  29. msg = await message.answer(f"Указан некорректный номер телефона")
  30. await asyncio.sleep(5)
  31. await msg.delete()
  32. async def get_fio(message: types.Message, state: FSMContext):
  33. db = database.Database()
  34. if reject_cmd(message.text):
  35. await message.delete()
  36. msg = await message.answer("Нельзя использовать команды")
  37. await asyncio.sleep(5)
  38. await msg.delete()
  39. elif reject_latin(message.text):
  40. await message.delete()
  41. msg = await message.answer("Нельзя использовать латиницу и символы")
  42. await asyncio.sleep(5)
  43. await msg.delete()
  44. elif validate_fio(message.text):
  45. await message.delete()
  46. msg = await message.answer("Необходимо указать полное ФИО")
  47. await asyncio.sleep(5)
  48. await msg.delete()
  49. else:
  50. await message.delete()
  51. await state.update_data(FIO=message.text)
  52. await state.update_data(id=message.from_user.id)
  53. await state.update_data(tg=message.from_user.username)
  54. reg_data = await state.get_data()
  55. await state.finish()
  56. msg = await message.answer(f"Заявка отправлена")
  57. db.sql_query_send(f"INSERT INTO user_table (tg_id,name,phone)"
  58. f"VALUES ({reg_data['id']},"
  59. f"'{reg_data['FIO']}',"
  60. f"'{reg_data['number']}')")
  61. await new_user(reg_data)
  62. await asyncio.sleep(5)
  63. await msg.delete()
  64. async def reset_register(call: types.CallbackQuery, state: FSMContext):
  65. await state.finish()
  66. await call.message.edit_text(f"🤖Вас приветствует бот 405 кабинета🤖\n"
  67. f"\n"
  68. f"Для доступа к функционалу необходимо зарегистрироваться\n"
  69. f"", reply_markup=register_kb())
  70. def register(dp: Dispatcher):
  71. dp.register_callback_query_handler(registration, text="register")
  72. dp.register_callback_query_handler(reset_register, text="res_register", state=[RegisterStates.phone,
  73. RegisterStates.FIO])
  74. dp.register_message_handler(get_number, state=RegisterStates.phone)
  75. dp.register_message_handler(get_fio, state=RegisterStates.FIO)