From f302796ba5f2e71eb6ec81d145cfa0e7f337c9a8 Mon Sep 17 00:00:00 2001 From: Shigma Date: Fri, 15 Dec 2023 14:11:30 +0800 Subject: [PATCH] fix(wechat): fix missing properties, fix #193 --- adapters/wechat-official/package.json | 2 +- adapters/wechat-official/src/bot.ts | 4 ++++ adapters/wechat-official/src/utils.ts | 6 +++--- adapters/wecom/package.json | 2 +- adapters/wecom/src/bot.ts | 4 ++++ adapters/wecom/src/message.ts | 10 ++++++++-- adapters/wecom/src/utils.ts | 6 +++--- 7 files changed, 24 insertions(+), 10 deletions(-) diff --git a/adapters/wechat-official/package.json b/adapters/wechat-official/package.json index b14eac8e..7f99b753 100644 --- a/adapters/wechat-official/package.json +++ b/adapters/wechat-official/package.json @@ -1,7 +1,7 @@ { "name": "@satorijs/adapter-wechat-official", "description": "Wechat Official Adapter for Satorijs", - "version": "2.0.6", + "version": "2.1.1", "main": "lib/index.js", "typings": "lib/index.d.ts", "files": [ diff --git a/adapters/wechat-official/src/bot.ts b/adapters/wechat-official/src/bot.ts index 445417d9..b96604f7 100644 --- a/adapters/wechat-official/src/bot.ts +++ b/adapters/wechat-official/src/bot.ts @@ -79,6 +79,10 @@ export class WechatOfficialBot extends Bot(bot: WechatOfficialBot session.timestamp = message.CreateTime * 1000 session.wechatOfficial = message session.userId = message.FromUserName - // session.channelId = session.userId + session.channelId = session.userId // session.guildId = session.userId session.messageId = message.MsgId if (message.MsgType === 'text') { @@ -24,13 +24,13 @@ export async function decodeMessage(bot: WechatOfficialBot } else if (message.MsgType === 'voice') { session.isDirect = true session.type = 'message' - session.elements = [h.audio(`${bot.ctx.server.config.selfUrl}/wechat-official/assets/${bot.selfId}/${message.MediaId}`)] + session.elements = [h.audio(bot.$toMediaUrl(message.MediaId))] // https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/Get_temporary_materials.html return session } else if (message.MsgType === 'video') { session.isDirect = true session.type = 'message' - session.elements = [h.video(`${bot.ctx.server.config.selfUrl}/wechat-official/assets/${bot.selfId}/${message.MediaId}`)] + session.elements = [h.video(bot.$toMediaUrl(message.MediaId))] // const { video_url } = await bot.getMedia(message.MediaId) // session.elements = [h.video(video_url)] return session diff --git a/adapters/wecom/package.json b/adapters/wecom/package.json index 0b190397..307e88f2 100644 --- a/adapters/wecom/package.json +++ b/adapters/wecom/package.json @@ -1,7 +1,7 @@ { "name": "@satorijs/adapter-wecom", "description": "Wecom Adapter for Satorijs", - "version": "2.0.6", + "version": "2.1.1", "main": "lib/index.js", "typings": "lib/index.d.ts", "files": [ diff --git a/adapters/wecom/src/bot.ts b/adapters/wecom/src/bot.ts index 46d36d94..3ba81118 100644 --- a/adapters/wecom/src/bot.ts +++ b/adapters/wecom/src/bot.ts @@ -56,6 +56,10 @@ export class WecomBot extends Bot { const data = await this.http.get('/cgi-bin/user/get', { diff --git a/adapters/wecom/src/message.ts b/adapters/wecom/src/message.ts index f1aaddbe..e8843f9c 100644 --- a/adapters/wecom/src/message.ts +++ b/adapters/wecom/src/message.ts @@ -6,13 +6,19 @@ import FormData from 'form-data' export class WecomMessageEncoder extends MessageEncoder> { buffer = '' - upsertSend(msgId: string) { + + upsertSend(msgId: string, payload: any) { const session = this.bot.session() session.type = 'message' session.messageId = msgId session.isDirect = true session.userId = this.bot.selfId session.timestamp = new Date().valueOf() + session.elements = payload.msgtype === 'text' + ? [h.text(payload.text.content)] + : [h(payload.msgtype === 'voice' ? 'audio' : payload.msgtype, { + src: this.bot.$toMediaUrl(payload[payload.msgtype].media_id), + })] session.app.emit(session, 'send', session) this.results.push(session.event.message) } @@ -29,7 +35,7 @@ export class WecomMessageEncoder extends MessageEnc params: { access_token: this.bot.token }, }) - this.upsertSend(msgid) + this.upsertSend(msgid, payload) } async flushMedia(element: h) { diff --git a/adapters/wecom/src/utils.ts b/adapters/wecom/src/utils.ts index 9c7b7f1f..2d652b21 100644 --- a/adapters/wecom/src/utils.ts +++ b/adapters/wecom/src/utils.ts @@ -8,7 +8,7 @@ export async function decodeMessage(bot: WecomBot, message // session.wechatOfficial = message session.guildId = bot.config.corpId session.userId = message.FromUserName - // session.channelId = session.userId + session.channelId = session.userId // session.guildId = session.userId session.messageId = message.MsgId if (message.MsgType === 'text') { @@ -24,13 +24,13 @@ export async function decodeMessage(bot: WecomBot, message } else if (message.MsgType === 'voice') { session.isDirect = true session.type = 'message' - session.elements = [h.audio(`${bot.ctx.server.config.selfUrl}/wecom/assets/${bot.selfId}/${message.MediaId}`)] + session.elements = [h.audio(bot.$toMediaUrl(message.MediaId))] // https://developer.work.weixin.qq.com/document/path/90254 return session } else if (message.MsgType === 'video') { session.isDirect = true session.type = 'message' - session.elements = [h.video(`${bot.ctx.server.config.selfUrl}/wecom/assets/${bot.selfId}/${message.MediaId}`)] + session.elements = [h.video(bot.$toMediaUrl(message.MediaId))] return session } else if (message.MsgType === 'location') { session.isDirect = true