/** * painter 下的请求 * @since Beta v0.9.9 */ import bbsEnum from "@enum/bbs.js"; import { getRequestHeader } from "@utils/getRequestHeader.js"; import TGHttp from "@utils/TGHttp.js"; // BBSApiPainterBaseUrl => bapBu const bapBu: Readonly = "https://bbs-api.miyoushe.com/painter/wapi/"; /** * 获取 News 列表 * @since Beta v0.7.1 * @param gid - GID * @param newsType - 资讯类型: 1 为公告,2 为活动,3 为资讯 * @param pageSize - 返回数量 * @param lastId - 上一次请求的最后一条数据的 id * @returns News 列表响应数据 */ async function getNewsList( gid: string = "2", newsType: TGApp.BBS.Post.NewsTypeEnum = bbsEnum.post.newsType.NEWS, pageSize: number = 20, lastId: number = 0, ): Promise { return ( await TGHttp(`${bapBu}getNewsList`, { method: "GET", headers: { "Content-Type": "application/json" }, query: { gids: gid, page_size: pageSize, type: newsType, last_id: lastId }, }) ).data; } /** * 获取最近版块热门帖子列表 * @since Beta v0.7.9 * @param forumId - 版块 ID * @param gid - 社区 ID * @param pageSize - 每页数量 * @param lastId - 最后 ID * @returns 帖子列表数据 */ async function getHotForumPostList( forumId: number, gid: number, lastId?: string, pageSize: number = 20, ): Promise { type ReqParams = { forum_id: number; gids: number; page_size: number; is_good: boolean; last_id?: string; }; const params: ReqParams = { forum_id: forumId, gids: gid, page_size: pageSize, is_good: false, }; if (lastId) params.last_id = lastId; return ( await TGHttp(`${bapBu}getHotForumPostList`, { method: "GET", query: params, headers: { cookie: "" }, }) ).data; } /** * 获取最近版块帖子列表 * @since Beta v0.9.9 * @param forumId - 版块 ID * @param gid - 社区 ID * @param type - 排序方式: 1-最新回复,2-最新发布 * @param lastId - 最后 ID * @param pageSize - 每页数量 * @param cookie - 用户 Cookie * @returns 帖子列表数据 */ async function getRecentForumPostList( forumId: number, gid: number, type: TGApp.BBS.Post.ForumSortTypeEnum = bbsEnum.post.forumSortType.LATEST_REPLY, lastId?: string, pageSize: number = 20, cookie?: Record, ): Promise { type ReqParams = { forum_id: number; gids: number; sort_type: TGApp.BBS.Post.ForumSortTypeEnum; is_good: boolean; page_size: number; last_id?: string; }; const params: ReqParams = { forum_id: forumId, gids: gid, sort_type: type, is_good: false, page_size: pageSize, }; if (lastId) params.last_id = lastId; let header: Record = { cookie: "" }; if (cookie) header = getRequestHeader(cookie, "GET", params); return ( await TGHttp(`${bapBu}getRecentForumPostList`, { method: "GET", query: params, headers: header, }) ).data; } /** * 获取关注动态帖子 * @since Beta v0.7.2 * @param cookie - 用户 Cookie * @param offset - 偏移量 * @returns 帖子 */ async function getTimelineList( cookie: TGApp.App.Account.Cookie, offset?: number, ): Promise { let param: Record = { gids: 0, size: 20 }; if (offset) param = { ...param, offset }; const ck = { ltoken: cookie.ltoken, ltuid: cookie.ltuid }; const header = getRequestHeader(ck, "GET", param, "X4", true); const resp = await TGHttp( `${bapBu}timeline/list`, { method: "GET", headers: header, query: param, }, ); if (resp.retcode !== 0) return resp; return resp.data; } /** * 获取抽奖信息 * @since Beta v0.7.1 * @param lotteryId - 抽奖 ID * @returns 抽奖详情 */ async function lotteryUserShow( lotteryId: string, ): Promise { const resp = await TGHttp( `${bapBu}lottery/user/show`, { method: "GET", headers: { "Content-Type": "application/json" }, query: { id: lotteryId }, }, ); if (resp.retcode !== 0) return resp; return resp.data.show_lottery; } const painterReq = { forum: { hot: getHotForumPostList, recent: getRecentForumPostList, }, follow: getTimelineList, lottery: lotteryUserShow, news: getNewsList, }; export default painterReq;