@zhin.js/command 1.0.10 → 1.0.11

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.
package/lib/definition.js CHANGED
@@ -179,10 +179,15 @@ function resolveSender(input, metadata) {
179
179
  if (isCommandSender(structured)) {
180
180
  return freezeSender(structured);
181
181
  }
182
- const id = input.sender?.id || firstString(metadata?.user_id, metadata?.userId);
182
+ const $sender = input.$sender;
183
+ const id = input.sender?.id
184
+ || (typeof $sender?.id === 'string' ? $sender.id : undefined)
185
+ || firstString(metadata?.user_id, metadata?.userId);
183
186
  if (!id)
184
187
  return undefined;
185
- const name = input.sender?.name || firstString(metadata?.nickname, metadata?.senderName, metadata?.name);
188
+ const name = input.sender?.name
189
+ || (typeof $sender?.name === 'string' ? $sender.name : undefined)
190
+ || firstString(metadata?.nickname, metadata?.senderName, metadata?.name);
186
191
  const role = resolveRoles(input, metadata);
187
192
  return Object.freeze({
188
193
  id,
@@ -202,16 +207,19 @@ function resolveRoles(input, metadata) {
202
207
  if (trimmed && !roles.includes(trimmed))
203
208
  roles.push(trimmed);
204
209
  };
210
+ // IM Message 的 $sender 携带 enrich 快照(isMaster/isTrusted)和平台群角色(role)
211
+ const $sender = input.$sender;
212
+ if ($sender?.isMaster === true || metadata?.isMaster === true)
213
+ push('master');
214
+ else if ($sender?.isTrusted === true || metadata?.isTrusted === true)
215
+ push('trusted');
216
+ push($sender?.role);
205
217
  if (Array.isArray(metadata?.roles)) {
206
218
  for (const item of metadata.roles)
207
219
  push(item);
208
220
  }
209
221
  push(metadata?.senderRole);
210
222
  push(metadata?.role);
211
- if (metadata?.isMaster === true)
212
- push('master');
213
- if (metadata?.isTrusted === true)
214
- push('trusted');
215
223
  if (roles.length === 0)
216
224
  roles.push('user');
217
225
  return Object.freeze(roles);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhin.js/command",
3
- "version": "1.0.10",
3
+ "version": "1.0.11",
4
4
  "description": "Convention-based Command Feature for Zhin Plugin Runtime",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
package/src/definition.ts CHANGED
@@ -458,10 +458,15 @@ function resolveSender(
458
458
  return freezeSender(structured);
459
459
  }
460
460
 
461
- const id = input.sender?.id || firstString(metadata?.user_id, metadata?.userId);
461
+ const $sender = (input as { readonly $sender?: Readonly<Record<string, unknown>> }).$sender;
462
+ const id = input.sender?.id
463
+ || (typeof $sender?.id === 'string' ? $sender.id : undefined)
464
+ || firstString(metadata?.user_id, metadata?.userId);
462
465
  if (!id) return undefined;
463
466
 
464
- const name = input.sender?.name || firstString(metadata?.nickname, metadata?.senderName, metadata?.name);
467
+ const name = input.sender?.name
468
+ || (typeof $sender?.name === 'string' ? $sender.name : undefined)
469
+ || firstString(metadata?.nickname, metadata?.senderName, metadata?.name);
465
470
  const role = resolveRoles(input, metadata);
466
471
 
467
472
  return Object.freeze({
@@ -485,13 +490,18 @@ function resolveRoles(
485
490
  if (trimmed && !roles.includes(trimmed)) roles.push(trimmed);
486
491
  };
487
492
 
493
+ // IM Message 的 $sender 携带 enrich 快照(isMaster/isTrusted)和平台群角色(role)
494
+ const $sender = (input as { readonly $sender?: Readonly<Record<string, unknown>> }).$sender;
495
+
496
+ if ($sender?.isMaster === true || metadata?.isMaster === true) push('master');
497
+ else if ($sender?.isTrusted === true || metadata?.isTrusted === true) push('trusted');
498
+
499
+ push($sender?.role);
488
500
  if (Array.isArray(metadata?.roles)) {
489
501
  for (const item of metadata.roles) push(item);
490
502
  }
491
503
  push(metadata?.senderRole);
492
504
  push(metadata?.role);
493
- if (metadata?.isMaster === true) push('master');
494
- if (metadata?.isTrusted === true) push('trusted');
495
505
  if (roles.length === 0) roles.push('user');
496
506
  return Object.freeze(roles);
497
507
  }