šŸ“„ run_market_briefing.py 2,311 bytes May 01, 2026 šŸ“‹ Raw

!/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())