diff --git a/botpy/api.py b/botpy/api.py index c1c5b50..ec883eb 100644 --- a/botpy/api.py +++ b/botpy/api.py @@ -571,6 +571,27 @@ async def recall_message(self, channel_id: str, message_id: str, hidetip: bool = ) return await self._http.request(route, params=params) + async def recall_group_message(self, group_openid: str, message_id: str) -> str: + """ + 撤回群消息。 + + 用于撤回机器人发送在当前群 group_openid 的消息 message_id,发送超出2分钟的消息不可撤回 + + Args: + group_openid (str): 群聊的 openid + message_id (str): 要撤回的消息的 ID。 + + Returns: + 成功执行返回`None`。 + """ + route = Route( + "DELETE", + "/v2/groups/{group_openid}/messages/{message_id}", + group_openid=group_openid, + message_id=message_id, + ) + return await self._http.request(route) + async def post_keyboard_message( self, channel_id: str, @@ -1473,8 +1494,9 @@ async def post_group_file( self, group_openid: str, file_type: int, - url: str, + url: str = None, srv_send_msg: bool = False, + file_data: str = None, ) -> message.Media: """ 上传/发送群聊图片 @@ -1484,6 +1506,7 @@ async def post_group_file( file_type (int): 媒体类型:1 图片png/jpg,2 视频mp4,3 语音silk,4 文件(暂不开放) url (str): 需要发送媒体资源的url srv_send_msg (bool): 设置 true 会直接发送消息到目标端,且会占用主动消息频次 + file_data (str): 要发送的本地图像的Base64数据 """ payload = locals() payload.pop("self", None) diff --git a/botpy/logging.py b/botpy/logging.py index eee82be..3b5d463 100644 --- a/botpy/logging.py +++ b/botpy/logging.py @@ -135,7 +135,7 @@ def configure_logging( ) if _format is not None: - logging.basicConfig(format=_format) + logging.basicConfig(format=_format, force=True) if level is not None: for name, logger in logs.items(): diff --git a/botpy/message.py b/botpy/message.py index 20918b4..597e65a 100644 --- a/botpy/message.py +++ b/botpy/message.py @@ -252,6 +252,7 @@ def __repr__(self): class _User: def __init__(self, data): + self.id = data.get("id", None) self.member_openid = data.get("member_openid", None) def __repr__(self): @@ -259,7 +260,8 @@ def __repr__(self): async def reply(self, **kwargs): return await self._api.post_group_message(group_openid=self.group_openid, msg_id=self.id, **kwargs) - + + class C2CMessage(BaseMessage): __slots__ = ("author",) diff --git a/botpy/types/message.py b/botpy/types/message.py index e916469..304726e 100644 --- a/botpy/types/message.py +++ b/botpy/types/message.py @@ -65,6 +65,7 @@ class KeyboardPayload(TypedDict, total=False): id: str content: Keyboard + class Media(TypedDict): file_uuid: str # 文件ID file_info: str # 文件信息,用于发消息接口的media字段使用 @@ -121,3 +122,19 @@ class DeletionOperator(TypedDict): class DeletedMessageInfo(TypedDict): message: DeletedMessage op_user: DeletionOperator + + +class FileType(Enum): + image = 1 + video = 2 + audio = 3 + file = 4 + + +class GroupMessageType(Enum): + text = 0 + text_image = 1 + markdown = 2 + ark = 3 + embed = 4 + media = 7