Untitled
unknown
plain_text
a year ago
7.1 kB
3
Indexable
import asyncio import math import os import zeep import secrets import json from pymongo import MongoClient from motor.motor_asyncio import AsyncIOMotorClient from loguru import logger import time from routers.parents import msg # credentials = ("школа", "Parsec", "123456") # client = zeep.Client("http://172.16.16.5:10101/IntegrationService/IntegrationService.asmx?WSDL") # session = client.service.OpenSession(*credentials) # sessionId = session.Value.SessionID # Создайте подключение к MongoDB mongo_client = MongoClient('mongodb://localhost:27017/') db = mongo_client['mydatabase'] collection = db['users'] collection2 = db['event'] clear2 = lambda: os.system('cls') red = "\u001b[31;1m" gr = "\u001b[32m" ye = "\u001b[33;1m" guests = [] async def update(): print('Обновление базы данных ') people = client.service.GetOrgUnitsHierarhyWithPersons(sessionId) for i in range(len(people)): people2 = (people[i]) try: if people2['FIRST_NAME']: pattern = { 'lastname': people2['LAST_NAME'], 'firstname': people2['FIRST_NAME'], 'middlename': people2['MIDDLE_NAME'], 'id': people2['ID'], 'parent_id': '' } is_exists = collection.count_documents({'id': people2['ID']}) if not is_exists: collection.insert_one(pattern) else: continue # print(people2['LAST_NAME'], "|", people2['FIRST_NAME'], "|", people2['MIDDLE_NAME'], "|", people2['ID']) else: continue except: continue async def update_parent_id(user_id, user_dict, message): # Получить всех пользователей из MongoDB all_users = collection.find() found = False for user in all_users: # Сравнить каждого пользователя с данными в словаре if user['firstname'] == user_dict['firstname'] and user['lastname'] == user_dict['lastname']: # Если совпадение найдено, обновить parent_id этого пользователя collection.update_one({'id': user['id']}, {'$set': {'parent_id': user_id}}) await message.answer(f"❖ ✔️ Вы успешно зарегистрировались") found = True break if not found: await message.answer(f"❖ ✖️ Нет такого ученика") async def input_user(lastname, firstname): data = { 'lastname': lastname, 'firstname': firstname } async def update_user(user_id: int, data: dict): await db.users.update_one({"_id": user_id}, {"$set": data}) async def updatebot(): # получает события и записывает новые в базу while True: data = (client.service.GetHardwareEventsResolved(sessionId, 0)) for i in range(len(data)): data2 = (data[i]) data3 = json.loads(data2) if data3['User']['Raw'] == "00000000-0000-0000-0000-000000000000": continue if data3['User']['Resolved']: if (data3['Component']['Raw'] == "7d41863e-1836-4319-9439-7fca7dae24f7" or data3['Component']['Raw'] == "6f5a2a3e-e802-4048-90de-fd6829b7f177" or data3['Component']['Raw'] == "c2b73d4f-c793-4dc4-b2e5-e6ffe506edc1" or data3['Component']['Raw'] == "955cf25f-8119-4a75-a6f7-2317ac868faa"): # print(data3['Date'], "|", data3['User']['Resolved'], "|", data3['Component']['Resolved']) if data3['User']['Resolved']: data4 = ( data3['Date'], data3['User']['Resolved'], data3['Component']['Resolved'], data3['User']['Raw']) guests.append(data4) guests.insert(0, data4) timeb = time.time() pattern = {'data': data3['Date'], 'name': data3['User']['Resolved'], 'place': data3['Component']['Resolved'], 'id': data3['User']['Raw'], 'bool': '', 'time': timeb } is_exists = collection2.count_documents({'id': data3['User']['Raw']}) if not is_exists: collection2.insert_one(pattern) else: continue # print() # print() # for i in range(5): # guests2 = (guests[i]) # logger.info(f'{gr}{guests2[0]} {red}{guests2[1]} {gr}{guests2[2]}') await asyncio.sleep(5) # clear2() async def updateevent(): # проверяет на события и если есть новые отпровляет родителю while True: for i in collection2.find(): dataup = i['data'].split('T')[1] dataup2 = dataup.split(':')[0] dataup2 = int(dataup2) + 4 dataup3 = str(dataup2) + ':' + dataup.split(':')[1] + ':' + dataup.split(':')[2] if not i['bool']: for e in collection.find({'id': i['id']}): if e['parent_id']: try: print(dataup3, "|", e['lastname'], e['firstname'], "| В школе") # тут должна быть отправка сообщения, прмерно как внизу # await bot.send_message(chat_id=e['parent_id'], text=(dataup3, "|", e['lastname'], e['firstname'], "| В школе")) collection2.update_one({"id": i['id']}, {"$set": {"bool": '1'}}) print("Отправил") except: print("Не отправил сообщение") continue await asyncio.sleep(10) async def delevent(): # удаляет события спустя 8 часов или в 5 утра удаляеть все события с базы while True: timedel = int(time.strftime('%H')) if timedel >= 5: collection2.delete_many({}) print('удалил') else: print('Время не пришло') for i in collection2.find(): time1 = int(i['time']) time2 = math.ceil(time.time()) if time1 <= time2: collection2.delete_one({'id': i['id']}) print("Запись удалена из базы |", i['name']) await asyncio.sleep(60) async def delevent2(): await asyncio.sleep(10) await msg()
Editor is loading...
Leave a Comment