show_events.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. from bot import database
  2. from aiogram import types, Dispatcher
  3. from bot.keyboards import register_kb, events_range_kb
  4. from bot.functions import date_range, beauty_all_events
  5. from bot import sql
  6. async def my_events(message: types.Message):
  7. db = database.Database()
  8. if db.sql_fetchone(sql=sql.check_approved(message.from_user.id)) == "0" or db.sql_fetchone(sql=sql.check_id(message.from_user.id)) == "0":
  9. await message.delete()
  10. await message.answer("Команды станут доступны после регистрации", reply_markup=register_kb)
  11. # elif db.sql_fetchone(sql=sql.check_admin(message.from_user.id)) == "0":
  12. # await message.answer("В разработке")
  13. else:
  14. data = db.sql_fetchall(sql=sql.get_user_event(message.from_user.id))
  15. if len(data) == 0:
  16. await message.answer("Вы не планировали мероприятия")
  17. else:
  18. await message.answer(beauty_all_events(sorted(data, key=lambda d: d['e_date'])))
  19. async def all_events(message: types.Message):
  20. db = database.Database()
  21. if db.sql_fetchone(sql=sql.check_approved(message.from_user.id)) == "0" or db.sql_fetchone(sql=sql.check_id(message.from_user.id)) == "0":
  22. await message.delete()
  23. await message.answer("Команды станут доступны после регистрации", reply_markup=register_kb)
  24. # elif db.sql_fetchone(sql=sql.check_admin(message.from_user.id)) == "0":
  25. # await message.answer("В разработке")
  26. else:
  27. await message.answer("Выберете интересующий диапазон", reply_markup=events_range_kb())
  28. # TODO: Визуальное оформление событий
  29. async def select_range(call: types.CallbackQuery):
  30. if call.data == "today":
  31. db = database.Database()
  32. time = "'"+str(date_range("today"))+"'"
  33. data = db.sql_fetchall(sql=sql.get_all_events(time))
  34. if len(data) == 0:
  35. await call.message.answer("Сегодня мероприятий нет")
  36. else:
  37. await call.message.answer(beauty_all_events(sorted(data, key=lambda d: d['e_date'])))
  38. if call.data == "week":
  39. db = database.Database()
  40. time = date_range("week").split(" ")
  41. time = "'" + time[0] + "' " + time[1] + " '" + time[2] + "'"
  42. data = db.sql_fetchall(sql=sql.get_range_events(time))
  43. if len(data) == 0:
  44. await call.message.answer("На этой неделе мероприятий нет")
  45. else:
  46. await call.message.answer(beauty_all_events(sorted(data, key=lambda d: d['e_date'])))
  47. if call.data == "month":
  48. db = database.Database()
  49. time = date_range("month").split(" ")
  50. time = "'" + time[0] + "' " + time[1] + " '" + time[2] + "'"
  51. data = db.sql_fetchall(sql=sql.get_range_events(time))
  52. await call.message.answer(beauty_all_events(sorted(data, key=lambda d: d['e_date'])))
  53. def register(dp: Dispatcher):
  54. dp.register_message_handler(my_events, text="🗒 Мои события")
  55. dp.register_message_handler(all_events, text="📅 Все события")
  56. dp.register_callback_query_handler(select_range, text=(['month', 'week', 'today']))