最后活跃于 3 weeks ago

interpolate 原始文件
1export function interpolate(
2 message: string,
3 username: string,
4 serverNickname: string | null,
5 globalNickname: string | null,
6 aliases: string[]
7): string {
8 const displayName = serverNickname ?? globalNickname ?? username;
9 const dt = getNow();
10
11 let result = message
12 .replace(/\{username\}/g, username)
13 .replace(/\{server_nickname\}/g, serverNickname ?? displayName)
14 .replace(/\{nickname\}/g, globalNickname ?? username)
15 .replace(/\{alias\[random\]\}/g, () =>
16 aliases.length > 0 ? aliases[Math.floor(Math.random() * aliases.length)] : displayName
17 )
18 .replace(/\{alias\[(\d+)\]\}/g, (_, i: string) => aliases[parseInt(i)] ?? displayName)
19 .replace(/\{alias\}/g, aliases[0] ?? displayName)
20 .replace(/\{DAY\}/g, dt.dayName.toUpperCase())
21 .replace(/\{Day\}/g, dt.dayName.charAt(0).toUpperCase() + dt.dayName.slice(1))
22 .replace(/\{day\}/g, dt.dayName)
23 .replace(/\{MONTH\}/g, dt.monthName.toUpperCase())
24 .replace(/\{Month\}/g, dt.monthName.charAt(0).toUpperCase() + dt.monthName.slice(1))
25 .replace(/\{month\}/g, dt.monthName)
26 .replace(/\{month_num\}/g, String(dt.monthNum).padStart(2, "0"))
27 .replace(/\{date_full\}/g, `${String(dt.dayNum).padStart(2,"0")}-${String(dt.monthNum).padStart(2,"0")}-${dt.yearNum}`)
28 .replace(/\{date\}/g, dt.dateKey)
29 .replace(/\{day_num\}/g, String(dt.dayNum).padStart(2, "0"));
30
31 return resolveEmojiTokens(result);
32}