/** * 群相册列表请求参数接口 */ export interface AlbumListRequest { qun_id: string; attach_info: string; seq: number; request_time_line: { request_invoke_time: string; }; album_id: string; lloc: string; batch_id: string; } /** * 创建群相册列表请求参数 * @param qunId 群号 * @param albumId 相册ID * @param seq 请求序列号,默认值为0 * @returns 请求参数对象 */ export function createAlbumListRequest ( qunId: string, albumId: string, seq: number = 0 ): AlbumListRequest { return { qun_id: qunId, attach_info: '', seq, request_time_line: { request_invoke_time: '0', }, album_id: albumId, lloc: '', batch_id: '', }; } /** * 相册媒体项请求接口 */ export interface AlbumMediaFeed { cell_common: { time: string; feed_id?: string; }; cell_user_info: { user: { uin: string; }; }; cell_media: { album_id: string; batch_id: string; media_items: Array<{ image: { lloc: string; }; }>; }; } /** * 创建相册媒体请求参数 * @param uin 用户QQ号 * @param albumId 相册ID * @param lloc 图片ID;不传或为空时评论整个上传批次 * @param batchId 上传批次ID;lloc 为空时必填 * @returns 媒体请求参数对象 */ export function createAlbumMediaFeed ( uin: string, albumId: string, lloc?: string, batchId: string = '' ): AlbumMediaFeed { if (!lloc && !batchId) { throw new Error('lloc 或 batch_id 至少需要提供一个'); } return { cell_common: { time: '', }, cell_user_info: { user: { uin, }, }, cell_media: { album_id: albumId, batch_id: batchId, media_items: lloc ? [{ image: { lloc } }] : [], }, }; } /** * 相册评论内容接口 */ export interface AlbumCommentContent { type: number; content: string; who: number; uid: string; name: string; url: string; } /** * 相册评论请求接口 */ export interface AlbumCommentReplyContent { client_key: number; content: AlbumCommentContent[]; user: { uin: string; }; like: { id: string; count: number; status: number; }; } export enum RichMsgType { KRICHMSGTYPEPLAINTEXT, KRICHMSGTYPEAT, KRICHMSGTYPEURL, KRICHMSGTYPEMEDIA, } /** * 创建相册评论请求参数 * @param uin 用户QQ号 * @param content 评论内容 * @param client_key 客户端鉴权密钥 * @returns 评论请求参数对象 */ export function createAlbumCommentRequest ( uin: string, content: string, client_key: number ): AlbumCommentReplyContent { return { client_key, // 暂时只支持纯文本吧 content: [{ type: RichMsgType.KRICHMSGTYPEPLAINTEXT, content, who: 0, uid: '', name: '', url: '', }], user: { uin, }, // QQNT 会将 like 转换为对象,即使新评论没有点赞也不能省略。 like: { id: '', count: 0, status: 0, }, }; } export interface AlbumFeedLikePublish { cell_common: { time: number; feed_id: string; }; cell_user_info: { user: { uin: string; }; }; cell_media: { album_id: string; batch_id: string | number; media_items?: { type: number; image: { lloc: string; sloc: string; }; }[]; }; cell_qun_info: { qun_id: string; }; } /** * 创建相册动态发布请求参数 * @param qunId 群号 * @param uin 用户QQ号 * @param albumId 相册ID * @param batchId 批次ID * @returns 动态发布请求参数对象 */ export function createAlbumFeedPublish ( qunId: string, uin: string, albumId: string, batchId: string ) { return { cell_common: { time: Date.now(), feed_id: `422_0_${batchId}`, // 需要补全feed_id }, cell_user_info: { user: { uin, }, }, cell_media: { album_id: albumId, batch_id: batchId, }, cell_qun_info: { qun_id: qunId, }, }; }