events.py 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. from aiogram import types, Dispatcher
  2. from bot import database
  3. from bot.keyboards import register_kb, make_calendar, events_range_kb
  4. from bot.functions import make_date, date_range, beauty_all_events
  5. async def make_event(message: types.message):
  6. db = database.Database()
  7. if not db.sql_simple_check(f"select tg_id from user_table where tg_id ={message.from_user.id}") or \
  8. not db.sql_simple_check(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. else:
  12. if message.text == "🎯 Запланировать мероприятие":
  13. await message.delete()
  14. await message.answer(f"выберите дату чтобы увидеть список мероприятий\n\n"
  15. f"Так же календарь мероприятий можно посмотреть в "
  16. f"<a href=moodle.tomtit.tomsk.ru>Moodle</a>\n\n"
  17. f"Сегодняшняя дата <b>{make_date()}</b>", reply_markup=make_calendar())
  18. async def select_date(call: types.CallbackQuery):
  19. await call.message.answer(call.data)
  20. # TODO: Планирование по дате
  21. async def my_events(message: types.Message):
  22. db = database.Database()
  23. if db.sql_simple_check(sql=f'select admin from user_table where tg_id = {message.from_user.id}') == "0":
  24. await message.answer("В разработке")
  25. elif not db.sql_simple_check(sql=f"select tg_id from user_table where tg_id ={message.from_user.id}") or \
  26. not db.sql_simple_check(sql=f"select approved from user_table where tg_id={message.from_user.id}"):
  27. await message.delete()
  28. await message.answer("Команды станут доступны после регистрации", reply_markup=register_kb)
  29. else:
  30. data = db.sql_fetchall(sql=f"select events_table.description, user_table.name, events_table.e_date "
  31. f"from events_table inner join user_table "
  32. f"on events_table.owner = user_table.tg_id "
  33. f"where events_table.owner={message.from_user.id}")
  34. if len(data) == 0:
  35. await message.answer("Вы не планировали мероприятия")
  36. else:
  37. await message.answer(data)
  38. async def all_events(message: types.Message):
  39. db = database.Database()
  40. if db.sql_simple_check(sql=f'select admin from user_table where tg_id = {message.from_user.id}') == "0":
  41. await message.answer("В разработке")
  42. elif not db.sql_simple_check(sql=f"select tg_id from user_table where tg_id ={message.from_user.id}") or \
  43. not db.sql_simple_check(sql=f"select approved from user_table where tg_id={message.from_user.id}"):
  44. await message.delete()
  45. await message.answer("Команды станут доступны после регистрации", reply_markup=register_kb)
  46. else:
  47. await message.answer("Выберете интересующий диапазон", reply_markup=events_range_kb())
  48. async def select_range(call: types.CallbackQuery):
  49. if call.data == "today":
  50. db = database.Database()
  51. time = "'"+str(date_range("today"))+"'"
  52. data = db.sql_fetchall(sql=f"select events_table.description, user_table.name, events_table.e_date "
  53. f"from events_table inner join user_table "
  54. f"on events_table.owner = user_table.tg_id "
  55. f"where events_table.e_date={time}")
  56. if len(data) == 0:
  57. await call.message.answer("Сегодня мероприятий нет")
  58. else:
  59. await call.message.answer(data)
  60. if call.data == "week":
  61. db = database.Database()
  62. time = date_range("week").split(" ")
  63. time = "'" + time[0] + "' " + time[1] + " '" + time[2] + "'"
  64. data = db.sql_fetchall(sql=f"select events_table.description, user_table.name, events_table.e_date "
  65. f"from events_table inner join user_table "
  66. f"on events_table.owner = user_table.tg_id "
  67. f"where events_table.e_date between {time}")
  68. if len(data) == 0:
  69. await call.message.answer("На этой неделе мероприятий нет")
  70. else:
  71. await call.message.answer(data)
  72. print(data)
  73. new_data = sorted(data,key=lambda d: d['e_date'])
  74. print(new_data)
  75. await call.message.answer(new_data)
  76. if call.data == "month":
  77. db = database.Database()
  78. time = date_range("month").split(" ")
  79. time = "'" + time[0] + "' " + time[1] + " '" + time[2] + "'"
  80. data = db.sql_fetchall(sql=f"select events_table.description, user_table.name, events_table.e_date "
  81. f"from events_table inner join user_table "
  82. f"on events_table.owner = user_table.tg_id "
  83. f"where events_table.e_date between {time}")
  84. await call.message.answer(data)
  85. def events_register(dp: Dispatcher):
  86. dp.register_message_handler(make_event, text="🎯 Запланировать мероприятие")
  87. dp.register_message_handler(my_events, text="🗒 Мои события")
  88. dp.register_message_handler(all_events, text="📅 Все события")
  89. dp.register_callback_query_handler(select_date, text_startswith='date_')
  90. dp.register_callback_query_handler(select_range, text=(['month', 'week', 'today']))