60 lines
1.7 KiB
Python
60 lines
1.7 KiB
Python
from typing import Literal
|
|
|
|
from service.wecom.exceptions.general import SDKException
|
|
from service.wecom.modules.base import WecomBaseClient
|
|
from service.wecom.schemas.message import (
|
|
MessageParams,
|
|
RecallMessageInfo,
|
|
RecallMessageParams,
|
|
SendMessageInfo,
|
|
)
|
|
from service.wecom.utils.requests import HttpxRequest
|
|
|
|
|
|
class WecomMessageClient(WecomBaseClient):
|
|
async def send_message(
|
|
self,
|
|
data: MessageParams,
|
|
) -> str:
|
|
"""
|
|
企业微信发送消息
|
|
@param data: 发送消息的参数
|
|
各类消息的参数详情 https://developer.work.weixin.qq.com/document/path/90236
|
|
|
|
@return: 消息ID
|
|
"""
|
|
url = self.BASE_URL + "/message/send"
|
|
params = {"access_token": await self.access_token}
|
|
|
|
data = data.model_dump()
|
|
|
|
resp = SendMessageInfo(
|
|
**await HttpxRequest.post(url=url, params=params, json=data)
|
|
)
|
|
|
|
if resp.errcode == 0:
|
|
return resp.msgid
|
|
else:
|
|
raise SDKException(resp.errcode, resp.errmsg)
|
|
|
|
async def recall_message(self, data: RecallMessageParams) -> bool:
|
|
"""
|
|
企业微信撤回消息
|
|
@param msgid: 消息ID
|
|
|
|
@return: 撤回状态(Boolean)
|
|
"""
|
|
data = data.model_dump()
|
|
|
|
url = self.BASE_URL + "/message/recall"
|
|
params = {"access_token": await self.access_token}
|
|
|
|
resp = RecallMessageInfo(
|
|
**await HttpxRequest.post(url=url, params=params, json=data)
|
|
)
|
|
|
|
if resp.errcode == 0:
|
|
return True
|
|
else:
|
|
raise SDKException(resp.errcode, resp.errmsg)
|