koishi-plugin-lolbaninfo 1.0.3 → 1.1.0
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 +7 -1
- package/lib/index.js +34 -8
- package/package.json +1 -1
package/lib/index.d.ts
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
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";
|
|
4
|
+
export declare enum ReplyMode {
|
|
5
|
+
MENTION = "mention",// @用户
|
|
6
|
+
QUOTE = "quote",// 引用回复
|
|
7
|
+
NORMAL = "normal"
|
|
8
|
+
}
|
|
3
9
|
export interface Config {
|
|
4
10
|
apiUrl: string;
|
|
5
11
|
apiToken: string;
|
|
6
12
|
retryTimes: number;
|
|
7
13
|
retryDelay: number;
|
|
8
14
|
maxLogCount: number;
|
|
15
|
+
replyMode: ReplyMode;
|
|
9
16
|
}
|
|
10
|
-
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";
|
|
11
17
|
export declare const Config: Schema<Config>;
|
|
12
18
|
export declare function apply(ctx: Context, config: Config): void;
|
package/lib/index.js
CHANGED
|
@@ -21,6 +21,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
21
21
|
var src_exports = {};
|
|
22
22
|
__export(src_exports, {
|
|
23
23
|
Config: () => Config,
|
|
24
|
+
ReplyMode: () => ReplyMode,
|
|
24
25
|
apply: () => apply,
|
|
25
26
|
name: () => name,
|
|
26
27
|
usage: () => usage
|
|
@@ -80,9 +81,22 @@ var usage = `
|
|
|
80
81
|
|
|
81
82
|
</details>
|
|
82
83
|
`;
|
|
84
|
+
var ReplyMode = /* @__PURE__ */ ((ReplyMode2) => {
|
|
85
|
+
ReplyMode2["MENTION"] = "mention";
|
|
86
|
+
ReplyMode2["QUOTE"] = "quote";
|
|
87
|
+
ReplyMode2["NORMAL"] = "normal";
|
|
88
|
+
return ReplyMode2;
|
|
89
|
+
})(ReplyMode || {});
|
|
83
90
|
var Config = import_koishi.Schema.object({
|
|
84
|
-
apiUrl: import_koishi.Schema.string().description("目标网站的API接口地址").default("https://yun.4png.com/api/query.html"),
|
|
91
|
+
apiUrl: import_koishi.Schema.string().description("目标网站的API接口地址").default("https://yun.4png.com/api/query.html "),
|
|
85
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
|
+
// 默认为普通模式
|
|
86
100
|
retryTimes: import_koishi.Schema.number().description("请求失败时的最大重试次数").default(2).min(0).max(5),
|
|
87
101
|
retryDelay: import_koishi.Schema.number().description("每次重试的间隔时间(毫秒)").default(1e3).min(500).max(5e3),
|
|
88
102
|
maxLogCount: import_koishi.Schema.number().description("日志自动清理阈值(最大存储条数)").default(100).min(20).max(500)
|
|
@@ -143,14 +157,25 @@ function isValidQQ(qq) {
|
|
|
143
157
|
return /^\d{5,13}$/.test(qq);
|
|
144
158
|
}
|
|
145
159
|
__name(isValidQQ, "isValidQQ");
|
|
160
|
+
function formatReplyMessage(session, message, config) {
|
|
161
|
+
let prefix = "";
|
|
162
|
+
if (config.replyMode === "mention" /* MENTION */) {
|
|
163
|
+
prefix = import_koishi.h.at(session.userId).toString();
|
|
164
|
+
}
|
|
165
|
+
if (config.replyMode === "quote" /* QUOTE */) {
|
|
166
|
+
prefix = import_koishi.h.quote(session.messageId).toString();
|
|
167
|
+
}
|
|
168
|
+
return prefix + message;
|
|
169
|
+
}
|
|
170
|
+
__name(formatReplyMessage, "formatReplyMessage");
|
|
146
171
|
function apply(ctx, config) {
|
|
147
172
|
const logger = ctx.logger(name);
|
|
148
|
-
ctx.command("查封号 <qq号>", "查询QQ号封号状态").action(async (
|
|
173
|
+
ctx.command("查封号 <qq号>", "查询QQ号封号状态").action(async ({ session }, qq) => {
|
|
149
174
|
if (!isValidQQ(qq)) {
|
|
150
175
|
const errMsg = `QQ号格式错误:${qq}(需5-13位数字)`;
|
|
151
176
|
addLogAndClean(logger, errMsg, config.maxLogCount);
|
|
152
177
|
logger.warn(errMsg);
|
|
153
|
-
return `❌ ${errMsg}
|
|
178
|
+
return formatReplyMessage(session, `❌ ${errMsg}`, config);
|
|
154
179
|
}
|
|
155
180
|
try {
|
|
156
181
|
const result = await requestWithRetry(ctx, config, qq, logger);
|
|
@@ -161,25 +186,25 @@ function apply(ctx, config) {
|
|
|
161
186
|
const successResLog = `[查询结果] QQ${qq}:${msg} → ${banInfo}`;
|
|
162
187
|
addLogAndClean(logger, successResLog, config.maxLogCount);
|
|
163
188
|
logger.success(successResLog);
|
|
164
|
-
return `✅ 查询成功:${msg}
|
|
165
|
-
📝 详细信息:${banInfo}
|
|
189
|
+
return formatReplyMessage(session, `✅ 查询成功:${msg}
|
|
190
|
+
📝 详细信息:${banInfo}`, config);
|
|
166
191
|
case 400:
|
|
167
192
|
const warnResLog = `[查询结果] QQ${qq} 400错误:${msg}`;
|
|
168
193
|
addLogAndClean(logger, warnResLog, config.maxLogCount);
|
|
169
194
|
logger.warn(warnResLog);
|
|
170
|
-
return `❌ 查询失败 [错误码400]:${msg}
|
|
195
|
+
return formatReplyMessage(session, `❌ 查询失败 [错误码400]:${msg}(参数缺失,请检查配置)`, config);
|
|
171
196
|
default:
|
|
172
197
|
const infoResLog = `[查询结果] QQ${qq} 错误码${result.code}:${msg}`;
|
|
173
198
|
addLogAndClean(logger, infoResLog, config.maxLogCount);
|
|
174
199
|
logger.info(infoResLog);
|
|
175
|
-
return `❌ 查询失败 [错误码${result.code}]:${msg}
|
|
200
|
+
return formatReplyMessage(session, `❌ 查询失败 [错误码${result.code}]:${msg}`, config);
|
|
176
201
|
}
|
|
177
202
|
} catch (error) {
|
|
178
203
|
const errMsg = error.message || "未知错误";
|
|
179
204
|
const errorLog = `[接口调用出错] QQ${qq}:${errMsg}`;
|
|
180
205
|
addLogAndClean(logger, errorLog, config.maxLogCount);
|
|
181
206
|
logger.error(errorLog);
|
|
182
|
-
return `⚠️ 接口调用出错:${errMsg}
|
|
207
|
+
return formatReplyMessage(session, `⚠️ 接口调用出错:${errMsg}`, config);
|
|
183
208
|
}
|
|
184
209
|
});
|
|
185
210
|
}
|
|
@@ -187,6 +212,7 @@ __name(apply, "apply");
|
|
|
187
212
|
// Annotate the CommonJS export names for ESM import in node:
|
|
188
213
|
0 && (module.exports = {
|
|
189
214
|
Config,
|
|
215
|
+
ReplyMode,
|
|
190
216
|
apply,
|
|
191
217
|
name,
|
|
192
218
|
usage
|