from pyrogram.types import Message

import app

from app.config import ADMINS
from app.handlers.buttons import Buttons


class StartHandler:
    async def start_handler(self: "app.App", _, message: Message):
        user_id = message.from_user.id

        if self.setting.off and user_id not in ADMINS:
            return await message.reply(
                text="⭕️ ربات در حال حاضر خاموش است.",
                quote=True
            )

        elif await self.database.get_block(user_id):
            return await message.reply(
                text="🚫 شما از گسترده مسدود شده اید.",
                quote=True
            )

        get_user = await self.database.get_user(user_id=user_id)

        if not get_user:
            await self.database.add_user(
                user_id=user_id,
                start_date=self.timestamp,
                last_use=self.timestamp
            )
            get_user = await self.database.get_user(user_id=user_id)

        if not get_user.verify and not await self.is_admin(user_id):
            await self.database.update_user(get_user, step=None)

            await message.reply(
                text=self.setting.register,
                reply_markup=Buttons.register,
                quote=True
            )

        else:
            if get_user.step:
                await self.database.update_user(
                    get_user,
                    last_use=self.timestamp,
                    step=None
                )
            else:
                await self.database.update_user(
                    get_user,
                    last_use=self.timestamp
                )

            await message.reply(
                text=self.setting.start,
                reply_markup=Buttons.home,
                quote=True
            )