123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- from aiogram import types, Dispatcher
- from bot import database
- from bot.keyboards import register_kb, make_calendar, events_range_kb
- from bot.functions import make_date, date_range, beauty_all_events
- async def make_event(message: types.message):
- db = database.Database()
- if not db.sql_simple_check(f"select tg_id from user_table where tg_id ={message.from_user.id}") or \
- not db.sql_simple_check(f"select approved from user_table where tg_id={message.from_user.id}"):
- await message.delete()
- await message.answer("Команды станут доступны после регистрации", reply_markup=register_kb)
- else:
- if message.text == "🎯 Запланировать мероприятие":
- await message.delete()
- await message.answer(f"выберите дату чтобы увидеть список мероприятий\n\n"
- f"Так же календарь мероприятий можно посмотреть в "
- f"<a href=moodle.tomtit.tomsk.ru>Moodle</a>\n\n"
- f"Сегодняшняя дата <b>{make_date()}</b>", reply_markup=make_calendar())
- async def select_date(call: types.CallbackQuery):
- await call.message.answer(call.data)
- # TODO: Планирование по дате
- async def my_events(message: types.Message):
- db = database.Database()
- if db.sql_simple_check(sql=f'select admin from user_table where tg_id = {message.from_user.id}') == "0":
- await message.answer("В разработке")
- elif not db.sql_simple_check(sql=f"select tg_id from user_table where tg_id ={message.from_user.id}") or \
- not db.sql_simple_check(sql=f"select approved from user_table where tg_id={message.from_user.id}"):
- await message.delete()
- await message.answer("Команды станут доступны после регистрации", reply_markup=register_kb)
- else:
- data = db.sql_fetchall(sql=f"select events_table.description, user_table.name, events_table.e_date "
- f"from events_table inner join user_table "
- f"on events_table.owner = user_table.tg_id "
- f"where events_table.owner={message.from_user.id}")
- if len(data) == 0:
- await message.answer("Вы не планировали мероприятия")
- else:
- await message.answer(data)
- async def all_events(message: types.Message):
- db = database.Database()
- if db.sql_simple_check(sql=f'select admin from user_table where tg_id = {message.from_user.id}') == "0":
- await message.answer("В разработке")
- elif not db.sql_simple_check(sql=f"select tg_id from user_table where tg_id ={message.from_user.id}") or \
- not db.sql_simple_check(sql=f"select approved from user_table where tg_id={message.from_user.id}"):
- await message.delete()
- await message.answer("Команды станут доступны после регистрации", reply_markup=register_kb)
- else:
- await message.answer("Выберете интересующий диапазон", reply_markup=events_range_kb())
- async def select_range(call: types.CallbackQuery):
- if call.data == "today":
- db = database.Database()
- time = "'"+str(date_range("today"))+"'"
- data = db.sql_fetchall(sql=f"select events_table.description, user_table.name, events_table.e_date "
- f"from events_table inner join user_table "
- f"on events_table.owner = user_table.tg_id "
- f"where events_table.e_date={time}")
- if len(data) == 0:
- await call.message.answer("Сегодня мероприятий нет")
- else:
- await call.message.answer(data)
- if call.data == "week":
- db = database.Database()
- time = date_range("week").split(" ")
- time = "'" + time[0] + "' " + time[1] + " '" + time[2] + "'"
- data = db.sql_fetchall(sql=f"select events_table.description, user_table.name, events_table.e_date "
- f"from events_table inner join user_table "
- f"on events_table.owner = user_table.tg_id "
- f"where events_table.e_date between {time}")
- if len(data) == 0:
- await call.message.answer("На этой неделе мероприятий нет")
- else:
- await call.message.answer(data)
- print(data)
- new_data = sorted(data,key=lambda d: d['e_date'])
- print(new_data)
- await call.message.answer(new_data)
- if call.data == "month":
- db = database.Database()
- time = date_range("month").split(" ")
- time = "'" + time[0] + "' " + time[1] + " '" + time[2] + "'"
- data = db.sql_fetchall(sql=f"select events_table.description, user_table.name, events_table.e_date "
- f"from events_table inner join user_table "
- f"on events_table.owner = user_table.tg_id "
- f"where events_table.e_date between {time}")
- await call.message.answer(data)
- def events_register(dp: Dispatcher):
- dp.register_message_handler(make_event, text="🎯 Запланировать мероприятие")
- dp.register_message_handler(my_events, text="🗒 Мои события")
- dp.register_message_handler(all_events, text="📅 Все события")
- dp.register_callback_query_handler(select_date, text_startswith='date_')
- dp.register_callback_query_handler(select_range, text=(['month', 'week', 'today']))
|