Skip to content
This repository has been archived by the owner on Jan 9, 2024. It is now read-only.

improve json wrapper #13

Merged
merged 1 commit into from
Sep 20, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions efb_qq_plugin_go_cqhttp/MsgDecorator.py
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,41 @@ def qq_json_wrapper(self, data, chat: Chat = None):
efb_msg = Message()
efb_msg.type = MsgType.Text
efb_msg.text = data['data']

try:
# In general, data['data'] is a JSON string
dict_data = json.loads(efb_msg.text)
if type(dict_data) != dict or 'app' not in dict_data:
return [efb_msg]

# Group of announcement
if dict_data['app'] == 'com.tencent.mannounce':
meta_mannounce = dict_data['meta']['mannounce']
efb_msg.text = "[{prompt}]\n\n{text}".format(prompt=str(base64.b64decode(meta_mannounce['title']), 'UTF-8'), text=str(base64.b64decode(meta_mannounce['text']), 'UTF-8'))

# Watch, listen and play together
elif dict_data['app'] == 'com.tencent.together':
meta_invite = dict_data['meta']['invite']
efb_msg.text = "[{prompt}]\n\n{text}\n\n{cover}".format(prompt=meta_invite['title'], text=meta_invite['summary'], cover=meta_invite['cover'])

# QQ vip card
elif dict_data['app'] == 'com.tencent.qqvip_singlepic':
efb_msg.text = efb_msg.text

# Tencent mini App (01 unknown)
elif dict_data['app'] == 'com.tencent.miniapp_01':
meta_detail1 = dict_data['meta']['detail_1']
url = meta_detail1['qqdocurl'] if 'qqdocurl' in meta_detail1 else meta_detail1['url']
efb_msg.text = "{prompt}\n\n{desc}\n\n{url}\n\n{preview}".format(prompt=dict_data['prompt'], desc=meta_detail1['desc'], url=url, preview=meta_detail1['preview'])

# Shared third-party Apps
elif dict_data['app'] == 'com.tencent.structmsg':
meta_view = dict_data['meta'][dict_data['view']]
efb_msg.text = "{prompt}\n\n{desc}\n\n{url}\n\n{preview}".format(prompt=dict_data['prompt'], desc=meta_view['desc'], url=meta_view['jumpUrl'], preview=meta_view['preview'])

except:
self.logger.error(f"json_wrapper_info: {data}\nexc_info:{sys.exc_info()[0]}")

return [efb_msg]

def qq_video_wrapper(self, data, chat: Chat = None):
Expand Down