import time, json, hashlib from pathlib import Path from woocommerce import API from files2 import toom from dotenv import load_dotenv import os load_dotenv() CONSUMER_KEY = os.getenv('CONSUMER_KEY') # токен бота CONSUMER_SECRET = os.getenv('CONSUMER_SECRET') # id чата URLS = os.getenv('URLS') # Настройки подключения wcapi = API( url=URLS, consumer_key = CONSUMER_KEY, # ключ пользователя с правами admin/shop_manager consumer_secret = CONSUMER_SECRET, version="wc/v3", timeout=30 ) STATE_FILE = Path("./last_order_state.json") def load_last_state(): if STATE_FILE.exists(): with open(STATE_FILE, 'r') as f: return json.load(f) return None def save_last_state(data): with open(STATE_FILE, 'w') as f: json.dump(data, f) def get_order_hash(order): # Хеш только по важным полям (чтобы не реагировать на мелочи) important = { 'id': order.get('id'), 'status': order.get('status'), 'total': order.get('total'), 'date_modified': order.get('date_modified') } return hashlib.md5(json.dumps(important, sort_keys=True).encode()).hexdigest() def check_order_changes(): last_state = load_last_state() while True: try: response = wcapi.get("orders", params={ "per_page": 1, "orderby": "date", "order": "desc" }) response.raise_for_status() orders = response.json() if not orders: time.sleep(60) continue current_order = orders[0] order_id = current_order['id'] current_hash = get_order_hash(current_order) print(f"🔍 [{order_id}] {current_order.get('status')} | {current_order.get('total')}") if last_state and last_state.get('hash') == current_hash: print("⏳ Без изменений, жду...") else: print("🔄 Изменения обнаружены!") # 🔥 ТВОЯ ЛОГИКА toom() if last_state: # Не первый запуск old_status = last_state.get('status') new_status = current_order.get('status') if old_status != new_status: print(f"🎯 Статус сменился: {old_status} → {new_status}") # process_order_change(order_id, new_status) # Сохраняем новое состояние save_last_state({ 'id': order_id, 'hash': current_hash, 'status': current_order.get('status'), 'total': current_order.get('total'), 'modified': current_order.get('date_modified') }) last_state = {'hash': current_hash, 'status': current_order.get('status')} time.sleep(60) except Exception as e: print(f"❌ Ошибка: {e}") time.sleep(60) # if __name__ == "__main__": # check_order_changes()