import importlib.machinery
import importlib.util
import os
import sys
import traceback

# تنظیم دقیق مسیر جاری پروژه
current_dir = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, current_dir)
os.chdir(current_dir)

def load_source(modname, filename):
    loader = importlib.machinery.SourceFileLoader(modname, filename)
    spec = importlib.util.spec_from_file_location(modname, filename, loader=loader)
    module = importlib.util.module_from_spec(spec)
    loader.exec_module(module)
    return module

wsgi = None
load_error = None

try:
    # بارگذاری فایل اصلی ربات شما
    wsgi = load_source('wsgi', 'newfile.py')
except Exception as e:
    # ذخیره جزئیات خطا در یک فایل متنی برای عیب‌یابی سریع
    load_error = traceback.format_exc()
    error_log_path = os.path.join(current_dir, 'wsgi_error.log')
    try:
        with open(error_log_path, 'w', encoding='utf-8') as f:
            f.write(load_error)
    except Exception:
        pass

# بررسی و تنظیم امن متغیر application برای هاست
if wsgi:
    if hasattr(wsgi, 'app'):
        application = wsgi.app
    elif hasattr(wsgi, 'application'):
        application = wsgi.application
    else:
        # اگر متغیری تعریف نشده باشد (چون ربات تلگرام است)
        def application(environ, start_response):
            start_response('200 OK', [('Content-Type', 'text/plain; charset=utf-8')])
            return [b"Telegram Bot is running successfully!"]
else:
    # اگر فایل newfile.py خطا داشت، متن خطا را برای بررسی نشان بده
    def application(environ, start_response):
        start_response('500 Internal Server Error', [('Content-Type', 'text/plain; charset=utf-8')])
        error_msg = f"Error loading newfile.py:\n\n{load_error}".encode('utf-8')
        return [error_msg]