# -*- coding: utf-8 -*-

import logging

from convopyro import listen_message
from pyrogram import filters
from pyrogram.client import Client
from pyrogram.types import ForceReply, Message, ReplyKeyboardRemove

from modules.utils import string, userSet

logger = logging.getLogger(__name__)


@Client.on_message(
    ~filters.scheduled
    & filters.command(["setcard", "задать карту"], prefixes=["/", ""])  # type: ignore
)
async def command_setcard(app: Client, msg: Message):
    await msg.reply_text(
        await string("send_number"),
        reply_markup=ForceReply(placeholder=await string("enter_number")),
    )
    answer = await listen_message(app, msg.chat.id, timeout=None)
    if answer is None:
        return
    elif answer.text.strip() in ["/cancel", "cancel", "/відміна", "відміна"]:
        await msg.reply_text(await string("cancel"), reply_markup=ReplyKeyboardRemove())
        return
    userSet(answer.from_user.id, "card", answer.text)
    logger.info(f"User {str(msg.from_user.id)} set card id to {answer.text}")
    await msg.reply_text(
        (await string("card_linked")).format(answer.text),
        reply_markup=ReplyKeyboardRemove(),
    )
