import logging from convopyro import listen_message from pyrogram import filters from pyrogram.types import ForceReply, Message, ReplyKeyboardRemove from classes.pyroclient import PyroClient logger = logging.getLogger(__name__) @PyroClient.on_message( ~filters.scheduled & filters.command(["setcard", "задати картку"], prefixes=["/", ""]) # type: ignore ) async def command_setcard(app: PyroClient, message: Message): user = await app.find_user(message.from_user) await message.reply_text( app._("send_number", "messages", locale=user.locale), reply_markup=ForceReply( placeholder=app._("enter_number", "force_replies", locale=user.locale) ), ) answer = await listen_message(app, message.chat.id, timeout=500) if ( answer is None or answer.text is None or answer.text.strip() in [ "/cancel", "cancel", "/відміна", "відміна", ] ): await message.reply_text( app._("cancel", "messages", locale=user.locale), reply_markup=ReplyKeyboardRemove(), ) return await user.update_card(answer.text) logger.info("User %s set their card id to %s", user.id, answer.text) await message.reply_text( app._("card_linked", "messages", locale=user.locale).format( card_id=answer.text ), reply_markup=ReplyKeyboardRemove(), )