#!/bin/env python3
import telepot
import argparse
import os
from program_info import ProgramInfo

telegram_recv = "@ufcdortmund"  # kanal

# Parse Arguments
aparser = argparse.ArgumentParser(
    description="UFC Telegram Bot"
)
aparser.add_argument(
    "--doit",
    action="store_true",
    help="Sendet die Nachricht an den UFC Channel, anstatt nur eine Ausgabe zu machen"
)
aparser.add_argument(
    "--nofailmessage",
    action="store_true",
    help="Unterdrückt die Nachricht, dass kein Event gefunden wurde"
)
aparser.add_argument(
    "--dest",
    help="Alternativer Telegramchat"
)
aparser.add_argument(
    "--daydiff",
    dest='day_diff',
    type=int,
    default=1,
    help="Prüfe ob in DAY_DIFF Tagen ein Event stattfindet anstatt morgen."
)
args = aparser.parse_args()
# Überschreibe den Telegramkanal, wenn einer angegeben wurde. (Praktisch für Debugging)
if not args.dest is None:
    telegram_recv = args.dest

program_info = ProgramInfo()

next_event = program_info.get_next_event(args.day_diff)


if next_event is None:
    if not args.nofailmessage:
        print("Telegram:")
        if args.day_diff == '0':
            print("Kein Event heute.")
        elif args.day_diff == 1:
            print("Kein Event morgen.")
        else:
            print("Kein Event in " + str(args.day_diff) + " Tagen.")
    exit(1)


date = next_event.date

# Erste Nachricht zusammenbauen
message = [
    ("%s, %d. %s %d um %s Uhr im UFC:\n" % (
    date.weekday, date.day, date.month, date.year, date.time)),
    "\n",
    "*", next_event.title, "*\n",
    "\n",
    next_event.description, "" if next_event.description == "" else "\n\n",
    next_event.movie_description, "\n",
    "\n",
    next_event.tags, "\n",
    "\n",
    "[Link zur Veranstaltung](%s?pk_campaign=telegram)" % next_event.link
]

# Trailernachricht zusammenbauen
if next_event.trailer != "":
    message.append("\n[Link zum Trailer](%s)" % next_event.trailer)

text = ''.join(message)

print("Vorschau Telegram:")
print(text)

# Nur abschicken, wenn es wirklich verlangt wird. Ansonsten nur in die Konsole schreiben
if args.doit is True:
    print("\nSchick Nachricht an Telegramchat " + telegram_recv)
    bot = telepot.Bot(os.environ["PROGRAMM_INFO_BOT_TELEGRAM_API_KEY"])  # UFC-Do-Bot
    bot.sendMessage(telegram_recv, text, parse_mode="markdown", disable_web_page_preview=True)
else:
    print("\nProgramm läuft im Vorschaumodus. Es wird nichts an Telegram abgesendet.")