from telethon import TelegramClient, events
from config import API_ID, API_HASH, CHANNEL
from parser import parse_signal
from trader import init_mt5, place_trade
from manager import manage_trades
import threading

client = TelegramClient("session", API_ID, API_HASH)


@client.on(events.NewMessage(chats=CHANNEL))
async def handler(event):
    text = event.raw_text

    print("\n==============================")
    print("📩 NEW MESSAGE RECEIVED:")
    print(text)
    print("==============================")

    signal = parse_signal(text)

    if signal:
        print("✅ SIGNAL PARSED:", signal)
        place_trade(signal)
    else:
        print("❌ NOT A VALID SIGNAL")


def main():
    print("🔌 Initializing MT5...")
    if not init_mt5():
        print("❌ MT5 FAILED TO INITIALIZE")
        return

    print("📡 Connecting to Telegram...")
    client.start()

    # 🔥 Start trailing/breakeven manager in background
    threading.Thread(target=manage_trades, daemon=True).start()

    print(f"🤖 Bot is running and listening to: {CHANNEL}")
    print("📈 Trailing & Breakeven Manager ACTIVE")

    client.run_until_disconnected()


if __name__ == "__main__":
    main()