mirror of
https://github.com/Mayuri-Chan/pyrofork.git
synced 2025-12-29 12:04:51 +00:00
pyrofork: Refactor ShippingQuery
Signed-off-by: wulan17 <wulan17@komodos.id>
This commit is contained in:
parent
c427601210
commit
8c47410bba
4 changed files with 35 additions and 31 deletions
|
|
@ -17,14 +17,12 @@
|
|||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with Pyrofork. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from typing import Union, List, Match, Optional
|
||||
|
||||
import pyrogram
|
||||
from pyrogram import raw, enums
|
||||
from pyrogram import types
|
||||
from pyrogram import raw, types
|
||||
from typing import Dict
|
||||
from ..object import Object
|
||||
from ..update import Update
|
||||
from ... import utils
|
||||
|
||||
|
||||
class PreCheckoutQuery(Object, Update):
|
||||
|
|
@ -76,7 +74,11 @@ class PreCheckoutQuery(Object, Update):
|
|||
self.payment_info = payment_info
|
||||
|
||||
@staticmethod
|
||||
async def _parse(client: "pyrogram.Client", pre_checkout_query, users) -> "PreCheckoutQuery":
|
||||
async def _parse(
|
||||
client: "pyrogram.Client",
|
||||
pre_checkout_query: "raw.types.UpdateBotPrecheckoutQuery",
|
||||
users: Dict[int, "raw.types.User"] = None
|
||||
) -> "PreCheckoutQuery":
|
||||
# Try to decode pre-checkout query payload into string. If that fails, fallback to bytes instead of decoding by
|
||||
# ignoring/replacing errors, this way, button clicks will still work.
|
||||
try:
|
||||
|
|
@ -95,14 +97,7 @@ class PreCheckoutQuery(Object, Update):
|
|||
name=pre_checkout_query.info.name,
|
||||
phone_number=pre_checkout_query.info.phone,
|
||||
email=pre_checkout_query.info.email,
|
||||
shipping_address=types.ShippingAddress(
|
||||
street_line1=pre_checkout_query.info.shipping_address.street_line1,
|
||||
street_line2=pre_checkout_query.info.shipping_address.street_line2,
|
||||
city=pre_checkout_query.info.shipping_address.city,
|
||||
state=pre_checkout_query.info.shipping_address.state,
|
||||
post_code=pre_checkout_query.info.shipping_address.post_code,
|
||||
country_code=pre_checkout_query.info.shipping_address.country_iso2
|
||||
)
|
||||
shipping_address=types.ShippingAddress._parse(pre_checkout_query.info.shipping_address)
|
||||
) if pre_checkout_query.info else None,
|
||||
client=client
|
||||
)
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@
|
|||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with Pyrofork. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from pyrogram import raw
|
||||
|
||||
from ..object import Object
|
||||
|
||||
|
||||
|
|
@ -60,3 +62,17 @@ class ShippingAddress(Object):
|
|||
self.state = state
|
||||
self.post_code = post_code
|
||||
self.country_code = country_code
|
||||
|
||||
@staticmethod
|
||||
def _parse(shipping_address: "raw.types.raw.types.PostAddress") -> "ShippingAddress":
|
||||
if shipping_address is None:
|
||||
return None
|
||||
|
||||
return ShippingAddress(
|
||||
street_line1=shipping_address.street_line1,
|
||||
street_line2=shipping_address.street_line2,
|
||||
city=shipping_address.city,
|
||||
state=shipping_address.state,
|
||||
post_code=shipping_address.post_code,
|
||||
country_code=shipping_address.country_code
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
# Pyrogram - Telegram MTProto API Client Library for Python
|
||||
# Copyright (C) 2017-present Dan <https://github.com/delivrance>
|
||||
# Copyright (C) 2022-present Mayuri-Chan <https://github.com/Mayuri-Chan>
|
||||
#
|
||||
# This file is part of Pyrogram.
|
||||
#
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
# Pyrogram - Telegram MTProto API Client Library for Python
|
||||
# Copyright (C) 2017-present Dan <https://github.com/delivrance>
|
||||
# Copyright (C) 2022-present Mayuri-Chan <https://github.com/Mayuri-Chan>
|
||||
#
|
||||
# This file is part of Pyrogram.
|
||||
#
|
||||
|
|
@ -16,8 +17,6 @@
|
|||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from typing import Union, Optional
|
||||
|
||||
import pyrogram
|
||||
from pyrogram import raw, types
|
||||
|
||||
|
|
@ -49,20 +48,20 @@ class ShippingQuery(Object, Update):
|
|||
client: "pyrogram.Client" = None,
|
||||
id: str,
|
||||
from_user: "types.User",
|
||||
invoice_payload: str,
|
||||
payload: str,
|
||||
shipping_address: "types.ShippingAddress" = None
|
||||
):
|
||||
super().__init__(client)
|
||||
|
||||
self.id = id
|
||||
self.from_user = from_user
|
||||
self.invoice_payload = invoice_payload
|
||||
self.payload = payload
|
||||
self.shipping_address = shipping_address
|
||||
|
||||
@staticmethod
|
||||
async def _parse(
|
||||
client: "pyrogram.Client",
|
||||
shipping_query: "raw.types.updateBotShippingQuery",
|
||||
shipping_query: "raw.types.UpdateBotShippingQuery",
|
||||
users: dict
|
||||
) -> "types.PreCheckoutQuery":
|
||||
# Try to decode pre-checkout query payload into string. If that fails, fallback to bytes instead of decoding by
|
||||
|
|
@ -72,19 +71,12 @@ class ShippingQuery(Object, Update):
|
|||
except (UnicodeDecodeError, AttributeError):
|
||||
payload = shipping_query.payload
|
||||
|
||||
return types.PreCheckoutQuery(
|
||||
id=str(shipping_query.query_id),
|
||||
from_user=types.User._parse(client, users[shipping_query.user_id]),
|
||||
invoice_payload=payload,
|
||||
shipping_address=types.ShippingAddress(
|
||||
country_code=shipping_query.shipping_address.country_iso2,
|
||||
state=shipping_query.shipping_address.state,
|
||||
city=shipping_query.shipping_address.city,
|
||||
street_line1=shipping_query.shipping_address.street_line1,
|
||||
street_line2=shipping_query.shipping_address.street_line2,
|
||||
post_code=shipping_query.shipping_address.post_code
|
||||
),
|
||||
client=client
|
||||
return ShippingQuery(
|
||||
client=client,
|
||||
id=shipping_query.query_id,
|
||||
from_user=types.User._parse(client, users.get(shipping_query.user_id)),
|
||||
payload=payload,
|
||||
shipping_address=types.ShippingAddress._parse(shipping_query.shipping_address)
|
||||
)
|
||||
|
||||
async def answer(
|
||||
|
|
|
|||
Loading…
Reference in a new issue