39 lines
1.4 KiB
Python
39 lines
1.4 KiB
Python
|
|
UPGRADE_CONFIG_URL = "/cgi-bin/kf/customer/get_upgrade_service_config"
|
||
|
|
UPGRADE_SERVICE_URL = "/cgi-bin/kf/customer/upgrade_service"
|
||
|
|
CANCEL_UPGRADE_URL = "/cgi-bin/kf/customer/cancel_upgrade_service"
|
||
|
|
|
||
|
|
|
||
|
|
class WeChatKFUpgradeManager:
|
||
|
|
def __init__(self, gateway):
|
||
|
|
self._gateway = gateway
|
||
|
|
|
||
|
|
async def get_config(self, open_kfid: str) -> dict:
|
||
|
|
return await self._post(UPGRADE_CONFIG_URL, {"open_kfid": open_kfid})
|
||
|
|
|
||
|
|
async def upgrade(
|
||
|
|
self,
|
||
|
|
open_kfid: str,
|
||
|
|
external_user_id: str,
|
||
|
|
servicer_userid: str | None = None,
|
||
|
|
chat_id: str | None = None,
|
||
|
|
) -> dict:
|
||
|
|
payload = {"open_kfid": open_kfid, "external_user_id": external_user_id}
|
||
|
|
if servicer_userid:
|
||
|
|
payload["type"] = 1
|
||
|
|
payload["member"] = {"userid": servicer_userid}
|
||
|
|
elif chat_id:
|
||
|
|
payload["type"] = 2
|
||
|
|
payload["groupchat"] = {"chat_id": chat_id}
|
||
|
|
return await self._post(UPGRADE_SERVICE_URL, payload)
|
||
|
|
|
||
|
|
async def cancel(self, open_kfid: str, external_user_id: str) -> dict:
|
||
|
|
return await self._post(
|
||
|
|
CANCEL_UPGRADE_URL,
|
||
|
|
{"open_kfid": open_kfid, "external_user_id": external_user_id},
|
||
|
|
)
|
||
|
|
|
||
|
|
async def _post(self, url: str, payload: dict) -> dict:
|
||
|
|
token = await self._gateway.get_access_token()
|
||
|
|
resp = await self._gateway._http.post(url, params={"access_token": token}, json=payload)
|
||
|
|
return resp.json()
|