diff --git a/packages/koishi-core/src/utils.ts b/packages/koishi-core/src/utils.ts index 65bef0d7ba..fb1560dc5a 100644 --- a/packages/koishi-core/src/utils.ts +++ b/packages/koishi-core/src/utils.ts @@ -13,11 +13,11 @@ export function getSenderName (meta: MessageMeta) { : meta.sender ? meta.sender.card || meta.sender.nickname : userId } -export function getTargetId (target: string) { - if (!target) return +export function getTargetId (target: string | number) { + if (typeof target !== 'string' && typeof target !== 'number') return let qq = +target if (!qq) { - const capture = /\[CQ:at,qq=(\d+)\]/.exec(target) + const capture = /\[CQ:at,qq=(\d+)\]/.exec(target as any) if (capture) qq = +capture[1] } if (!isInteger(qq)) return diff --git a/packages/koishi-core/tests/utils.spec.ts b/packages/koishi-core/tests/utils.spec.ts index 79ec558cbb..bae7329cd7 100644 --- a/packages/koishi-core/tests/utils.spec.ts +++ b/packages/koishi-core/tests/utils.spec.ts @@ -46,6 +46,7 @@ describe('getTargetId', () => { test('wrong syntax', () => { expect(getTargetId('')).toBeFalsy() + expect(getTargetId(true as any)).toBeFalsy() expect(getTargetId('[CQ:at,qq=]')).toBeFalsy() expect(getTargetId('foo123')).toBeFalsy() })