@zhin.js/plugin-music 1.1.15 → 1.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/commands/cookie/delete/[source]/index.js +8 -7
  2. package/commands/cookie/delete/[source]/index.ts +8 -7
  3. package/commands/cookie/get/[source]/index.js +10 -9
  4. package/commands/cookie/get/[source]/index.ts +10 -9
  5. package/commands/cookie/set/[source]/index.js +8 -7
  6. package/commands/cookie/set/[source]/index.ts +8 -7
  7. package/commands/cookie/status/index.js +7 -7
  8. package/commands/cookie/status/index.ts +7 -7
  9. package/commands/login/[platform]/index.js +22 -18
  10. package/commands/login/[platform]/index.ts +23 -19
  11. package/commands//347/202/271/346/255/214/[keyword]/index.js +13 -9
  12. package/commands//347/202/271/346/255/214/[keyword]/index.ts +13 -9
  13. package/lib/i18n.d.ts +6 -0
  14. package/lib/i18n.d.ts.map +1 -0
  15. package/lib/i18n.js +50 -0
  16. package/lib/i18n.js.map +1 -0
  17. package/lib/login/index.d.ts +5 -2
  18. package/lib/login/index.d.ts.map +1 -1
  19. package/lib/login/index.js +13 -10
  20. package/lib/login/index.js.map +1 -1
  21. package/lib/login/netease.d.ts +3 -2
  22. package/lib/login/netease.d.ts.map +1 -1
  23. package/lib/login/netease.js +10 -9
  24. package/lib/login/netease.js.map +1 -1
  25. package/lib/login/qq.d.ts +2 -1
  26. package/lib/login/qq.d.ts.map +1 -1
  27. package/lib/login/qq.js +12 -11
  28. package/lib/login/qq.js.map +1 -1
  29. package/lib/login/types.d.ts +3 -2
  30. package/lib/login/types.d.ts.map +1 -1
  31. package/lib/login/types.js.map +1 -1
  32. package/lib/music-lib.d.ts +3 -2
  33. package/lib/music-lib.d.ts.map +1 -1
  34. package/lib/music-lib.js +8 -7
  35. package/lib/music-lib.js.map +1 -1
  36. package/lib/session.d.ts +7 -10
  37. package/lib/session.d.ts.map +1 -1
  38. package/lib/session.js +9 -8
  39. package/lib/session.js.map +1 -1
  40. package/middlewares/music-selection/index.js +9 -7
  41. package/middlewares/music-selection/index.ts +9 -6
  42. package/package.json +11 -10
  43. package/skills/music/tools/music-share/index.js +1 -1
  44. package/skills/music/tools/music-share/index.ts +1 -1
  45. package/src/i18n.ts +50 -0
  46. package/src/login/index.ts +16 -10
  47. package/src/login/netease.ts +11 -9
  48. package/src/login/qq.ts +13 -11
  49. package/src/login/types.ts +3 -2
  50. package/src/music-lib.ts +9 -7
  51. package/src/session.ts +13 -11
package/lib/i18n.js ADDED
@@ -0,0 +1,50 @@
1
+ import { createMessages } from 'zhin.js/i18n';
2
+ import { SOURCE_DISPLAY_NAME } from './config.js';
3
+ export const messages = createMessages({
4
+ loginAborted: { 'zh-CN': '登录已取消', en: 'Login cancelled.' },
5
+ keyword: { 'zh-CN': "请输入歌曲名称", en: "Enter a song name." },
6
+ usage: { 'zh-CN': "用法:{command}", en: "Usage: {command}" },
7
+ sources: { 'zh-CN': "支持音乐源:{sources}", en: "Music sources: {sources}" },
8
+ noResults: { 'zh-CN': "[{source}] 未找到相关歌曲", en: "[{source}] No matching songs found." },
9
+ noMatch: { 'zh-CN': "[{source}] 未找到\"{keyword}\"相关歌曲", en: "[{source}] No songs found for \"{keyword}\"." },
10
+ results: { 'zh-CN': "[{source}] 搜索结果:\n{lines}\n\n回复序号播放,回复\"取消\"取消选择", en: "[{source}] Search results:\n{lines}\n\nReply with a number to play, or \"cancel\" to cancel." },
11
+ unsupported: { 'zh-CN': "不支持的音乐源:{source}", en: "Unsupported music source: {source}" },
12
+ cancelSelection: { 'zh-CN': "已取消点歌", en: "Music selection cancelled." },
13
+ detailFailed: { 'zh-CN': "[{source}] 获取\"{title}\"播放信息失败:{error}", en: "[{source}] Could not load \"{title}\": {error}" },
14
+ credentials: { 'zh-CN': "--- 音乐凭证状态 ---", en: "--- Music credentials ---" },
15
+ unset: { 'zh-CN': "未配置", en: "Not configured" },
16
+ count: { 'zh-CN': "{keys} ({count} 项)", en: "{keys} ({count} entries)" },
17
+ credentialUnset: { 'zh-CN': "[{source}] 凭证 {key} 未设置", en: "[{source}] Credential {key} is not set." },
18
+ saved: { 'zh-CN': "[{source}] 凭证 {key} 已保存", en: "[{source}] Credential {key} saved." },
19
+ deleted: { 'zh-CN': "[{source}] 凭证 {key} 已删除", en: "[{source}] Credential {key} deleted." },
20
+ conversation: { 'zh-CN': "无法识别会话信息,请在群聊或私聊中使用", en: "Cannot identify this conversation. Use a group or private chat." },
21
+ cancelLogin: { 'zh-CN': "已取消登录", en: "Login cancelled." },
22
+ noLogin: { 'zh-CN': "没有进行中的登录会话", en: "There is no active login session." },
23
+ platform: { 'zh-CN': "不支持的平台:{platform}\n支持:qq, netease", en: "Unsupported platform: {platform}\nSupported: qq, netease" },
24
+ active: { 'zh-CN': "正在进行 {source} 登录,请先完成", en: "A {source} login is in progress. Complete it first." },
25
+ cancelHint: { 'zh-CN': "发送\"{command}\"可中止", en: "Send \"{command}\" to cancel." },
26
+ qrFailed: { 'zh-CN': "[{source}] 获取二维码失败:{error}", en: "[{source}] Could not obtain a QR code: {error}" },
27
+ noReply: { 'zh-CN': "无法发送消息", en: "Cannot send a reply." },
28
+ scan: { 'zh-CN': "[{source}] 请使用 {source} App 扫描二维码登录:", en: "[{source}] Scan the QR code with the {source} app to sign in:" },
29
+ valid: { 'zh-CN': "二维码有效期 2 分钟", en: "The QR code is valid for 2 minutes." },
30
+ success: { 'zh-CN': "登录成功!cookie 已自动保存,现在可以搜索和播放高品质音乐了", en: "Signed in. The cookie has been saved; you can now search and play high-quality music." },
31
+ waiting: { 'zh-CN': "等待扫码...", en: "Waiting for scan..." },
32
+ scanned: { 'zh-CN': "已扫码,请在手机上确认登录", en: "Scanned. Confirm the login on your phone." },
33
+ expired: { 'zh-CN': "二维码已过期,请重新发起登录", en: "The QR code has expired. Start a new login." },
34
+ confirmed: { 'zh-CN': "登录成功", en: "Signed in." },
35
+ unknown: { 'zh-CN': "未知状态", en: "Unknown status" },
36
+ pollFailed: { 'zh-CN': "轮询失败:{error}", en: "Login polling failed: {error}" },
37
+ pollError: { 'zh-CN': "轮询异常:{error}", en: "Login polling error: {error}" },
38
+ timeout: { 'zh-CN': "登录超时,请重试", en: "Login timed out. Try again." },
39
+ neteaseQr: { 'zh-CN': "获取网易云登录二维码失败", en: "Could not obtain a NetEase login QR code." },
40
+ emptyResponse: { 'zh-CN': "服务端返回空响应 (HTTP {status})", en: "The server returned an empty response (HTTP {status})." },
41
+ cookieFailed: { 'zh-CN': "登录成功但获取 cookie 失败", en: "Signed in, but could not retrieve the cookie." },
42
+ });
43
+ const EN_SOURCE_NAMES = { qq: 'QQ Music', netease: 'NetEase Cloud Music', kuwo: 'Kuwo', kugou: 'Kugou' };
44
+ export function sourceName(source, locale = 'zh-CN') {
45
+ return locale === 'en' ? EN_SOURCE_NAMES[source] : SOURCE_DISPLAY_NAME[source];
46
+ }
47
+ export function usage(locale, command) {
48
+ return command === undefined ? '' : messages(locale, 'usage', { command });
49
+ }
50
+ //# sourceMappingURL=i18n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,23 @@
1
+ import type { Locale } from 'zhin.js/i18n';
2
+ import type { ConversationRef } from '@zhin.js/im-contract';
1
3
  import type { QrLoginProvider, QrLoginSource, QrPollResult } from './types.js';
2
4
  import type { CredentialStore } from '../credential-store.js';
3
5
  export type { QrLoginSource, QrPollResult, QrLoginProvider } from './types.js';
4
6
  export interface QrLoginSession {
7
+ locale: Locale;
5
8
  source: QrLoginSource;
6
9
  pollData: Record<string, string>;
7
10
  timestamp: number;
8
11
  aborted: boolean;
9
12
  }
10
- export declare function loginSessionKey(endpointId: string, conversationId: string, senderId: string): string;
13
+ export declare function loginSessionKey(conversation: ConversationRef, senderId: string): string;
11
14
  /** Generation-owned QR login coordinator. */
12
15
  export declare class QrLoginRuntime {
13
16
  #private;
14
17
  constructor(credentials: CredentialStore, providers?: Readonly<Record<QrLoginSource, QrLoginProvider>>, now?: () => number, sleep?: (ms: number) => Promise<void>);
15
18
  get(key: string): QrLoginSession | undefined;
16
19
  cancel(key: string): boolean;
17
- start(source: QrLoginSource, key: string): Promise<{
20
+ start(source: QrLoginSource, key: string, locale?: Locale): Promise<{
18
21
  imageSegment: {
19
22
  type: 'image';
20
23
  data: Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/login/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE/E,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAMD,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAED,6CAA6C;AAC7C,qBAAa,cAAc;;gBAQvB,WAAW,EAAE,eAAe,EAC5B,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC,EAC5D,GAAG,GAAE,MAAM,MAAiB,EAC5B,KAAK,GAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAA6D;IAWlG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAW5C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAQtB,KAAK,CACT,MAAM,EAAE,aAAa,EACrB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;QAAE,YAAY,EAAE;YAAE,IAAI,EAAE,OAAO,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAAE,CAAA;KAAE,CAAC;IAwBxE,IAAI,CACR,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,GAChD,OAAO,CAAC,YAAY,CAAC;IAyCxB,YAAY,IAAI,IAAI;IAUpB,OAAO,IAAI,IAAI;CAIhB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/login/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG5D,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE/E,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAMD,wBAAgB,eAAe,CAC7B,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAED,6CAA6C;AAC7C,qBAAa,cAAc;;gBAQvB,WAAW,EAAE,eAAe,EAC5B,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC,EAC5D,GAAG,GAAE,MAAM,MAAiB,EAC5B,KAAK,GAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAA6D;IAWlG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAW5C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAQtB,KAAK,CACT,MAAM,EAAE,aAAa,EACrB,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,MAAgB,GACvB,OAAO,CAAC;QAAE,YAAY,EAAE;YAAE,IAAI,EAAE,OAAO,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAAE,CAAA;KAAE,CAAC;IAyBxE,IAAI,CACR,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,GAChD,OAAO,CAAC,YAAY,CAAC;IAyCxB,YAAY,IAAI,IAAI;IAUpB,OAAO,IAAI,IAAI;CAIhB"}
@@ -1,10 +1,12 @@
1
+ import { sessionKey } from '../session.js';
2
+ import { messages as t } from '../i18n.js';
1
3
  import { QQLoginProvider } from './qq.js';
2
4
  import { NeteaseLoginProvider } from './netease.js';
3
5
  const LOGIN_TIMEOUT_MS = 2 * 60 * 1000;
4
6
  const POLL_INTERVAL_MS = 3_000;
5
7
  const MAX_POLLS = Math.ceil(LOGIN_TIMEOUT_MS / POLL_INTERVAL_MS);
6
- export function loginSessionKey(endpointId, conversationId, senderId) {
7
- return `login:${endpointId}:${conversationId}:${senderId}`;
8
+ export function loginSessionKey(conversation, senderId) {
9
+ return `login:${sessionKey(conversation, senderId)}`;
8
10
  }
9
11
  /** Generation-owned QR login coordinator. */
10
12
  export class QrLoginRuntime {
@@ -41,21 +43,22 @@ export class QrLoginRuntime {
41
43
  this.#active.delete(key);
42
44
  return true;
43
45
  }
44
- async start(source, key) {
46
+ async start(source, key, locale = 'zh-CN') {
45
47
  const existing = this.#active.get(key);
46
48
  if (existing && !existing.aborted)
47
49
  existing.aborted = true;
48
50
  const session = {
49
51
  source,
52
+ locale,
50
53
  pollData: {},
51
54
  timestamp: this.#now(),
52
55
  aborted: false,
53
56
  };
54
57
  this.#active.set(key, session);
55
58
  try {
56
- const result = await this.#providers[source].createQr();
59
+ const result = await this.#providers[source].createQr(locale);
57
60
  if (session.aborted || this.#active.get(key) !== session) {
58
- throw new Error('登录已取消');
61
+ throw new Error(t(locale, 'loginAborted'));
59
62
  }
60
63
  session.pollData = result.pollData;
61
64
  return { imageSegment: result.imageSegment };
@@ -69,16 +72,16 @@ export class QrLoginRuntime {
69
72
  async poll(key, onStatus) {
70
73
  const session = this.#active.get(key);
71
74
  if (!session)
72
- return { status: 'error', message: '没有进行中的登录会话' };
75
+ return { status: 'error', message: t('zh-CN', 'noLogin') };
73
76
  const provider = this.#providers[session.source];
74
77
  let lastStatus = '';
75
78
  try {
76
79
  for (let i = 0; i < MAX_POLLS; i++) {
77
80
  if (session.aborted) {
78
81
  this.#active.delete(key);
79
- return { status: 'error', message: '登录已取消' };
82
+ return { status: 'error', message: t(session.locale, 'loginAborted') };
80
83
  }
81
- const result = await provider.pollQr(session.pollData);
84
+ const result = await provider.pollQr(session.pollData, session.locale);
82
85
  if (result.status !== lastStatus) {
83
86
  lastStatus = result.status;
84
87
  await onStatus(result);
@@ -100,11 +103,11 @@ export class QrLoginRuntime {
100
103
  this.#active.delete(key);
101
104
  return {
102
105
  status: 'error',
103
- message: `轮询异常:${error instanceof Error ? error.message : String(error)}`,
106
+ message: t(session.locale, 'pollError', { error: error instanceof Error ? error.message : String(error) }),
104
107
  };
105
108
  }
106
109
  this.#active.delete(key);
107
- return { status: 'expired', message: '登录超时,请重试' };
110
+ return { status: 'expired', message: t(session.locale, 'timeout') };
108
111
  }
109
112
  pruneExpired() {
110
113
  const now = this.#now();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/login/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/login/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
+ import type { Locale } from 'zhin.js/i18n';
1
2
  import type { QrLoginProvider, QrCreateResult, QrPollResult } from './types.js';
2
3
  export declare class NeteaseLoginProvider implements QrLoginProvider {
3
- createQr(): Promise<QrCreateResult>;
4
- pollQr(pollData: Record<string, string>): Promise<QrPollResult>;
4
+ createQr(locale?: Locale): Promise<QrCreateResult>;
5
+ pollQr(pollData: Record<string, string>, locale?: Locale): Promise<QrPollResult>;
5
6
  }
6
7
  //# sourceMappingURL=netease.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"netease.d.ts","sourceRoot":"","sources":["../../src/login/netease.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAKhF,qBAAa,oBAAqB,YAAW,eAAe;IACpD,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC;IAwBnC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;CAsCtE"}
1
+ {"version":3,"file":"netease.d.ts","sourceRoot":"","sources":["../../src/login/netease.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAKhF,qBAAa,oBAAqB,YAAW,eAAe;IACpD,QAAQ,CAAC,MAAM,GAAE,MAAgB,GAAG,OAAO,CAAC,cAAc,CAAC;IAwB3D,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAE,MAAgB,GAAG,OAAO,CAAC,YAAY,CAAC;CAsChG"}
@@ -1,7 +1,8 @@
1
+ import { messages as t } from '../i18n.js';
1
2
  import { extractSetCookies } from './types.js';
2
3
  const QR_IMAGE_API = 'https://api.qrserver.com/v1/create-qr-code/';
3
4
  export class NeteaseLoginProvider {
4
- async createQr() {
5
+ async createQr(locale = 'zh-CN') {
5
6
  const timestampMs = Date.now();
6
7
  const keyResp = await fetch(`https://music.163.com/api/login/qrcode/unikey?type=1&timestamp=${timestampMs}`, {
7
8
  method: 'POST',
@@ -10,7 +11,7 @@ export class NeteaseLoginProvider {
10
11
  });
11
12
  const keyData = (await keyResp.json());
12
13
  if (keyData.code !== 200 || !keyData.unikey) {
13
- throw new Error('获取网易云登录二维码失败');
14
+ throw new Error(t(locale, 'neteaseQr'));
14
15
  }
15
16
  const loginUrl = `https://music.163.com/login?codekey=${keyData.unikey}`;
16
17
  const imageUrl = `${QR_IMAGE_API}?size=300x300&data=${encodeURIComponent(loginUrl)}`;
@@ -19,7 +20,7 @@ export class NeteaseLoginProvider {
19
20
  pollData: { unikey: keyData.unikey },
20
21
  };
21
22
  }
22
- async pollQr(pollData) {
23
+ async pollQr(pollData, locale = 'zh-CN') {
23
24
  const { unikey } = pollData;
24
25
  try {
25
26
  const response = await fetch('https://music.163.com/api/login/qrcode/client/login', {
@@ -30,27 +31,27 @@ export class NeteaseLoginProvider {
30
31
  const data = (await response.json());
31
32
  switch (data.code) {
32
33
  case 801:
33
- return { status: 'waiting', message: '等待扫码...' };
34
+ return { status: 'waiting', message: t(locale, 'waiting') };
34
35
  case 802:
35
- return { status: 'scanned', message: '已扫码,请在手机上确认登录' };
36
+ return { status: 'scanned', message: t(locale, 'scanned') };
36
37
  case 800:
37
- return { status: 'expired', message: '二维码已过期,请重新发起登录' };
38
+ return { status: 'expired', message: t(locale, 'expired') };
38
39
  case 803: {
39
40
  const cookie = extractSetCookies(response.headers);
40
41
  return {
41
42
  status: 'confirmed',
42
- message: '登录成功',
43
+ message: t(locale, 'confirmed'),
43
44
  cookie: cookie || undefined,
44
45
  };
45
46
  }
46
47
  default:
47
- return { status: 'error', message: data.message ?? '未知状态' };
48
+ return { status: 'error', message: data.message ?? t(locale, 'unknown') };
48
49
  }
49
50
  }
50
51
  catch (err) {
51
52
  return {
52
53
  status: 'error',
53
- message: `轮询失败:${err instanceof Error ? err.message : String(err)}`,
54
+ message: t(locale, 'pollFailed', { error: err instanceof Error ? err.message : String(err) }),
54
55
  };
55
56
  }
56
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"netease.js","sourceRoot":"","sources":["../../src/login/netease.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,YAAY,GAAG,6CAA6C,CAAC;AAEnE,MAAM,OAAO,oBAAoB;IAC/B,KAAK,CAAC,QAAQ;QACZ,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,MAAM,KAAK,CACzB,kEAAkE,WAAW,EAAE,EAC/E;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;YAChE,IAAI,EAAE,oBAAoB,WAAW,EAAE;SACxC,CACF,CAAC;QACF,MAAM,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAsC,CAAC;QAC5E,IAAI,OAAO,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,QAAQ,GAAG,uCAAuC,OAAO,CAAC,MAAM,EAAE,CAAC;QACzE,MAAM,QAAQ,GAAG,GAAG,YAAY,sBAAsB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAErF,OAAO;YACL,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;YACxD,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;SACrC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAgC;QAC3C,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,qDAAqD,EACrD;gBACE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;gBAChE,IAAI,EAAE,OAAO,MAAM,SAAS;aAC7B,CACF,CAAC;YACF,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAuC,CAAC;YAE3E,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,GAAG;oBACN,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;gBACnD,KAAK,GAAG;oBACN,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;gBACzD,KAAK,GAAG;oBACN,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;gBAC1D,KAAK,GAAG,CAAC,CAAC,CAAC;oBACT,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;oBACnD,OAAO;wBACL,MAAM,EAAE,WAAW;wBACnB,OAAO,EAAE,MAAM;wBACf,MAAM,EAAE,MAAM,IAAI,SAAS;qBAC5B,CAAC;gBACJ,CAAC;gBACD;oBACE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,MAAM,EAAE,CAAC;YAChE,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,MAAM,EAAE,OAAO;gBACf,OAAO,EAAE,QAAQ,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;aACpE,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"netease.js","sourceRoot":"","sources":["../../src/login/netease.ts"],"names":[],"mappings":"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"}
package/lib/login/qq.d.ts CHANGED
@@ -1,7 +1,8 @@
1
+ import type { Locale } from 'zhin.js/i18n';
1
2
  import type { QrLoginProvider, QrCreateResult, QrPollResult } from './types.js';
2
3
  export declare class QQLoginProvider implements QrLoginProvider {
3
4
  createQr(): Promise<QrCreateResult>;
4
- pollQr(pollData: Record<string, string>): Promise<QrPollResult>;
5
+ pollQr(pollData: Record<string, string>, locale?: Locale): Promise<QrPollResult>;
5
6
  private handleLoginSuccess;
6
7
  }
7
8
  //# sourceMappingURL=qq.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"qq.d.ts","sourceRoot":"","sources":["../../src/login/qq.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAsBhF,qBAAa,eAAgB,YAAW,eAAe;IAC/C,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC;IAsDnC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;YAyDvD,kBAAkB;CAmBjC"}
1
+ {"version":3,"file":"qq.d.ts","sourceRoot":"","sources":["../../src/login/qq.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAsBhF,qBAAa,eAAgB,YAAW,eAAe;IAC/C,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC;IAsDnC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAE,MAAgB,GAAG,OAAO,CAAC,YAAY,CAAC;YAyDjF,kBAAkB;CAmBjC"}
package/lib/login/qq.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { messages as t } from '../i18n.js';
1
2
  import { extractSetCookies } from './types.js';
2
3
  function hashPtqrtoken(qrsig) {
3
4
  let hash = 0;
@@ -63,7 +64,7 @@ export class QQLoginProvider {
63
64
  pollData: { ptqrtoken, qrsig, loginSig },
64
65
  };
65
66
  }
66
- async pollQr(pollData) {
67
+ async pollQr(pollData, locale = 'zh-CN') {
67
68
  const { ptqrtoken, qrsig, loginSig } = pollData;
68
69
  const url = new URL('https://ssl.ptlogin2.qq.com/ptqrlogin');
69
70
  url.searchParams.set('u1', 'https://y.qq.com/');
@@ -93,30 +94,30 @@ export class QQLoginProvider {
93
94
  });
94
95
  const text = await response.text();
95
96
  if (text.includes('二维码未失效')) {
96
- return { status: 'waiting', message: '等待扫码...' };
97
+ return { status: 'waiting', message: t(locale, 'waiting') };
97
98
  }
98
99
  if (text.includes('二维码认证中') || text.includes('已扫码')) {
99
- return { status: 'scanned', message: '已扫码,请在手机上确认登录' };
100
+ return { status: 'scanned', message: t(locale, 'scanned') };
100
101
  }
101
102
  if (text.includes('二维码已失效')) {
102
- return { status: 'expired', message: '二维码已过期,请重新发起登录' };
103
+ return { status: 'expired', message: t(locale, 'expired') };
103
104
  }
104
105
  if (text.includes('登录成功') || text.includes('ptsigx')) {
105
- return this.handleLoginSuccess(text, response.headers);
106
+ return this.handleLoginSuccess(text, response.headers, locale);
106
107
  }
107
108
  if (!text) {
108
- return { status: 'error', message: `服务端返回空响应 (HTTP ${response.status})` };
109
+ return { status: 'error', message: t(locale, 'emptyResponse', { status: response.status }) };
109
110
  }
110
- return { status: 'waiting', message: '等待扫码...' };
111
+ return { status: 'waiting', message: t(locale, 'waiting') };
111
112
  }
112
113
  catch (err) {
113
114
  return {
114
115
  status: 'error',
115
- message: `轮询失败:${err instanceof Error ? err.message : String(err)}`,
116
+ message: t(locale, 'pollFailed', { error: err instanceof Error ? err.message : String(err) }),
116
117
  };
117
118
  }
118
119
  }
119
- async handleLoginSuccess(text, headers) {
120
+ async handleLoginSuccess(text, headers, locale) {
120
121
  const redirectMatch = text.match(/'(https?:\/\/[^']+)'/);
121
122
  if (redirectMatch) {
122
123
  const redirectResp = await fetch(redirectMatch[1], {
@@ -125,13 +126,13 @@ export class QQLoginProvider {
125
126
  });
126
127
  const cookie = extractSetCookies(redirectResp.headers);
127
128
  if (cookie) {
128
- return { status: 'confirmed', message: '登录成功', cookie };
129
+ return { status: 'confirmed', message: t(locale, 'confirmed'), cookie };
129
130
  }
130
131
  }
131
132
  const cookie = extractSetCookies(headers);
132
133
  return {
133
134
  status: cookie ? 'confirmed' : 'error',
134
- message: cookie ? '登录成功' : '登录成功但获取 cookie 失败',
135
+ message: t(locale, cookie ? 'confirmed' : 'cookieFailed'),
135
136
  cookie: cookie || undefined,
136
137
  };
137
138
  }
@@ -1 +1 @@
1
- {"version":3,"file":"qq.js","sourceRoot":"","sources":["../../src/login/qq.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"qq.js","sourceRoot":"","sources":["../../src/login/qq.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { Locale } from 'zhin.js/i18n';
1
2
  export type QrLoginSource = 'qq' | 'netease';
2
3
  export interface QrPollResult {
3
4
  status: 'waiting' | 'scanned' | 'confirmed' | 'expired' | 'error';
@@ -12,8 +13,8 @@ export interface QrCreateResult {
12
13
  pollData: Record<string, string>;
13
14
  }
14
15
  export interface QrLoginProvider {
15
- createQr(): Promise<QrCreateResult>;
16
- pollQr(pollData: Record<string, string>): Promise<QrPollResult>;
16
+ createQr(locale?: Locale): Promise<QrCreateResult>;
17
+ pollQr(pollData: Record<string, string>, locale?: Locale): Promise<QrPollResult>;
17
18
  }
18
19
  export declare function extractSetCookies(headers: Headers): string;
19
20
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/login/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,SAAS,CAAC;AAE7C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IAC/D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;IACpC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CACjE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAQ1D"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/login/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,SAAS,CAAC;AAE7C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IAC/D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACnD,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAClF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAQ1D"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/login/types.ts"],"names":[],"mappings":"AAkBA,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtC,IAAI,KAAK;YAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/login/types.ts"],"names":[],"mappings":"AAmBA,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtC,IAAI,KAAK;YAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { Locale } from 'zhin.js/i18n';
1
2
  import type { MusicInfo, MusicDetail, MusicSource } from './types.js';
2
3
  import type { MusicRuntime } from './runtime.js';
3
4
  export declare function searchMusic(runtime: MusicRuntime, keyword: string, source?: MusicSource, limit?: number): Promise<{
@@ -7,7 +8,7 @@ export declare function searchMusic(runtime: MusicRuntime, keyword: string, sour
7
8
  results: MusicInfo[];
8
9
  total: number;
9
10
  }>;
10
- export declare function shareMusicDetail(runtime: MusicRuntime, id: string, source: MusicSource): Promise<{
11
+ export declare function shareMusicDetail(runtime: MusicRuntime, id: string, source: MusicSource, locale?: Locale): Promise<{
11
12
  success: false;
12
13
  error: string;
13
14
  music?: undefined;
@@ -16,7 +17,7 @@ export declare function shareMusicDetail(runtime: MusicRuntime, id: string, sour
16
17
  music: MusicDetail;
17
18
  error?: undefined;
18
19
  }>;
19
- export declare function formatSearchResults(results: readonly MusicInfo[], source: MusicSource): string;
20
+ export declare function formatSearchResults(results: readonly MusicInfo[], source: MusicSource, locale?: Locale): string;
20
21
  export declare function buildMusicShareSegment(detail: MusicDetail): {
21
22
  type: "share";
22
23
  data: {
@@ -1 +1 @@
1
- {"version":3,"file":"music-lib.d.ts","sourceRoot":"","sources":["../src/music-lib.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,wBAAsB,WAAW,CAC/B,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,WAAW,EACpB,KAAK,SAAI,GACR,OAAO,CAAC;IACT,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAWD;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW;;;;;;;;GAc5F;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,GAAG,MAAM,CAU9F;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,WAAW;;;;;;;;;;;EAczD"}
1
+ {"version":3,"file":"music-lib.d.ts","sourceRoot":"","sources":["../src/music-lib.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,wBAAsB,WAAW,CAC/B,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,WAAW,EACpB,KAAK,SAAI,GACR,OAAO,CAAC;IACT,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAWD;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAE,MAAgB;;;;;;;;GActH;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAE,MAAgB,GAAG,MAAM,CAUxH;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,WAAW;;;;;;;;;;;EAczD"}
package/lib/music-lib.js CHANGED
@@ -1,4 +1,5 @@
1
- import { sourceConfigMap, SOURCE_DISPLAY_NAME, formatDuration } from './config.js';
1
+ import { messages as t, sourceName as displayName } from './i18n.js';
2
+ import { sourceConfigMap, formatDuration } from './config.js';
2
3
  export async function searchMusic(runtime, keyword, source, limit = 5) {
3
4
  const s = source ?? 'qq';
4
5
  const service = runtime.services[s];
@@ -11,10 +12,10 @@ export async function searchMusic(runtime, keyword, source, limit = 5) {
11
12
  total: results.length,
12
13
  };
13
14
  }
14
- export async function shareMusicDetail(runtime, id, source) {
15
+ export async function shareMusicDetail(runtime, id, source, locale = 'zh-CN') {
15
16
  const service = runtime.services[source];
16
17
  if (!service) {
17
- return { success: false, error: `不支持的音乐源: ${source}` };
18
+ return { success: false, error: t(locale, 'unsupported', { source }) };
18
19
  }
19
20
  try {
20
21
  const detail = await service.getDetail(id);
@@ -27,10 +28,10 @@ export async function shareMusicDetail(runtime, id, source) {
27
28
  };
28
29
  }
29
30
  }
30
- export function formatSearchResults(results, source) {
31
- const sourceName = SOURCE_DISPLAY_NAME[source] ?? source;
31
+ export function formatSearchResults(results, source, locale = 'zh-CN') {
32
+ const sourceName = displayName(source, locale) ?? source;
32
33
  if (results.length === 0)
33
- return `[${sourceName}] 未找到相关歌曲`;
34
+ return t(locale, 'noResults', { source: sourceName });
34
35
  const lines = results.map((m, i) => {
35
36
  const parts = [m.title];
36
37
  if (m.artist)
@@ -38,7 +39,7 @@ export function formatSearchResults(results, source) {
38
39
  const duration = m.duration ? ` [${formatDuration(m.duration)}]` : '';
39
40
  return `${i + 1}. ${parts.join(' - ')}${duration}`;
40
41
  });
41
- return `[${sourceName}] 搜索结果:\n${lines.join('\n')}\n\n回复序号播放,回复"取消"取消选择`;
42
+ return t(locale, 'results', { source: sourceName, lines: lines.join('\n') });
42
43
  }
43
44
  export function buildMusicShareSegment(detail) {
44
45
  const config = sourceConfigMap[detail.source];
@@ -1 +1 @@
1
- {"version":3,"file":"music-lib.js","sourceRoot":"","sources":["../src/music-lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAInF,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAqB,EACrB,OAAe,EACf,MAAoB,EACpB,KAAK,GAAG,CAAC;IAQT,MAAM,CAAC,GAAgB,MAAM,IAAI,IAAI,CAAC;IACtC,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACrD,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO;QACP,MAAM,EAAE,CAAC;QACT,OAAO;QACP,KAAK,EAAE,OAAO,CAAC,MAAM;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAqB,EAAE,EAAU,EAAE,MAAmB;IAC3F,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,KAAc,EAAE,KAAK,EAAE,YAAY,MAAM,EAAE,EAAE,CAAC;IAClE,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC3C,OAAO,EAAE,OAAO,EAAE,IAAa,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACnD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAc;YACvB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAA6B,EAAE,MAAmB;IACpF,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC;IACzD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,UAAU,WAAW,CAAC;IAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACjC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,QAAQ,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,UAAU,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAmB;IACxD,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9C,OAAO;QACL,IAAI,EAAE,OAAgB;QACtB,IAAI,EAAE;YACJ,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM;SACP;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"music-lib.js","sourceRoot":"","sources":["../src/music-lib.ts"],"names":[],"mappings":"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"}
package/lib/session.d.ts CHANGED
@@ -1,25 +1,22 @@
1
+ import type { Locale } from 'zhin.js/i18n';
2
+ import { type ConversationRef } from '@zhin.js/im-contract';
1
3
  import type { MusicInfo, MusicSource } from './types.js';
2
4
  export interface PendingSearch {
5
+ readonly locale?: Locale;
3
6
  readonly results: readonly MusicInfo[];
4
7
  readonly source: MusicSource;
5
8
  readonly keyword: string;
6
9
  readonly timestamp: number;
7
10
  }
8
- export declare function sessionKey(endpointId: string, conversationId: string, senderId: string): string;
11
+ export declare function sessionKey(conversation: ConversationRef, senderId: string): string;
9
12
  export declare function resolveMessageIds(input: {
10
13
  metadata?: Record<string, unknown>;
11
- conversation?: {
12
- id?: unknown;
13
- endpoint?: {
14
- id?: unknown;
15
- };
16
- };
14
+ conversation?: ConversationRef;
17
15
  sender?: {
18
16
  id?: unknown;
19
17
  };
20
- }): {
21
- endpointId: string;
22
- conversationId: string;
18
+ } | undefined): {
19
+ conversation: ConversationRef;
23
20
  senderId: string;
24
21
  } | null;
25
22
  /** Generation-owned pending music selections. */
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAID,wBAAgB,UAAU,CACxB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE;YAAE,EAAE,CAAC,EAAE,OAAO,CAAA;SAAE,CAAA;KAAE,CAAC;IAC7D,MAAM,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC3B,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAO1E;AAED,iDAAiD;AACjD,qBAAa,mBAAmB;;gBAM5B,SAAS,SAAoB,EAC7B,GAAG,GAAE,MAAM,MAAiB;IAM9B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI;IAI7C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAU3C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIzB,YAAY,IAAI,IAAI;IASpB,OAAO,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAID,wBAAgB,UAAU,CACxB,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,MAAM,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC3B,GAAG,SAAS,GAAG;IAAE,YAAY,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAOzE;AAED,iDAAiD;AACjD,qBAAa,mBAAmB;;gBAM5B,SAAS,SAAoB,EAC7B,GAAG,GAAE,MAAM,MAAiB;IAM9B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI;IAI7C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAU3C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIzB,YAAY,IAAI,IAAI;IASpB,OAAO,IAAI,IAAI;CAGhB"}
package/lib/session.js CHANGED
@@ -1,15 +1,16 @@
1
+ import { conversationRefKey } from '@zhin.js/im-contract';
1
2
  const SEARCH_TIMEOUT_MS = 3 * 60 * 1000;
2
- export function sessionKey(endpointId, conversationId, senderId) {
3
- return `${endpointId}:${conversationId}:${senderId}`;
3
+ export function sessionKey(conversation, senderId) {
4
+ return JSON.stringify([conversationRefKey(conversation), senderId]);
4
5
  }
5
6
  export function resolveMessageIds(input) {
6
- const meta = input.metadata ?? {};
7
- const endpointId = String(meta.endpointId ?? input.conversation?.endpoint?.id ?? '');
8
- const conversationId = String(input.conversation?.id ?? '');
9
- const senderId = String(input.sender?.id ?? '');
10
- if (!endpointId || !conversationId || !senderId)
7
+ const conversation = input?.conversation;
8
+ const senderId = input?.sender?.id;
9
+ if (!conversation?.endpoint?.id || !conversation.endpoint.adapter || !conversation.id
10
+ || !['private', 'group', 'channel'].includes(conversation.kind)
11
+ || typeof senderId !== 'string' || !senderId)
11
12
  return null;
12
- return { endpointId, conversationId, senderId };
13
+ return { conversation, senderId };
13
14
  }
14
15
  /** Generation-owned pending music selections. */
15
16
  export class MusicSearchSessions {