From b07aba7f3c7f551b203112c0779b6e42c5beaf41 Mon Sep 17 00:00:00 2001 From: Shigma Date: Sun, 14 Aug 2022 07:25:20 +0800 Subject: [PATCH] fix(rate-limit): --help is not a usage, fix #772 --- build/.eslintrc.yml | 2 -- plugins/a11y/rate-limit/src/index.ts | 2 ++ plugins/a11y/rate-limit/src/locales/zh.yml | 2 +- plugins/a11y/rate-limit/tests/index.spec.ts | 7 +++---- plugins/common/help/src/index.ts | 2 ++ 5 files changed, 8 insertions(+), 7 deletions(-) delete mode 100644 build/.eslintrc.yml diff --git a/build/.eslintrc.yml b/build/.eslintrc.yml deleted file mode 100644 index 4fd6856d09..0000000000 --- a/build/.eslintrc.yml +++ /dev/null @@ -1,2 +0,0 @@ -rules: - '@typescript-eslint/naming-convention': off diff --git a/plugins/a11y/rate-limit/src/index.ts b/plugins/a11y/rate-limit/src/index.ts index ba63843dad..7b5aa7de5d 100644 --- a/plugins/a11y/rate-limit/src/index.ts +++ b/plugins/a11y/rate-limit/src/index.ts @@ -46,6 +46,8 @@ export function apply(ctx: Context) { const { maxUsage, minInterval } = command.config let shouldFetchUsage = !!(maxUsage || minInterval) for (const { name, notUsage } of Object.values(command._options)) { + // --help is not a usage (#772) + if (name === 'help') continue if (name in options && notUsage) shouldFetchUsage = false } if (shouldFetchUsage) { diff --git a/plugins/a11y/rate-limit/src/locales/zh.yml b/plugins/a11y/rate-limit/src/locales/zh.yml index 1309b8d47d..4b7e2c07cd 100644 --- a/plugins/a11y/rate-limit/src/locales/zh.yml +++ b/plugins/a11y/rate-limit/src/locales/zh.yml @@ -1,7 +1,7 @@ internal: usage-exhausted: 调用次数已达上限。 too-frequent: 调用过于频繁,请稍后再试。 - option-not-usage: (不计入调用) + option-not-usage: ' (不计入调用)' command-max-usage: 已调用次数:{0}/{1}。 command-min-interval: 距离下次调用还需:{0}/{1} 秒。 diff --git a/plugins/a11y/rate-limit/tests/index.spec.ts b/plugins/a11y/rate-limit/tests/index.spec.ts index 34aea1814a..6959fcb23a 100644 --- a/plugins/a11y/rate-limit/tests/index.spec.ts +++ b/plugins/a11y/rate-limit/tests/index.spec.ts @@ -2,7 +2,6 @@ import { App, Time } from 'koishi' import mock from '@koishijs/plugin-mock' import memory from '@koishijs/plugin-database-memory' import * as help from '@koishijs/plugin-help' -import * as admin from '@koishijs/plugin-admin' import * as rate from '@koishijs/plugin-rate-limit' import { install } from '@sinonjs/fake-timers' @@ -12,7 +11,6 @@ let now = Date.now() app.plugin(help) app.plugin(mock) app.plugin(memory) -app.plugin(admin) app.plugin(rate) const client1 = app.mock.client('123') @@ -35,12 +33,13 @@ describe('@koishijs/plugin-rate-limit', () => { .action(() => 'test') it('Extended Help', async () => { - await client1.shouldReply('help foo', [ + await client1.shouldReply('help foo -H', [ 'foo', '指令1', '已调用次数:1/3。', '可用的选项有:', - ' --opt1 选项1(不计入调用)', + ' -h, --help 显示此信息 (不计入调用)', + ' --opt1 选项1 (不计入调用)', ' --opt2 选项2', ].join('\n')) }) diff --git a/plugins/common/help/src/index.ts b/plugins/common/help/src/index.ts index 92cad0118d..e57da765e1 100644 --- a/plugins/common/help/src/index.ts +++ b/plugins/common/help/src/index.ts @@ -26,6 +26,8 @@ export const Config: Schema = Schema.object({ export function enableHelp(cmd: Command) { return cmd.option('help', '-h', { hidden: true, + // @ts-ignore + notUsage: true, descPath: 'commands.help.options.help', }) }