!/usr/bin/env python3
"""
Runner for market briefings ā handles both AM and PM briefings.
Called by OpenClaw cron jobs.
"""
import sys
import os
import argparse
Add workspace to path
sys.path.insert(0, "/home/hoffmann_admin/.openclaw/workspace")
from jobs.premarket_briefing import generate_premarket_briefing
from jobs.daily_briefing import generate_daily_briefing
def send_to_telegram(text: str, chat_id: str = "8386527252") -> bool:
"""Send message to Telegram."""
try:
import requests
bot_token = os.environ.get("TELEGRAM_BOT_TOKEN")
if not bot_token:
print("Warning: TELEGRAM_BOT_TOKEN not set")
return False
url = f"https://api.telegram.org/bot{bot_token}/sendMessage"
# Split long messages if needed
if len(text) > 4000:
text = text[:3997] + "..."
payload = {
"chat_id": chat_id,
"text": text,
"parse_mode": "HTML",
"disable_web_page_preview": True
}
response = requests.post(url, json=payload, timeout=30)
response.raise_for_status()
return True
except Exception as e:
print(f"Failed to send Telegram message: {e}")
return False
def main():
parser = argparse.ArgumentParser(description="Run market briefing")
parser.add_argument("--type", choices=["am", "pm"], required=True,
help="Briefing type: am (pre-market) or pm (close)")
parser.add_argument("--send", action="store_true",
help="Send to Telegram after generating")
args = parser.parse_args()
# Generate briefing
if args.type == "am":
briefing = generate_premarket_briefing()
else:
briefing = generate_daily_briefing()
print(briefing)
print(f"\n--- Character count: {len(briefing)} ---")
# Send to Telegram if requested
if args.send:
chat_id = os.environ.get("MARKET_BRIEFING_CHAT_ID", "8386527252")
if send_to_telegram(briefing, chat_id):
print(f"\nā Sent to Telegram (chat: {chat_id})")
else:
print(f"\nā Failed to send to Telegram")
return 1
return 0
if name == "main":
sys.exit(main())