"""Telegram 매매 알림."""
from __future__ import annotations
import logging
import os
import requests
logger = logging.getLogger(__name__)
_TOKEN = os.getenv("TELEGRAM_TRADE_TOKEN", "")
_CHAT_ID = os.getenv("TELEGRAM_CHAT_ID", "")
_API = "https://api.telegram.org/bot{token}/sendMessage"
def _send(text: str) -> None:
if not _TOKEN or not _CHAT_ID:
logger.warning("Telegram 설정 없음, 알림 스킵")
return
try:
requests.post(
_API.format(token=_TOKEN),
json={"chat_id": _CHAT_ID, "text": text, "parse_mode": "HTML"},
timeout=5,
)
except Exception as e:
logger.error(f"Telegram 알림 실패: {e}")
def notify_buy(ticker: str, price: float, amount: float, invested_krw: int) -> None:
_send(
f"📈 [매수] {ticker}\n"
f"가격: {price:,.0f}원\n"
f"수량: {amount}\n"
f"투자금: {invested_krw:,}원"
)
def notify_sell(ticker: str, price: float, pnl_pct: float, reason: str) -> None:
emoji = "✅" if pnl_pct >= 0 else "🔴"
_send(
f"{emoji} [매도] {ticker}\n"
f"가격: {price:,.0f}원\n"
f"수익률: {pnl_pct:+.1f}%\n"
f"사유: {reason}"
)
def notify_error(message: str) -> None:
_send(f"⚠️ [오류]\n{message}")