bugfix
This commit is contained in:
parent
14c85ca342
commit
9ede3ae93d
20
woa/init.py
20
woa/init.py
@ -178,27 +178,27 @@ class WOAHandler:
|
||||
rzt_dic.media_id = await self.media_manager.upload_media(rzt_dic.msgtype, rzt_dic.media_filepath)
|
||||
return rzt_dic
|
||||
|
||||
async def build_reply(self, msg:DictObject, rzt_msg:DictObject):
|
||||
async def build_reply(self, msg:DictObject, rzt_msg:DictObject, timestamp):
|
||||
"""
|
||||
ImageReply, VoiceReply, VideoReply,
|
||||
ArticlesReply, MusicReply
|
||||
"""
|
||||
if rzt_msg.msgtype == 'text':
|
||||
reply = ReplyBuilder.text(msg, content=rzt_msg.content)
|
||||
reply = ReplyBuilder.text(msg, content=rzt_msg.content, create_time=timestamp)
|
||||
return reply
|
||||
if rzt_msg.msgtype in ['image', 'video', 'voice']:
|
||||
rzt_msg.media_id = await self.upload_media(rzt_msg.msgtype,
|
||||
rzt_msg.media_file)
|
||||
if rzt_msg.msgtype == 'image':
|
||||
reply = ReplyBuilder.image(msg, media_id=rzt_msg.media_id)
|
||||
reply = ReplyBuilder.image(msg, media_id=rzt_msg.media_id, create_time=timestamp)
|
||||
return reply
|
||||
if rzt_msg.msgtype == 'voice':
|
||||
reply = ReplyBuilder.voice(msg, media_id=rzt_msg.media_id)
|
||||
reply = ReplyBuilder.voice(msg, media_id=rzt_msg.media_id, create_time=timestamp)
|
||||
return reply
|
||||
if rzt_msg.msgtype == 'video':
|
||||
reply = ReplyBuilder.video(msg, title=rzt_msg.title,
|
||||
media_id=rzt_msg.media_id,
|
||||
description=rzt_msg.description)
|
||||
description=rzt_msg.description, create_time=timestamp)
|
||||
return reply
|
||||
if rzt_msg.msgtype == 'music':
|
||||
reply = ReplyBuilder.music(msg,
|
||||
@ -207,10 +207,10 @@ class WOAHandler:
|
||||
music_url=rzt_msg.music_url, # 核心:播放链接
|
||||
hq_music_url=rzt_msg.hq_music_url, # 核心:高质量链接
|
||||
thumb_media_id=media_id # 核心:封面图 media_id
|
||||
)
|
||||
, create_time=timestamp)
|
||||
return reply
|
||||
if rzt_msg.msgtype == 'news':
|
||||
reply = ReplyBuilder.news(msg, rzt_msg.articles)
|
||||
reply = ReplyBuilder.news(msg, rzt_msg.articles, create_time=timestamp)
|
||||
return reply
|
||||
|
||||
async def handle_post(self, request: web.Request) -> web.Response:
|
||||
@ -250,14 +250,14 @@ class WOAHandler:
|
||||
# --- 业务逻辑 ---
|
||||
reply_dic = await self.msghandle(msg_dict)
|
||||
debug(f'返回的消息:{reply_dic}')
|
||||
reply_xml = await self.build_reply(msg_dict, reply_dic)
|
||||
timestamp = str(int(time.time()))
|
||||
nonce = ''.join([str(random.randint(0, 9)) for _ in range(10)])
|
||||
reply_xml = await self.build_reply(msg_dict, reply_dic, timestamp)
|
||||
debug(f'收到微信消息:{msg_dict} 返回:{reply_xml}')
|
||||
|
||||
# 5. 如果需要加密回复
|
||||
if self.aes_key and reply_xml:
|
||||
# 1. 生成新的时间戳和随机数 (不要用请求里的旧数据)
|
||||
timestamp = str(int(time.time()))
|
||||
nonce = ''.join([str(random.randint(0, 9)) for _ in range(10)])
|
||||
encrypted_xml_str = self._encrypt_msg(reply_xml, nonce, timestamp)
|
||||
try:
|
||||
decode_data = self._decrypt_msg(encrypted_xml_str)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user