/** * BBS 请求模块 * @since Beta v0.7.3 */ import { getRequestHeader } from "@utils/getRequestHeader.js"; import TGHttp from "@utils/TGHttp.js"; /* MysBBSBaseUrl => mbBu */ const mbBu: Readonly = "https://bbs-api.miyoushe.com/"; /** * 获取表情包列表 * @since Beta v0.7.3 * @returns 转换后的表情包列表 */ async function getEmoticonSet(): Promise | TGApp.BBS.Response.Base> { const resp = await TGHttp(`${mbBu}misc/api/emoticon_set`, { method: "GET", }); if (resp.retcode !== 0) return resp; const emojis: Record = {}; for (const series of resp.data.list) { for (const emoji of series.list) { emojis[emoji.name] = emoji.icon; } } return emojis; } /** * 根据 cookie 获取用户信息 * @since Beta v0.5.0 * @param cookie - 账户 cookie * @returns 用户信息 */ async function getUserFullInfo( cookie: TGApp.App.Account.Cookie, ): Promise { const ck = { cookie_token: cookie.cookie_token, account_id: cookie.account_id }; const params = { gids: "2" }; const resp = await TGHttp(`${mbBu}user/wapi/getUserFullInfo`, { method: "GET", headers: getRequestHeader(ck, "GET", params, "X4", true), query: params, }); if (resp.retcode !== 0) return resp; return resp.data.user_info; } /** * 根据gid和id获取用户信息 * @since Beta v0.7.2 * @param gid - gid * @param userId - 用户 id * @returns 用户信息 */ async function getOtherUserInfo( gid: string, userId: string, ): Promise { const params = { gids: gid.toString(), uid: userId }; const resp = await TGHttp(`${mbBu}user/wapi/getUserFullInfo`, { method: "GET", headers: getRequestHeader({}, "GET", params, "X4", true), query: params, }); if (resp.retcode !== 0) return resp; return resp.data.user_info; } /** * 获取合集信息 * @since Beta v0.7.3 * @TODO salt计算异常 * @param cid - 合集 id * @param gid - gid * @returns 合集信息 */ async function getCollectionDetail( cid: string, gid: number, ): Promise { const params = { gids: gid, id: cid }; const resp = await TGHttp( `${mbBu}collection/wapi/collection/detail`, { method: "GET", headers: getRequestHeader({}, "GET", params, "X4", true), query: params, }, ); if (resp.retcode !== 0) return resp; return resp.data; } const bbsReq = { collection: getCollectionDetail, emojis: getEmoticonSet, userInfo: getUserFullInfo, otherUserInfo: getOtherUserInfo, }; export default bbsReq;