UNPKG

koishi-plugin-adapter-iirose

Version:
65 lines (56 loc) 1.59 kB
// src/decoder/messages/Leaderboard.ts import { parseAvatar } from "../../utils/utils"; export interface LeaderboardUser { name: string; someNumber: string; unknownData: string; avatar: string; uid: string; balance: string; } export interface Leaderboard { timestamp: string; users: LeaderboardUser[]; } /** * 解析排行榜数据 * @param message 消息 * @returns {Leaderboard | null} */ export const parseLeaderboard = (message: string): Leaderboard | null => { if (!message.startsWith('`#')) { return null; } const content = message.substring(2); if (!content) return null; const timestampEndIndex = content.indexOf('"'); if (timestampEndIndex === -1) { return null; // 格式不正确 } const timestamp = content.substring(0, timestampEndIndex); const usersData = content.substring(timestampEndIndex + 1); const userStrings = usersData.split('<'); const users: LeaderboardUser[] = userStrings.map(userString => { if (userString.trim() === '') return null; const parts = userString.split('>'); if (parts.length >= 6) { // 至少需要7个部分,因为有一个是空的 return { name: parts[0], someNumber: parts[1], unknownData: parts[3], avatar: parseAvatar(parts[4]), uid: parts[5], balance: parts[6], }; } return null; }).filter(Boolean) as LeaderboardUser[]; return { timestamp, users }; };