diff --git a/src/common/utils/sign.ts b/src/common/utils/sign.ts index f289f08..5fd3032 100644 --- a/src/common/utils/sign.ts +++ b/src/common/utils/sign.ts @@ -23,14 +23,14 @@ export class MusicSign { this.url = url } - async sign(postData: MusicSignPostData): Promise { + async sign(postData: MusicSignPostData): Promise { const resp = await fetch(this.url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(postData), }) if (!resp.ok) throw new Error(resp.statusText) - const data = await resp.json() + const data = await resp.text() log('音乐消息生成成功', data) return data } diff --git a/src/ntqqapi/constructor.ts b/src/ntqqapi/constructor.ts index 134b5d6..0e03dd0 100644 --- a/src/ntqqapi/constructor.ts +++ b/src/ntqqapi/constructor.ts @@ -310,7 +310,7 @@ export class SendMsgElementConstructor { } } - static ark(data: any): SendArkElement { + static ark(data: string): SendArkElement { return { elementType: ElementType.ARK, elementId: '', diff --git a/src/onebot11/action/msg/SendMsg.ts b/src/onebot11/action/msg/SendMsg.ts index c24929b..c516b08 100644 --- a/src/onebot11/action/msg/SendMsg.ts +++ b/src/onebot11/action/msg/SendMsg.ts @@ -15,6 +15,7 @@ import { OB11MessageCustomMusic, OB11MessageData, OB11MessageDataType, + OB11MessageJson, OB11MessageMixType, OB11MessageMusic, OB11MessageNode, @@ -383,34 +384,32 @@ export class SendMsg extends BaseAction { } catch (e) { throw '发送转发消息失败 ' + e.toString() } - } else { - if (this.getSpecialMsgNum(payload, OB11MessageDataType.music)) { - const music = messages[0] as OB11MessageMusic - if (music) { - const { musicSignUrl } = getConfigUtil().getConfig() - if (!musicSignUrl) { - throw '音乐签名地址未配置' - } - const { type } = music.data - if (!['qq', '163', 'custom'].includes(type)) { - throw `不支持的音乐类型 ${type}` - } - const postData: MusicSignPostData = { ...music.data } - if (type === 'custom' && music.data.content) { - ;(postData as CustomMusicSignPostData).singer = music.data.content - delete (postData as OB11MessageCustomMusic['data']).content - } - let jsonContent: string - try { - jsonContent = await new MusicSign(musicSignUrl).sign(postData) - } catch (e) { - throw `签名音乐消息失败:${e}` - } - messages[0] = { - type: OB11MessageDataType.json, - data: { data: jsonContent }, - } + } else if (this.getSpecialMsgNum(payload, OB11MessageDataType.music)) { + const music = messages[0] as OB11MessageMusic + if (music) { + const { musicSignUrl } = getConfigUtil().getConfig() + if (!musicSignUrl) { + throw '音乐签名地址未配置' } + const { type } = music.data + if (!['qq', '163', 'custom'].includes(type)) { + throw `不支持的音乐类型 ${type}` + } + const postData: MusicSignPostData = { ...music.data } + if (type === 'custom' && music.data.content) { + ;(postData as CustomMusicSignPostData).singer = music.data.content + delete (postData as OB11MessageCustomMusic['data']).content + } + let jsonContent: string + try { + jsonContent = await new MusicSign(musicSignUrl).sign(postData) + } catch (e) { + throw `签名音乐消息失败:${e}` + } + messages[0] = { + type: OB11MessageDataType.json, + data: { data: jsonContent }, + } as OB11MessageJson } } // log("send msg:", peer, sendElements) @@ -579,41 +578,41 @@ export class SendMsg extends BaseAction { } } - private genMusicElement(url: string, audio: string, title: string, content: string, image: string): SendArkElement { - const musicJson = { - app: 'com.tencent.structmsg', - config: { - ctime: 1709689928, - forward: 1, - token: '5c1e4905f926dd3a64a4bd3841460351', - type: 'normal', - }, - extra: { app_type: 1, appid: 100497308, uin: selfInfo.uin }, - meta: { - news: { - action: '', - android_pkg_name: '', - app_type: 1, - appid: 100497308, - ctime: 1709689928, - desc: content || title, - jumpUrl: url, - musicUrl: audio, - preview: image, - source_icon: 'https://p.qpic.cn/qqconnect/0/app_100497308_1626060999/100?max-age=2592000&t=0', - source_url: '', - tag: 'QQ音乐', - title: title, - uin: selfInfo.uin, - }, - }, - prompt: content || title, - ver: '0.0.0.1', - view: 'news', - } + // private genMusicElement(url: string, audio: string, title: string, content: string, image: string): SendArkElement { + // const musicJson = { + // app: 'com.tencent.structmsg', + // config: { + // ctime: 1709689928, + // forward: 1, + // token: '5c1e4905f926dd3a64a4bd3841460351', + // type: 'normal', + // }, + // extra: { app_type: 1, appid: 100497308, uin: selfInfo.uin }, + // meta: { + // news: { + // action: '', + // android_pkg_name: '', + // app_type: 1, + // appid: 100497308, + // ctime: 1709689928, + // desc: content || title, + // jumpUrl: url, + // musicUrl: audio, + // preview: image, + // source_icon: 'https://p.qpic.cn/qqconnect/0/app_100497308_1626060999/100?max-age=2592000&t=0', + // source_url: '', + // tag: 'QQ音乐', + // title: title, + // uin: selfInfo.uin, + // }, + // }, + // prompt: content || title, + // ver: '0.0.0.1', + // view: 'news', + // } - return SendMsgElementConstructor.ark(musicJson) - } + // return SendMsgElementConstructor.ark(musicJson) + // } } export default SendMsg diff --git a/src/onebot11/types.ts b/src/onebot11/types.ts index 3dd281b..c3393a9 100644 --- a/src/onebot11/types.ts +++ b/src/onebot11/types.ts @@ -234,7 +234,7 @@ export type OB11MessageMusic = OB11MessageIdMusic | OB11MessageCustomMusic export interface OB11MessageJson { type: OB11MessageDataType.json - data: { config: { token: string } } & any + data: { data: string /* , config: { token: string } */ } } export type OB11MessageData =