diff --git a/itchat/__init__.py b/itchat/__init__.py index dfc19acd..256fc721 100644 --- a/itchat/__init__.py +++ b/itchat/__init__.py @@ -51,6 +51,7 @@ def new_instance(): send_image = originInstance.send_image send_video = originInstance.send_video send = originInstance.send +revoke = originInstance.revoke # components.hotreload dump_login_status = originInstance.dump_login_status load_login_status = originInstance.load_login_status diff --git a/itchat/components/messages.py b/itchat/components/messages.py index 8f00bab1..8374f24a 100644 --- a/itchat/components/messages.py +++ b/itchat/components/messages.py @@ -21,6 +21,7 @@ def load_messages(core): core.send_image = send_image core.send_video = send_video core.send = send + core.revoke = revoke def get_download_fn(core, url, msgId): def download_fn(downloadDir=None): @@ -506,3 +507,17 @@ def send(self, msg, toUserName=None, mediaId=None): else: r = self.send_msg(msg, toUserName) return r + +def revoke(self, localID, msgID, toUserName): + url = '%s/webwxrevokemsg' % self.loginInfo['url'] + data = { + 'BaseRequest': self.loginInfo['BaseRequest'], + "ClientMsgId": localID, + "SvrMsgId": msgID, + "ToUserName": toUserName} + headers = { + 'ContentType': 'application/json; charset=UTF-8', + 'User-Agent' : config.USER_AGENT } + r = self.s.post(url, headers=headers, + data=json.dumps(data, ensure_ascii=False).encode('utf8')) + return ReturnValue(rawResponse=r) diff --git a/itchat/core.py b/itchat/core.py index ba384ced..59d9763d 100644 --- a/itchat/core.py +++ b/itchat/core.py @@ -369,6 +369,15 @@ def send(self, msg, toUserName=None, mediaId=None): it is defined in components/messages.py ''' raise NotImplementedError() + def revoke(self, localID, msgID, toUserName=None): + ''' revoke message with its LocalID and MsgID + for options + - localID: message ID at local + - msgID: message ID on server + - toUserName: 'UserName' key of friend dict + it is defined in components/messages.py + ''' + raise NotImplementedError() def dump_login_status(self, fileDir=None): ''' dump login status to a specific file for option