import handlers
import profiles
import locales
from profiles.ProfileManager import get_full_profile_by_tg_id
from profiles.ProfileManager import update
from keyboards.subscribe_kb import subscribe_keyboard
import profiles.ProfileStep as ProfileStep
from bot import bot
from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton
from handlers.guide import guide
from bot import ferno_channel_id

@bot.callback_query_handler(func=lambda c:c.data.startswith("btn_lang_continue"))
def subscribe(call):
    p = get_full_profile_by_tg_id(call.from_user.id)

    p.print()

    if (not(is_subscribed(p.tg_id)) or (p.step != ProfileStep.SUBSCRIBE)):
        if (p.step != ProfileStep.SUBSCRIBE):

            reply_markup = subscribe_keyboard(p)

            text = (
                f"{locales.get(p.language, 'check_subscribe_title')}"
            )

            handlers.ui.render(
                p,
                call.message.chat.id,
                text,
                reply_markup=reply_markup
            )
        else:
            alert_text = f"{locales.get(p.language, 'check_no_found')}"
            bot.answer_callback_query(
                callback_query_id=call.id,
                text= alert_text,
                show_alert=False
            )


    else:
        alert_text = f"{locales.get(p.language, 'check_found')}"
        bot.answer_callback_query(
            callback_query_id=call.id,
            text= alert_text,
            show_alert=False
        )
        guide(call)
    p.step = ProfileStep.SUBSCRIBE
    update(p)








def is_subscribed(user_id):
    try:
        member = bot.get_chat_member(ferno_channel_id, user_id)
        return member.status in ['member', 'administrator', 'creator']
    except:
        return False