54 lines
1.5 KiB
Python
54 lines
1.5 KiB
Python
|
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(),
|
||
|
)
|