manage_events.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. # TODO: Добавить управление мероприятиями
  2. from aiogram import types, Dispatcher
  3. from bot import database
  4. from bot.functions import parse_events
  5. from bot.keyboards import register_kb,manage_kb
  6. from bot import sql
  7. async def list_events(message: types.Message):
  8. db = database.Database()
  9. if not db.sql_fetchone(sql=f"select tg_id from user_table where tg_id ={message.from_user.id}") or \
  10. not db.sql_fetchone(sql=f"select approved from user_table where tg_id={message.from_user.id}"):
  11. await message.delete()
  12. await message.answer("Команды станут доступны после регистрации", reply_markup=register_kb)
  13. events = db.sql_fetchall(sql.sql_manage_events())
  14. if len(events) == 0:
  15. await message.answer("Заявки отсутствуют")
  16. else:
  17. await message.answer(parse_events(events)[0], reply_markup=manage_kb(f"e_accept:{events[0]['id']}", f"e_deny:{events[0]['id']}", f"e_next:0",
  18. f"e_prev:0", f"1/{len(events)}"))
  19. async def next_event_page(call: types.CallbackQuery):
  20. db = database.Database()
  21. events = db.sql_fetchall(sql.sql_manage_events())
  22. index = int(call.data.split(":")[1]) + 1
  23. if not events:
  24. await call.message.answer('Заявки отсутствуют')
  25. if index == len(events):
  26. pass
  27. print("next")
  28. else:
  29. event_id = events[index]['id']
  30. await call.message.edit_text(parse_events(events)[index],
  31. reply_markup=manage_kb(f"e_accept:{event_id}", f"e_deny:{event_id}", f"e_next:{index}",
  32. f"e_prev:{index}", f"{index + 1}/{len(events)}"))
  33. async def prev_event_page(call: types.CallbackQuery):
  34. db = database.Database()
  35. events = db.sql_fetchall(sql.sql_manage_events())
  36. index = int(call.data.split(":")[1]) - 1
  37. if not events:
  38. await call.message.answer('Заявки отсутствуют')
  39. if index < 0:
  40. print(events)
  41. print("prev")
  42. pass
  43. else:
  44. event_id = events[index]['id']
  45. await call.message.edit_text(parse_events(events)[index],
  46. reply_markup=manage_kb(f"e_accept:{event_id}", f"e_deny:{event_id}", f"e_next:{index}",
  47. f"e_prev:{index}", f"{index + 1 }/{len(events)}"))
  48. async def accept_event(call: types.CallbackQuery):
  49. db = database.Database()
  50. events = db.sql_fetchall(sql.sql_manage_events())
  51. index = int(call.message.reply_markup.inline_keyboard[1][1].text.split("/")[0])-1
  52. if len(events) == 1:
  53. event_id = events[index]['id']
  54. db.sql_query_send(f"UPDATE booking.events_table SET approved='1' WHERE id={event_id}")
  55. await call.message.delete()
  56. await call.message.answer('Заявки отсутствуют')
  57. elif index == 0:
  58. event_id = events[index]['id']
  59. db.sql_query_send(f"UPDATE booking.events_table SET approved='1' WHERE id={event_id}")
  60. await call.message.edit_text(parse_events(events)[index+1],
  61. reply_markup=manage_kb(f"e_accept:{event_id}", f"e_deny:{event_id}", f"e_next:{index + 1}",
  62. f"e_prev:{index + 1}", f"{index + 1}/{len(events) - 1}"))
  63. elif index == len(events)-1:
  64. event_id = events[index]['id']
  65. db.sql_query_send(f"UPDATE booking.events_table SET approved='1' WHERE id={event_id}")
  66. await call.message.edit_text(parse_events(events)[index-1],
  67. reply_markup=manage_kb(f"e_accept:{event_id}", f"e_deny:{event_id}", f"e_next:{index - 1}",
  68. f"e_prev:{index - 1}", f"{index}/{len(events) - 1}"))
  69. print("2 " +index)
  70. else:
  71. event_id = events[index]['id']
  72. db.sql_query_send(f"UPDATE booking.events_table SET approved='1' WHERE id={event_id}")
  73. await call.message.edit_text(parse_events(events)[index+1],
  74. reply_markup=manage_kb(f"e_accept:{event_id}", f"e_deny:{event_id}", f"e_next:{index}",
  75. f"e_prev:{index}", f"{index}/{len(events) - 1}"))
  76. print(event_id, index)
  77. def register_handlers(dp: Dispatcher):
  78. dp.register_message_handler(list_events, text='🎫 Управление мероприятиями')
  79. dp.register_callback_query_handler(next_event_page, text_startswith='e_next')
  80. dp.register_callback_query_handler(prev_event_page, text_startswith='e_prev')
  81. dp.register_callback_query_handler(accept_event, text_startswith='e_accept')