浏览代码

Добавлен импорт мероприятий в мудл
Добавленна функия автоматичесой отправки календаря по времени

Vildan 2 年之前
父节点
当前提交
779b497965
共有 8 个文件被更改,包括 33 次插入17 次删除
  1. 2 1
      Moodle/__init__.py
  2. 3 0
      bot/config.py
  3. 1 0
      bot/database.py
  4. 18 11
      bot/functions.py
  5. 0 2
      handlers/start.py
  6. 3 2
      handlers/user/make_events.py
  7. 3 1
      main.py
  8. 3 0
      requirements.txt

+ 2 - 1
Moodle/__init__.py

@@ -1,2 +1,3 @@
 # Выгрузка мероприятий в Moodle
-import Moodle.calendar_gen
+import Moodle.send_calendar
+import Moodle.make_calendar

+ 3 - 0
bot/config.py

@@ -12,3 +12,6 @@ DB_NAME = os.getenv('DB_NAME')
 DB_USER = os.getenv('DB_USER')
 DB_PASS = os.getenv('DB_PASS')
 CHAT_ID = os.getenv('CHAT_ID')
+SSH_HOST = os.getenv('SSH_HOST')
+SSH_USER = os.getenv('SSH_USER')
+SSH_PASS = os.getenv('SSH_PASS')

+ 1 - 0
bot/database.py

@@ -12,6 +12,7 @@ class Database:
             self.cursor = self.connection.cursor(dictionary=True)
         except mysql.connector.Error as err:
             print("Something went wrong: {}".format(err))
+
     def cursor(self):
         return self.cursor
 

+ 18 - 11
bot/functions.py

@@ -136,17 +136,21 @@ def time_validator(data):
 
 def normalize_time(data):
     if len(data.split(" ")) == 2:
-        if len(data.split(" ")[0]) == 4:
-            data = "0" + data
-            return data.replace(".", ":").split(" ")
-        else:
-            return data.replace(".", ":").split(" ")
-    elif len(data.split("-")) == 2:
-        if len(data.split("-")[0]) == 4:
-            data = "0" + data
-            return data.replace(".", ":").split("-")
-        else:
-            return data.replace(".", ":").split("-")
+        data = data.split(" ")
+        if len(data[0]) == 4:
+            data[0] = "0" + data[0]
+        if len(data[1]) == 4:
+            data[1] = "0" + data[1]
+        data = f"{data[0]} {data[1]}"
+        return data.replace(".", ":").split(" ")
+    if len(data.split("-")) == 2:
+        data = data.split("-")
+        if len(data[0]) == 4:
+            data[0] = "0" + data[0]
+        if len(data[1]) == 4:
+            data[1] = "0" + data[1]
+        data = f"{data[0]} {data[1]}"
+        return data.replace(".", ":").split(" ")
     else:
         return False
 
@@ -157,9 +161,12 @@ def check_overlap(start, end, date):
     times = db.sql_fetchall(f"select e_start,e_end from events_table where e_date = {date}")
     for time in times:
         it.addi(time['e_start'], time['e_end'])
+
+    print(it.overlaps(start, end))
     return not it.overlaps(start, end)
 
 
+
 def parse_events(data):
     events_list = []
     for elem in data:

+ 0 - 2
handlers/start.py

@@ -1,10 +1,8 @@
 import asyncio
-
 from aiogram import types, Dispatcher
 from bot.keyboards import main_kb, register_kb,   check_register_kb
 from bot import database
 from bot import sql
-from bot.dispatcher import bot
 from aiogram.dispatcher.storage import FSMContext
 from handlers.user.states import SendBugState, MessageToAll
 from handlers.admin.notifications import new_bug, message_to_all

+ 3 - 2
handlers/user/make_events.py

@@ -1,9 +1,8 @@
 import asyncio
-import aiogram
 from aiogram import types, Dispatcher
 from bot import database, sql
 from bot.keyboards import register_kb, make_calendar, events_kb, cancel_booking, main_kb
-from bot.functions import make_date, date_range, time_validator, normalize_time, to_quotes, check_overlap, beauty_booked_time
+from bot.functions import make_date, time_validator, normalize_time, to_quotes, check_overlap, beauty_booked_time
 from handlers.user.states import BookingState
 from aiogram.dispatcher.storage import FSMContext
 from bot import messages
@@ -93,12 +92,14 @@ async def get_time(message: types.Message, state: FSMContext):
             await asyncio.sleep(5)
             await msg.delete()
         elif not check_overlap(time[0], time[1], date['date']):
+            print(time[0],time[1])
             msg = await message.answer("Указанное время пеерсекается")
             await asyncio.sleep(5)
             await msg.delete()
         else:
             await state.update_data(t_start=time[0])
             await state.update_data(t_end=time[1])
+            print(time)
             await BookingState.description.set()
             msg = await message.answer("Введите краткое описание мероприятия", reply_markup=cancel_booking())
             await asyncio.sleep(10)

+ 3 - 1
main.py

@@ -2,6 +2,8 @@ from aiogram.utils import executor
 from bot.dispatcher import dp
 import handlers.admin.admin_menu
 import logging
+from Moodle.scheduler import on_start
+
 
 if __name__ == '__main__':
     logging.basicConfig(level=logging.INFO)
@@ -12,4 +14,4 @@ if __name__ == '__main__':
     handlers.admin.manage_users.admin_handlers(dp)
     handlers.admin.manage_events.register_handlers(dp)
     handlers.start.main_register(dp)
-    executor.start_polling(dp, skip_updates=True)
+    executor.start_polling(dp, skip_updates=True, on_startup=on_start)

+ 3 - 0
requirements.txt

@@ -1,3 +1,4 @@
+paramiko
 intervaltree
 aiogram==2.22.2
 aiohttp==3.8.3
@@ -18,3 +19,5 @@ python-dotenv==0.21.0
 pytz==2022.4
 typing-extensions==4.3.0
 yarl==1.8.1
+
+