# -*- coding: utf-8 -*-
"""
Simple Telegram bot (Python 3.6 compatible) that:
- Accepts premium emojis from ANY user
- Saves custom emoji id + emoji to JSON
- Command /imojecode shows saved list

IMPORTANT:
Install compatible library for Python 3.6:
    pip install python-telegram-bot==13.15

Bot API must be new enough to support custom emojis.
"""

import json
import os
from telegram import Update
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext

TOKEN = "8713145577:AAF9SJfuAHLE4GCcauJXAt5E2cSZP6ACKeA"
DATA_FILE = "emojis.json"
OWNER_ID = 6599885931  # <- your Telegram user id


# ---------- helpers ----------

def load_data():
    if not os.path.exists(DATA_FILE):
        return {}
    with open(DATA_FILE, "r", encoding="utf-8") as f:
        return json.load(f)


def save_data(data):
    with open(DATA_FILE, "w", encoding="utf-8") as f:
        json.dump(data, f, ensure_ascii=False, indent=2)


# ---------- commands ----------

def start(update: Update, context: CallbackContext):
    update.message.reply_text("سلام 👋\nایموجی پرمیوم بفرست تا ذخیره کنم.")


def imojecode(update: Update, context: CallbackContext):
    data = load_data()

    if not data:
        update.message.reply_text("هیچ ایموجی ذخیره نشده 😕")
        return

    text_lines = ["📦 لیست ایموجی‌های ذخیره شده:\n"]

    for code, emoji in data.items():
        text_lines.append("{}  ->  {}".format(code, emoji))

    update.message.reply_text("\n".join(text_lines))


# ---------- message handler ----------

def handle_message(update: Update, context: CallbackContext):
    msg = update.message

    if not msg.entities:
        return

    data = load_data()
    saved_any = False

    for ent in msg.entities:
        # Premium emoji type
        if ent.type == "custom_emoji":
            emoji_text = msg.text[ent.offset: ent.offset + ent.length]
            emoji_id = ent.custom_emoji_id

            # save if not exists
            if emoji_id not in data:
                data[emoji_id] = emoji_text
                saved_any = True

    if saved_any:
        save_data(data)
        msg.reply_text("✅ ایموجی پرمیوم ذخیره شد")


# ---------- main ----------

def main():
    updater = Updater(TOKEN, use_context=True)
    dp = updater.dispatcher

    dp.add_handler(CommandHandler("start", start))
    dp.add_handler(CommandHandler("imojecode", imojecode))

    # receive ALL messages
    dp.add_handler(MessageHandler(Filters.text & ~Filters.command, handle_message))

    updater.start_polling()
    updater.idle()


if __name__ == "__main__":
    main()
