From c89cf27fa665ec2fe714747e1af8bbf0cd5564d6 Mon Sep 17 00:00:00 2001 From: zhiyu1998 Date: Wed, 12 Apr 2023 19:08:39 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat:=20=E6=8F=90=E5=8D=87=E4=BC=98?= =?UTF-8?q?=E5=85=88=E7=BA=A7=E5=8C=B9=E9=85=8D=E5=B0=8F=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=20&=20=E5=A2=9E=E5=8A=A0=E7=AE=97=E6=B3=95=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/tools.js | 2 +- utils/token-bucket.js | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/apps/tools.js b/apps/tools.js index 708164f..c82d5b1 100644 --- a/apps/tools.js +++ b/apps/tools.js @@ -27,7 +27,7 @@ export class tools extends plugin { name: "R插件工具和学习类", dsc: "R插件工具相关指令", event: "message.group", - priority: 500, + priority: 300, rule: [ { reg: `^(翻|trans)[${tools.Constants.existsTransKey}]`, diff --git a/utils/token-bucket.js b/utils/token-bucket.js index 9acc3a1..156370c 100644 --- a/utils/token-bucket.js +++ b/utils/token-bucket.js @@ -7,6 +7,26 @@ export default class TokenBucket { this.lastTime = new Date().getTime(); } + /** + * 消耗令牌-一个桶 + * @param count + * @return {boolean} + */ + consumeSingle(count = 1) { + const now = new Date().getTime(); + const elapsed = now - this.lastTime; + const addedTokens = elapsed * (this.rate / 1000 / 60); // 修改为每分钟生成的令牌数量 + this.tokens = Math.min(this.tokens + addedTokens, this.capacity); + this.lastTime = now; + + if (count <= this.tokens) { + this.tokens -= count; + return true; // 返回 true 表示请求被处理 + } else { + return false; // 返回 false 表示请求被限流 + } + } + /** * 消耗令牌 * @param id 用户id