koishi-plugin-lolbaninfo 1.1.0 → 1.1.2

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/index.d.ts CHANGED
@@ -1,18 +1,23 @@
1
1
  import { Context, Schema } from 'koishi';
2
2
  export declare const name = "lolbaninfo";
3
- export declare const usage = "\n# \u26A0\uFE0F LOL\u5C01\u53F7\u67E5\u8BE2\u63D2\u4EF6 \u26A0\uFE0F\n- **\u6B64\u63D2\u4EF6\u4F5C\u8005\u53EA\u662F\u5236\u4F5C\u5DE5\u5177\uFF0C\u7F51\u7AD9API\u53CA\u5176\u5185\u5BB9\u5747\u4E0E\u4F5C\u8005\u65E0\u5173\uFF0C\u8BF7\u5408\u7406\u4F7F\u7528**\n- \u65E0\u9700\u5BC6\u7801\uFF0C\u76F4\u63A5\u6839\u636EQQ\u53F7\u67E5\u8BE2\u8D26\u53F7\u5C01\u7981\u72B6\u6001\u4E0E\u8BE6\u7EC6\u4FE1\u606F\n\n---\n\n<details>\n<summary><strong><span style=\"font-size: 1.3em; color: #2a2a2a;\">\uD83D\uDCE2 \u529F\u80FD\u7279\u70B9</span></strong></summary>\n\n- \u652F\u6301\u901A\u8FC7QQ\u53F7\u5FEB\u901F\u67E5\u8BE2LOL\u8D26\u53F7\u5C01\u7981\u72B6\u6001\n- \u81EA\u52A8\u91CD\u8BD5\u673A\u5236\uFF0C\u63D0\u9AD8\u67E5\u8BE2\u6210\u529F\u7387\n- \u65E5\u5FD7\u81EA\u52A8\u6E05\u7406\uFF0C\u907F\u514D\u65E5\u5FD7\u8FC7\u591A\u5360\u7528\u5185\u5B58\n- \u7B80\u5355\u6613\u7528\u7684\u6307\u4EE4\u64CD\u4F5C\uFF0C\u9002\u5408\u5404\u7C7B\u7528\u6237\n\n</details>\n\n<details>\n<summary><strong><span style=\"font-size: 1.3em; color: #2a2a2a;\">\uD83D\uDEE0\uFE0F \u914D\u7F6E\u8BF4\u660E</span></strong></summary>\n\n- apiUrl: \u76EE\u6807\u7F51\u7AD9\u7684API\u63A5\u53E3\u5730\u5740\uFF0C\u901A\u5E38\u65E0\u9700\u4FEE\u6539\n- apiToken: \u7F51\u7AD9API\u7684\u8BBF\u95EEToken\uFF08\u6CE8\u518C\u5373\u53EF\u83B7\u5F97\uFF09\uFF0C\u6CE8\u518C\u7F51\u7AD9\uFF1Ahttps://yun.4png.com/\n- retryTimes: \u8BF7\u6C42\u5931\u8D25\u65F6\u7684\u6700\u5927\u91CD\u8BD5\u6B21\u6570\uFF0C\u5EFA\u8BAE\u8BBE\u7F6E\u4E3A2-3\u6B21\n- retryDelay: \u6BCF\u6B21\u91CD\u8BD5\u7684\u95F4\u9694\u65F6\u95F4\uFF08\u6BEB\u79D2\uFF09\uFF0C\u5EFA\u8BAE\u8BBE\u7F6E\u4E3A1000-2000ms\n- maxLogCount: \u65E5\u5FD7\u81EA\u52A8\u6E05\u7406\u9608\u503C\uFF08\u6700\u5927\u5B58\u50A8\u6761\u6570\uFF09\uFF0C\u5EFA\u8BAE\u8BBE\u7F6E\u4E3A100-200\u6761\n\n</details>\n\n<details>\n<summary><strong><span style=\"font-size: 1.3em; color: #2a2a2a;\">\uD83D\uDCA1 \u4F7F\u7528\u6307\u4EE4</span></strong></summary>\n\n- \u67E5\u5C01\u53F7+\u7A7A\u683C+<qq\u53F7>\uFF1A\u67E5\u8BE2\u6307\u5B9AQQ\u53F7\u7684LOL\u5C01\u7981\u72B6\u6001\n- \u793A\u4F8B\uFF1A<pre><code>\u67E5\u5C01\u53F7 123456789</code></pre>\n\n</details>\n\n<details>\n<summary><strong><span style=\"font-size: 1.3em; color: #2a2a2a;\">\uD83D\uDCA1 \u4F7F\u7528\u6307\u4EE4</span></strong></summary>\n\n- \u67E5\u5C01\u53F7+\u7A7A\u683C+<qq\u53F7>\uFF1A\u67E5\u8BE2\u6307\u5B9AQQ\u53F7\u7684LOL\u5C01\u7981\u72B6\u6001\n- \u793A\u4F8B\uFF1A<pre><code>\u67E5\u5C01\u53F7 123456789</code></pre>\n\n</details>\n\n<details>\n<summary><strong><span style=\"font-size: 1.3em; color: #2a2a2a;\">\uD83D\uDCC4 \u6CE8\u610F\u4E8B\u9879</span></strong></summary>\n\n- \u8BF7\u786E\u4FDD\u63D0\u4F9B\u7684API Token\u6709\u6548\u4E14\u6709\u67E5\u8BE2\u6743\u9650\n- \u672C\u63D2\u4EF6\u4EC5\u4F9B\u67E5\u8BE2\u5C01\u7981\u72B6\u6001\uFF0C\u8BF7\u52FF\u7528\u4E8E\u5176\u4ED6\u7528\u9014\n\n</details>\n";
3
+ export declare const usage = "\n# \u26A0\uFE0F LOL\u5C01\u53F7\u67E5\u8BE2\u63D2\u4EF6 \u26A0\uFE0F\n- **\u6B64\u63D2\u4EF6\u4F5C\u8005\u53EA\u662F\u5236\u4F5C\u5DE5\u5177\uFF0C\u7F51\u7AD9API\u53CA\u5176\u5185\u5BB9\u5747\u4E0E\u4F5C\u8005\u65E0\u5173\uFF0C\u8BF7\u5408\u7406\u4F7F\u7528**\n- \u65E0\u9700\u5BC6\u7801\uFF0C\u76F4\u63A5\u6839\u636EQQ\u53F7\u67E5\u8BE2\u8D26\u53F7\u5C01\u7981\u72B6\u6001\u4E0E\u8BE6\u7EC6\u4FE1\u606F\n- \u6CE8\u518C\u7F51\u7AD9\uFF1Ahttps://yun.4png.com/\n\n---\n\n<details>\n<summary><strong><span style=\"font-size: 1.3em; color: #2a2a2a;\">\uD83D\uDCE2 \u529F\u80FD\u7279\u70B9</span></strong></summary>\n\n- \u652F\u6301\u901A\u8FC7QQ\u53F7\u5FEB\u901F\u67E5\u8BE2LOL\u8D26\u53F7\u5C01\u7981\u72B6\u6001\n- \u81EA\u52A8\u91CD\u8BD5\u673A\u5236\uFF0C\u63D0\u9AD8\u67E5\u8BE2\u6210\u529F\u7387\n- \u7B80\u5355\u6613\u7528\u7684\u6307\u4EE4\u64CD\u4F5C\uFF0C\u9002\u5408\u5404\u7C7B\u7528\u6237\n\n</details>\n\n<details>\n<summary><strong><span style=\"font-size: 1.3em; color: #2a2a2a;\">\uD83D\uDEE0\uFE0F \u914D\u7F6E\u8BF4\u660E</span></strong></summary>\n\n- apiUrl: \u76EE\u6807\u7F51\u7AD9\u7684API\u63A5\u53E3\u5730\u5740\uFF0C\u901A\u5E38\u65E0\u9700\u4FEE\u6539\n- apiToken: \u7F51\u7AD9API\u7684\u8BBF\u95EEToken\uFF08\u6CE8\u518C\u5373\u53EF\u83B7\u5F97\uFF09\uFF0C\u6CE8\u518C\u7F51\u7AD9\uFF1Ahttps://yun.4png.com/\n- retryTimes: \u8BF7\u6C42\u5931\u8D25\u65F6\u7684\u6700\u5927\u91CD\u8BD5\u6B21\u6570\uFF0C\u5EFA\u8BAE\u8BBE\u7F6E\u4E3A2-3\u6B21\n- retryDelay: \u6BCF\u6B21\u91CD\u8BD5\u7684\u95F4\u9694\u65F6\u95F4\uFF08\u6BEB\u79D2\uFF09\uFF0C\u5EFA\u8BAE\u8BBE\u7F6E\u4E3A1000-2000ms\n\n</details>\n\n<details>\n<summary><strong><span style=\"font-size: 1.3em; color: #2a2a2a;\">\uD83D\uDCA1 \u4F7F\u7528\u6307\u4EE4</span></strong></summary>\n\n- \u67E5\u5C01\u53F7+\u7A7A\u683C+<qq\u53F7>\uFF1A\u67E5\u8BE2\u6307\u5B9AQQ\u53F7\u7684LOL\u5C01\u7981\u72B6\u6001\n- \u793A\u4F8B\uFF1A<pre><code>\u67E5\u5C01\u53F7 123456789</code></pre>\n\n</details>\n\n<details>\n<summary><strong><span style=\"font-size: 1.3em; color: #2a2a2a;\">\uD83D\uDCC4 \u6CE8\u610F\u4E8B\u9879</span></strong></summary>\n\n- \u8BF7\u786E\u4FDD\u63D0\u4F9B\u7684API Token\u6709\u6548\u4E14\u6709\u67E5\u8BE2\u6743\u9650\n- \u672C\u63D2\u4EF6\u4EC5\u4F9B\u67E5\u8BE2\u5C01\u7981\u72B6\u6001\uFF0C\u8BF7\u52FF\u7528\u4E8E\u5176\u4ED6\u7528\u9014\n\n</details>\n";
4
4
  export declare enum ReplyMode {
5
5
  MENTION = "mention",// @用户
6
6
  QUOTE = "quote",// 引用回复
7
7
  NORMAL = "normal"
8
8
  }
9
9
  export interface Config {
10
- apiUrl: string;
11
- apiToken: string;
12
- retryTimes: number;
13
- retryDelay: number;
14
- maxLogCount: number;
15
- replyMode: ReplyMode;
10
+ api: {
11
+ apiUrl: string;
12
+ apiToken: string;
13
+ };
14
+ reply: {
15
+ replyMode: ReplyMode;
16
+ };
17
+ retry: {
18
+ retryTimes: number;
19
+ retryDelay: number;
20
+ };
16
21
  }
17
22
  export declare const Config: Schema<Config>;
18
23
  export declare function apply(ctx: Context, config: Config): void;
package/lib/index.js CHANGED
@@ -33,6 +33,7 @@ var usage = `
33
33
  # ⚠️ LOL封号查询插件 ⚠️
34
34
  - **此插件作者只是制作工具,网站API及其内容均与作者无关,请合理使用**
35
35
  - 无需密码,直接根据QQ号查询账号封禁状态与详细信息
36
+ - 注册网站:https://yun.4png.com/
36
37
 
37
38
  ---
38
39
 
@@ -41,7 +42,6 @@ var usage = `
41
42
 
42
43
  - 支持通过QQ号快速查询LOL账号封禁状态
43
44
  - 自动重试机制,提高查询成功率
44
- - 日志自动清理,避免日志过多占用内存
45
45
  - 简单易用的指令操作,适合各类用户
46
46
 
47
47
  </details>
@@ -53,15 +53,6 @@ var usage = `
53
53
  - apiToken: 网站API的访问Token(注册即可获得),注册网站:https://yun.4png.com/
54
54
  - retryTimes: 请求失败时的最大重试次数,建议设置为2-3次
55
55
  - retryDelay: 每次重试的间隔时间(毫秒),建议设置为1000-2000ms
56
- - maxLogCount: 日志自动清理阈值(最大存储条数),建议设置为100-200条
57
-
58
- </details>
59
-
60
- <details>
61
- <summary><strong><span style="font-size: 1.3em; color: #2a2a2a;">💡 使用指令</span></strong></summary>
62
-
63
- - 查封号+空格+<qq号>:查询指定QQ号的LOL封禁状态
64
- - 示例:<pre><code>查封号 123456789</code></pre>
65
56
 
66
57
  </details>
67
58
 
@@ -87,67 +78,65 @@ var ReplyMode = /* @__PURE__ */ ((ReplyMode2) => {
87
78
  ReplyMode2["NORMAL"] = "normal";
88
79
  return ReplyMode2;
89
80
  })(ReplyMode || {});
90
- var Config = import_koishi.Schema.object({
91
- apiUrl: import_koishi.Schema.string().description("目标网站的API接口地址").default("https://yun.4png.com/api/query.html "),
92
- apiToken: import_koishi.Schema.string().description("网站API的访问Token(注册即可获得)").required(),
93
- replyMode: import_koishi.Schema.union([
94
- // 新增配置项
95
- import_koishi.Schema.const("mention" /* MENTION */).description("使用 @ 用户进行回复"),
96
- import_koishi.Schema.const("quote" /* QUOTE */).description("使用引用进行回复"),
97
- import_koishi.Schema.const("normal" /* NORMAL */).description("保持普通回复")
98
- ]).description("机器人回复消息的方式").default("normal" /* NORMAL */),
99
- // 默认为普通模式
100
- retryTimes: import_koishi.Schema.number().description("请求失败时的最大重试次数").default(2).min(0).max(5),
101
- retryDelay: import_koishi.Schema.number().description("每次重试的间隔时间(毫秒)").default(1e3).min(500).max(5e3),
102
- maxLogCount: import_koishi.Schema.number().description("日志自动清理阈值(最大存储条数)").default(100).min(20).max(500)
103
- });
104
- var logCache = [];
105
- function addLogAndClean(logger, content, maxCount) {
106
- const formattedLog = `[${(/* @__PURE__ */ new Date()).toLocaleString()}] ${content}`;
107
- logCache.push(formattedLog);
108
- if (logCache.length > maxCount) {
109
- const deleteCount = logCache.length - maxCount;
110
- logCache.splice(0, deleteCount);
111
- logger.info(`[日志清理] 已删除${deleteCount}条旧日志,当前保留${logCache.length}条`);
112
- }
113
- }
114
- __name(addLogAndClean, "addLogAndClean");
115
- async function requestWithRetry(ctx, config, qq, logger) {
81
+ var Config = import_koishi.Schema.intersect([
82
+ // 使用 intersect 来组合多个对象
83
+ import_koishi.Schema.object({
84
+ api: import_koishi.Schema.object({
85
+ // API相关配置分组
86
+ apiUrl: import_koishi.Schema.string().description("目标网站的API接口地址").default("https://yun.4png.com/api/query.html"),
87
+ apiToken: import_koishi.Schema.string().description("网站API的访问Token(注册即可获得)").required()
88
+ // 需要用户输入的
89
+ }).description("API 设置"),
90
+ // API 相关配置的分组描述
91
+ reply: import_koishi.Schema.object({
92
+ // 回复相关配置分组
93
+ replyMode: import_koishi.Schema.union([
94
+ import_koishi.Schema.const("mention" /* MENTION */).description("使用 @ 用户进行回复"),
95
+ import_koishi.Schema.const("quote" /* QUOTE */).description("使用引用进行回复"),
96
+ import_koishi.Schema.const("normal" /* NORMAL */).description("保持普通回复")
97
+ ]).description("机器人回复消息的方式").default("normal" /* NORMAL */)
98
+ // 默认为普通模式
99
+ }).description("回复 设置"),
100
+ // 回复相关配置的分组描述
101
+ retry: import_koishi.Schema.object({
102
+ // 重试相关配置分组
103
+ retryTimes: import_koishi.Schema.number().description("请求失败时的最大重试次数").default(2).min(0).max(5),
104
+ retryDelay: import_koishi.Schema.number().description("每次重试的间隔时间(毫秒)").default(1e3).min(500).max(5e3)
105
+ }).description("重试 设置")
106
+ })
107
+ ]);
108
+ async function requestWithRetry(ctx, config, qq) {
116
109
  let attempt = 0;
117
- while (attempt <= config.retryTimes) {
110
+ const { apiUrl, apiToken } = config.api;
111
+ const { retryTimes, retryDelay } = config.retry;
112
+ const logger = ctx.logger(name);
113
+ while (attempt <= retryTimes) {
118
114
  try {
119
- const requestLog = `[第${attempt + 1}次请求] 开始查询QQ:${qq},目标API:${config.apiUrl}`;
120
- addLogAndClean(logger, requestLog, config.maxLogCount);
115
+ const requestLog = `请求API(尝试第 ${attempt + 1} 次)`;
121
116
  logger.info(requestLog);
122
- const response = await ctx.http.get(config.apiUrl, {
117
+ const response = await ctx.http.get(apiUrl, {
123
118
  params: {
124
119
  qq,
125
- token: config.apiToken
120
+ token: apiToken
126
121
  },
127
- // 强制解析JSON,避免返回文本格式
128
- responseType: "json"
122
+ responseType: "json",
123
+ timeout: 5e3
129
124
  });
130
- const successLog = `[第${attempt + 1}次请求] 查询成功,返回状态码:200`;
131
- addLogAndClean(logger, successLog, config.maxLogCount);
132
- logger.success(successLog);
125
+ const successLog = `API请求成功(第 ${attempt + 1} 次)`;
126
+ logger.info(successLog);
133
127
  return response;
134
128
  } catch (error) {
135
129
  attempt++;
136
130
  const status = error.response?.status || "未知状态";
137
- const failLog = `[第${attempt}次请求] 失败,状态码:${status},错误信息:${error.message}`;
138
- addLogAndClean(logger, failLog, config.maxLogCount);
139
- logger.warn(failLog);
140
- const isRetryable = [400, 403].includes(status);
141
- if (!isRetryable || attempt > config.retryTimes) {
142
- const endLog = `[请求终止] 非重试错误或已达最大重试次数(${config.retryTimes}次)`;
143
- addLogAndClean(logger, endLog, config.maxLogCount);
144
- logger.error(endLog);
131
+ const errorLog = `API请求失败(第 ${attempt} 次,状态:${status},错误:${error.message || error.code})`;
132
+ logger.warn(errorLog);
133
+ const isRetryable = status >= 500 || !status || ["ECONNRESET", "ETIMEDOUT"].includes(error.code);
134
+ if (!isRetryable || attempt > retryTimes) {
135
+ const finalErrorLog = `达到最大重试次数或不可重试错误,停止请求`;
136
+ logger.error(finalErrorLog);
145
137
  throw error;
146
138
  }
147
- const retryLog = `[准备重试] 间隔${config.retryDelay}ms后进行第${attempt}次重试`;
148
- addLogAndClean(logger, retryLog, config.maxLogCount);
149
- logger.info(retryLog);
150
- await (0, import_koishi.sleep)(config.retryDelay);
139
+ await (0, import_koishi.sleep)(retryDelay);
151
140
  }
152
141
  }
153
142
  throw new Error("达到最大重试次数,请求失败");
@@ -159,10 +148,10 @@ function isValidQQ(qq) {
159
148
  __name(isValidQQ, "isValidQQ");
160
149
  function formatReplyMessage(session, message, config) {
161
150
  let prefix = "";
162
- if (config.replyMode === "mention" /* MENTION */) {
163
- prefix = import_koishi.h.at(session.userId).toString();
151
+ if (config.reply.replyMode === "mention" /* MENTION */) {
152
+ prefix = import_koishi.h.at(session.userId).toString() + "&#13;";
164
153
  }
165
- if (config.replyMode === "quote" /* QUOTE */) {
154
+ if (config.reply.replyMode === "quote" /* QUOTE */) {
166
155
  prefix = import_koishi.h.quote(session.messageId).toString();
167
156
  }
168
157
  return prefix + message;
@@ -170,43 +159,99 @@ function formatReplyMessage(session, message, config) {
170
159
  __name(formatReplyMessage, "formatReplyMessage");
171
160
  function apply(ctx, config) {
172
161
  const logger = ctx.logger(name);
173
- ctx.command("查封号 <qq号>", "查询QQ号封号状态").action(async ({ session }, qq) => {
174
- if (!isValidQQ(qq)) {
175
- const errMsg = `QQ号格式错误:${qq}(需5-13位数字)`;
176
- addLogAndClean(logger, errMsg, config.maxLogCount);
177
- logger.warn(errMsg);
178
- return formatReplyMessage(session, `❌ ${errMsg}`, config);
179
- }
180
- try {
181
- const result = await requestWithRetry(ctx, config, qq, logger);
182
- const msg = result.msg || "无返回信息";
183
- switch (result.code) {
184
- case 200:
185
- const banInfo = result.data?.banmsg || "无详细封禁信息";
186
- const successResLog = `[查询结果] QQ${qq}:${msg} → ${banInfo}`;
187
- addLogAndClean(logger, successResLog, config.maxLogCount);
188
- logger.success(successResLog);
189
- return formatReplyMessage(session, `✅ 查询成功:${msg}
190
- 📝 详细信息:${banInfo}`, config);
191
- case 400:
192
- const warnResLog = `[查询结果] QQ${qq} 400错误:${msg}`;
193
- addLogAndClean(logger, warnResLog, config.maxLogCount);
194
- logger.warn(warnResLog);
195
- return formatReplyMessage(session, `❌ 查询失败 [错误码400]:${msg}(参数缺失,请检查配置)`, config);
196
- default:
197
- const infoResLog = `[查询结果] QQ${qq} 错误码${result.code}:${msg}`;
198
- addLogAndClean(logger, infoResLog, config.maxLogCount);
199
- logger.info(infoResLog);
200
- return formatReplyMessage(session, `❌ 查询失败 [错误码${result.code}]:${msg}`, config);
162
+ ctx.command("查封号 <qq号>", "查询QQ号封号状态").action(
163
+ async ({ session }, qq) => {
164
+ if (!isValidQQ(qq)) {
165
+ const errorLog = `QQ号格式错误:${qq}`;
166
+ logger.warn(errorLog);
167
+ return formatReplyMessage(session, `❌ QQ号格式错误:${qq}(需5-13位数字)`, config);
168
+ }
169
+ try {
170
+ const result = await requestWithRetry(ctx, config, qq);
171
+ const msg = result.msg || "无返回信息";
172
+ switch (result.code) {
173
+ case 200:
174
+ const banInfo = result.data?.banmsg || "无详细封禁信息";
175
+ const successLog = `查询成功:QQ号 ${qq},封禁信息:${banInfo}`;
176
+ logger.info(successLog);
177
+ return formatReplyMessage(
178
+ session,
179
+ `✅ 查询成功:${msg}
180
+ 📝 详细信息:${banInfo}`,
181
+ config
182
+ );
183
+ case 400:
184
+ const failLog = `查询失败 [错误码400]:${msg}`;
185
+ logger.warn(failLog);
186
+ return formatReplyMessage(
187
+ session,
188
+ `❌ 查询失败 [错误码400]:${msg}(参数缺失,请检查配置)`,
189
+ config
190
+ );
191
+ case 401:
192
+ logger.warn(`Token 无效 [401]:${msg}`);
193
+ return formatReplyMessage(
194
+ session,
195
+ `🔑 API Token 无效或未授权 [401]:${msg}并更新配置`,
196
+ config
197
+ );
198
+ case 403:
199
+ logger.warn(`请求被拒绝 [403]:频率限制或IP封禁`);
200
+ return formatReplyMessage(
201
+ session,
202
+ `🛑 请求被拒绝 [403]:可能因查询过于频繁或IP受限
203
+ ⏳ 建议稍后再试,或联系 API 提供方`,
204
+ config
205
+ );
206
+ case 404:
207
+ logger.info(`未找到账号 [404]:QQ ${qq} 未绑定LOL账号或无封禁记录`);
208
+ return formatReplyMessage(
209
+ session,
210
+ `❓ 未找到相关信息 [404]
211
+ 📢 QQ ${qq} 可能未绑定《英雄联盟》账号,或当前无封禁记录`,
212
+ config
213
+ );
214
+ case 500:
215
+ logger.error(`服务器内部错误 [500]:${msg}`);
216
+ return formatReplyMessage(
217
+ session,
218
+ `🛠️ 服务器内部错误 [500]:${msg}
219
+ 📡 问题出在 API 服务端,请稍后再试`,
220
+ config
221
+ );
222
+ case 502:
223
+ case 503:
224
+ case 504:
225
+ logger.error(`服务不可用 [${result.code}]:${msg}`);
226
+ return formatReplyMessage(
227
+ session,
228
+ `☁️ 服务暂时不可用 [${result.code}]:${msg}
229
+ 🔌 可能是 API 服务维护或超载,请稍后重试`,
230
+ config
231
+ );
232
+ default:
233
+ const unknownLog = `查询失败 [错误码${result.code}]:${msg}`;
234
+ logger.warn(unknownLog);
235
+ return formatReplyMessage(
236
+ session,
237
+ `❗ 收到未知响应码 [${result.code}]:${msg}
238
+ 🔍 请检查 API 文档或联系插件作者`,
239
+ config
240
+ );
241
+ }
242
+ } catch (error) {
243
+ const errMsg = error.message || "未知错误";
244
+ const errorLog = `接口调用出错:${errMsg}`;
245
+ logger.error(errorLog);
246
+ return formatReplyMessage(
247
+ session,
248
+ `⚠️ 查询过程中发生错误
249
+ 📡 请检查网络、API 地址及 Token 配置`,
250
+ config
251
+ );
201
252
  }
202
- } catch (error) {
203
- const errMsg = error.message || "未知错误";
204
- const errorLog = `[接口调用出错] QQ${qq}:${errMsg}`;
205
- addLogAndClean(logger, errorLog, config.maxLogCount);
206
- logger.error(errorLog);
207
- return formatReplyMessage(session, `⚠️ 接口调用出错:${errMsg}`, config);
208
253
  }
209
- });
254
+ );
210
255
  }
211
256
  __name(apply, "apply");
212
257
  // Annotate the CommonJS export names for ESM import in node:
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "koishi-plugin-lolbaninfo",
3
3
  "description": "LOL封号查询插件",
4
- "version": "1.1.0",
4
+ "version": "1.1.2",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/lenksen/lolbaninfo.git"