koishi-plugin-warframe 1.6.6 → 1.7.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 +222 -130
- package/lib/index.js +475 -211
- package/lib/index.tsbuildinfo +1 -1
- package/package.json +11 -2
- /package/lib/{assets → warframe/assets}/arbyRewards.json +0 -0
- /package/lib/{assets → warframe/assets}/arbys.txt +0 -0
- /package/lib/{assets → warframe/assets}/baro.txt +0 -0
- /package/lib/{assets → warframe/assets}/baroParsed.json +0 -0
- /package/lib/{assets → warframe/assets}/circuitRewards.json +0 -0
- /package/lib/{assets → warframe/assets}/en.json +0 -0
- /package/lib/{assets → warframe/assets}/rivenAttrValues.json +0 -0
- /package/lib/{assets → warframe/assets}/rivencalc.json +0 -0
- /package/lib/{assets → warframe/assets}/warframeAlias.json +0 -0
- /package/lib/{assets → warframe/assets}/zh.json +0 -0
package/lib/index.js
CHANGED
|
@@ -156,7 +156,7 @@ var require_DLList = __commonJS({
|
|
|
156
156
|
var require_Events = __commonJS({
|
|
157
157
|
"node_modules/bottleneck/lib/Events.js"(exports2, module2) {
|
|
158
158
|
"use strict";
|
|
159
|
-
function asyncGeneratorStep2(gen,
|
|
159
|
+
function asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, key, arg) {
|
|
160
160
|
try {
|
|
161
161
|
var info = gen[key](arg);
|
|
162
162
|
var value = info.value;
|
|
@@ -165,7 +165,7 @@ var require_Events = __commonJS({
|
|
|
165
165
|
return;
|
|
166
166
|
}
|
|
167
167
|
if (info.done) {
|
|
168
|
-
|
|
168
|
+
resolve3(value);
|
|
169
169
|
} else {
|
|
170
170
|
Promise.resolve(value).then(_next, _throw);
|
|
171
171
|
}
|
|
@@ -174,14 +174,14 @@ var require_Events = __commonJS({
|
|
|
174
174
|
function _asyncToGenerator2(fn) {
|
|
175
175
|
return function() {
|
|
176
176
|
var self2 = this, args = arguments;
|
|
177
|
-
return new Promise(function(
|
|
177
|
+
return new Promise(function(resolve3, reject) {
|
|
178
178
|
var gen = fn.apply(self2, args);
|
|
179
179
|
function _next(value) {
|
|
180
|
-
asyncGeneratorStep2(gen,
|
|
180
|
+
asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "next", value);
|
|
181
181
|
}
|
|
182
182
|
__name(_next, "_next");
|
|
183
183
|
function _throw(err) {
|
|
184
|
-
asyncGeneratorStep2(gen,
|
|
184
|
+
asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "throw", err);
|
|
185
185
|
}
|
|
186
186
|
__name(_throw, "_throw");
|
|
187
187
|
_next(void 0);
|
|
@@ -384,7 +384,7 @@ var require_BottleneckError = __commonJS({
|
|
|
384
384
|
var require_Job = __commonJS({
|
|
385
385
|
"node_modules/bottleneck/lib/Job.js"(exports2, module2) {
|
|
386
386
|
"use strict";
|
|
387
|
-
function asyncGeneratorStep2(gen,
|
|
387
|
+
function asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, key, arg) {
|
|
388
388
|
try {
|
|
389
389
|
var info = gen[key](arg);
|
|
390
390
|
var value = info.value;
|
|
@@ -393,7 +393,7 @@ var require_Job = __commonJS({
|
|
|
393
393
|
return;
|
|
394
394
|
}
|
|
395
395
|
if (info.done) {
|
|
396
|
-
|
|
396
|
+
resolve3(value);
|
|
397
397
|
} else {
|
|
398
398
|
Promise.resolve(value).then(_next, _throw);
|
|
399
399
|
}
|
|
@@ -402,14 +402,14 @@ var require_Job = __commonJS({
|
|
|
402
402
|
function _asyncToGenerator2(fn) {
|
|
403
403
|
return function() {
|
|
404
404
|
var self2 = this, args = arguments;
|
|
405
|
-
return new Promise(function(
|
|
405
|
+
return new Promise(function(resolve3, reject) {
|
|
406
406
|
var gen = fn.apply(self2, args);
|
|
407
407
|
function _next(value) {
|
|
408
|
-
asyncGeneratorStep2(gen,
|
|
408
|
+
asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "next", value);
|
|
409
409
|
}
|
|
410
410
|
__name(_next, "_next");
|
|
411
411
|
function _throw(err) {
|
|
412
|
-
asyncGeneratorStep2(gen,
|
|
412
|
+
asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "throw", err);
|
|
413
413
|
}
|
|
414
414
|
__name(_throw, "_throw");
|
|
415
415
|
_next(void 0);
|
|
@@ -595,7 +595,7 @@ var require_Job = __commonJS({
|
|
|
595
595
|
var require_LocalDatastore = __commonJS({
|
|
596
596
|
"node_modules/bottleneck/lib/LocalDatastore.js"(exports2, module2) {
|
|
597
597
|
"use strict";
|
|
598
|
-
function asyncGeneratorStep2(gen,
|
|
598
|
+
function asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, key, arg) {
|
|
599
599
|
try {
|
|
600
600
|
var info = gen[key](arg);
|
|
601
601
|
var value = info.value;
|
|
@@ -604,7 +604,7 @@ var require_LocalDatastore = __commonJS({
|
|
|
604
604
|
return;
|
|
605
605
|
}
|
|
606
606
|
if (info.done) {
|
|
607
|
-
|
|
607
|
+
resolve3(value);
|
|
608
608
|
} else {
|
|
609
609
|
Promise.resolve(value).then(_next, _throw);
|
|
610
610
|
}
|
|
@@ -613,14 +613,14 @@ var require_LocalDatastore = __commonJS({
|
|
|
613
613
|
function _asyncToGenerator2(fn) {
|
|
614
614
|
return function() {
|
|
615
615
|
var self2 = this, args = arguments;
|
|
616
|
-
return new Promise(function(
|
|
616
|
+
return new Promise(function(resolve3, reject) {
|
|
617
617
|
var gen = fn.apply(self2, args);
|
|
618
618
|
function _next(value) {
|
|
619
|
-
asyncGeneratorStep2(gen,
|
|
619
|
+
asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "next", value);
|
|
620
620
|
}
|
|
621
621
|
__name(_next, "_next");
|
|
622
622
|
function _throw(err) {
|
|
623
|
-
asyncGeneratorStep2(gen,
|
|
623
|
+
asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "throw", err);
|
|
624
624
|
}
|
|
625
625
|
__name(_throw, "_throw");
|
|
626
626
|
_next(void 0);
|
|
@@ -694,8 +694,8 @@ var require_LocalDatastore = __commonJS({
|
|
|
694
694
|
})();
|
|
695
695
|
}
|
|
696
696
|
yieldLoop(t2 = 0) {
|
|
697
|
-
return new this.Promise(function(
|
|
698
|
-
return setTimeout(
|
|
697
|
+
return new this.Promise(function(resolve3, reject) {
|
|
698
|
+
return setTimeout(resolve3, t2);
|
|
699
699
|
});
|
|
700
700
|
}
|
|
701
701
|
computePenalty() {
|
|
@@ -733,11 +733,11 @@ var require_LocalDatastore = __commonJS({
|
|
|
733
733
|
return _this6._done;
|
|
734
734
|
})();
|
|
735
735
|
}
|
|
736
|
-
__groupCheck__(
|
|
736
|
+
__groupCheck__(time2) {
|
|
737
737
|
var _this7 = this;
|
|
738
738
|
return _asyncToGenerator2(function* () {
|
|
739
739
|
yield _this7.yieldLoop();
|
|
740
|
-
return _this7._nextRequest + _this7.timeout <
|
|
740
|
+
return _this7._nextRequest + _this7.timeout < time2;
|
|
741
741
|
})();
|
|
742
742
|
}
|
|
743
743
|
computeCapacity() {
|
|
@@ -1165,7 +1165,7 @@ var require_Scripts = __commonJS({
|
|
|
1165
1165
|
var require_RedisConnection = __commonJS({
|
|
1166
1166
|
"node_modules/bottleneck/lib/RedisConnection.js"(exports, module) {
|
|
1167
1167
|
"use strict";
|
|
1168
|
-
function asyncGeneratorStep(gen,
|
|
1168
|
+
function asyncGeneratorStep(gen, resolve3, reject, _next, _throw, key, arg) {
|
|
1169
1169
|
try {
|
|
1170
1170
|
var info = gen[key](arg);
|
|
1171
1171
|
var value = info.value;
|
|
@@ -1174,7 +1174,7 @@ var require_RedisConnection = __commonJS({
|
|
|
1174
1174
|
return;
|
|
1175
1175
|
}
|
|
1176
1176
|
if (info.done) {
|
|
1177
|
-
|
|
1177
|
+
resolve3(value);
|
|
1178
1178
|
} else {
|
|
1179
1179
|
Promise.resolve(value).then(_next, _throw);
|
|
1180
1180
|
}
|
|
@@ -1183,14 +1183,14 @@ var require_RedisConnection = __commonJS({
|
|
|
1183
1183
|
function _asyncToGenerator(fn) {
|
|
1184
1184
|
return function() {
|
|
1185
1185
|
var self2 = this, args = arguments;
|
|
1186
|
-
return new Promise(function(
|
|
1186
|
+
return new Promise(function(resolve3, reject) {
|
|
1187
1187
|
var gen = fn.apply(self2, args);
|
|
1188
1188
|
function _next(value) {
|
|
1189
|
-
asyncGeneratorStep(gen,
|
|
1189
|
+
asyncGeneratorStep(gen, resolve3, reject, _next, _throw, "next", value);
|
|
1190
1190
|
}
|
|
1191
1191
|
__name(_next, "_next");
|
|
1192
1192
|
function _throw(err) {
|
|
1193
|
-
asyncGeneratorStep(gen,
|
|
1193
|
+
asyncGeneratorStep(gen, resolve3, reject, _next, _throw, "throw", err);
|
|
1194
1194
|
}
|
|
1195
1195
|
__name(_throw, "_throw");
|
|
1196
1196
|
_next(void 0);
|
|
@@ -1236,7 +1236,7 @@ var require_RedisConnection = __commonJS({
|
|
|
1236
1236
|
}
|
|
1237
1237
|
_setup(client, sub) {
|
|
1238
1238
|
client.setMaxListeners(0);
|
|
1239
|
-
return new this.Promise((
|
|
1239
|
+
return new this.Promise((resolve3, reject) => {
|
|
1240
1240
|
client.on("error", (e) => {
|
|
1241
1241
|
return this.Events.trigger("error", e);
|
|
1242
1242
|
});
|
|
@@ -1247,14 +1247,14 @@ var require_RedisConnection = __commonJS({
|
|
|
1247
1247
|
});
|
|
1248
1248
|
}
|
|
1249
1249
|
if (client.ready) {
|
|
1250
|
-
return
|
|
1250
|
+
return resolve3();
|
|
1251
1251
|
} else {
|
|
1252
|
-
return client.once("ready",
|
|
1252
|
+
return client.once("ready", resolve3);
|
|
1253
1253
|
}
|
|
1254
1254
|
});
|
|
1255
1255
|
}
|
|
1256
1256
|
_loadScript(name2) {
|
|
1257
|
-
return new this.Promise((
|
|
1257
|
+
return new this.Promise((resolve3, reject) => {
|
|
1258
1258
|
var payload;
|
|
1259
1259
|
payload = Scripts.payload(name2);
|
|
1260
1260
|
return this.client.multi([["script", "load", payload]]).exec((err, replies) => {
|
|
@@ -1262,7 +1262,7 @@ var require_RedisConnection = __commonJS({
|
|
|
1262
1262
|
return reject(err);
|
|
1263
1263
|
}
|
|
1264
1264
|
this.shas[name2] = replies[0];
|
|
1265
|
-
return
|
|
1265
|
+
return resolve3(replies[0]);
|
|
1266
1266
|
});
|
|
1267
1267
|
});
|
|
1268
1268
|
}
|
|
@@ -1275,12 +1275,12 @@ var require_RedisConnection = __commonJS({
|
|
|
1275
1275
|
var _this = this;
|
|
1276
1276
|
return _asyncToGenerator(function* () {
|
|
1277
1277
|
yield _this.ready;
|
|
1278
|
-
return new _this.Promise((
|
|
1278
|
+
return new _this.Promise((resolve3, reject) => {
|
|
1279
1279
|
return _this.client.multi([cmd]).exec_atomic(function(err, replies) {
|
|
1280
1280
|
if (err != null) {
|
|
1281
1281
|
return reject(err);
|
|
1282
1282
|
} else {
|
|
1283
|
-
return
|
|
1283
|
+
return resolve3(replies[0]);
|
|
1284
1284
|
}
|
|
1285
1285
|
});
|
|
1286
1286
|
});
|
|
@@ -1288,13 +1288,13 @@ var require_RedisConnection = __commonJS({
|
|
|
1288
1288
|
}
|
|
1289
1289
|
__addLimiter__(instance) {
|
|
1290
1290
|
return this.Promise.all([instance.channel(), instance.channel_client()].map((channel) => {
|
|
1291
|
-
return new this.Promise((
|
|
1291
|
+
return new this.Promise((resolve3, reject) => {
|
|
1292
1292
|
var handler;
|
|
1293
1293
|
handler = /* @__PURE__ */ __name((chan) => {
|
|
1294
1294
|
if (chan === channel) {
|
|
1295
1295
|
this.subscriber.removeListener("subscribe", handler);
|
|
1296
1296
|
this.limiters[channel] = instance;
|
|
1297
|
-
return
|
|
1297
|
+
return resolve3();
|
|
1298
1298
|
}
|
|
1299
1299
|
}, "handler");
|
|
1300
1300
|
this.subscriber.on("subscribe", handler);
|
|
@@ -1308,13 +1308,13 @@ var require_RedisConnection = __commonJS({
|
|
|
1308
1308
|
/* @__PURE__ */ (function() {
|
|
1309
1309
|
var _ref = _asyncToGenerator(function* (channel) {
|
|
1310
1310
|
if (!_this2.terminated) {
|
|
1311
|
-
yield new _this2.Promise((
|
|
1311
|
+
yield new _this2.Promise((resolve3, reject) => {
|
|
1312
1312
|
return _this2.subscriber.unsubscribe(channel, function(err, chan) {
|
|
1313
1313
|
if (err != null) {
|
|
1314
1314
|
return reject(err);
|
|
1315
1315
|
}
|
|
1316
1316
|
if (chan === channel) {
|
|
1317
|
-
return
|
|
1317
|
+
return resolve3();
|
|
1318
1318
|
}
|
|
1319
1319
|
});
|
|
1320
1320
|
});
|
|
@@ -1403,7 +1403,7 @@ var require_IORedisConnection = __commonJS({
|
|
|
1403
1403
|
if (Array.isArray(arr)) return arr;
|
|
1404
1404
|
}
|
|
1405
1405
|
__name(_arrayWithHoles, "_arrayWithHoles");
|
|
1406
|
-
function asyncGeneratorStep(gen,
|
|
1406
|
+
function asyncGeneratorStep(gen, resolve3, reject, _next, _throw, key, arg) {
|
|
1407
1407
|
try {
|
|
1408
1408
|
var info = gen[key](arg);
|
|
1409
1409
|
var value = info.value;
|
|
@@ -1412,7 +1412,7 @@ var require_IORedisConnection = __commonJS({
|
|
|
1412
1412
|
return;
|
|
1413
1413
|
}
|
|
1414
1414
|
if (info.done) {
|
|
1415
|
-
|
|
1415
|
+
resolve3(value);
|
|
1416
1416
|
} else {
|
|
1417
1417
|
Promise.resolve(value).then(_next, _throw);
|
|
1418
1418
|
}
|
|
@@ -1421,14 +1421,14 @@ var require_IORedisConnection = __commonJS({
|
|
|
1421
1421
|
function _asyncToGenerator(fn) {
|
|
1422
1422
|
return function() {
|
|
1423
1423
|
var self2 = this, args = arguments;
|
|
1424
|
-
return new Promise(function(
|
|
1424
|
+
return new Promise(function(resolve3, reject) {
|
|
1425
1425
|
var gen = fn.apply(self2, args);
|
|
1426
1426
|
function _next(value) {
|
|
1427
|
-
asyncGeneratorStep(gen,
|
|
1427
|
+
asyncGeneratorStep(gen, resolve3, reject, _next, _throw, "next", value);
|
|
1428
1428
|
}
|
|
1429
1429
|
__name(_next, "_next");
|
|
1430
1430
|
function _throw(err) {
|
|
1431
|
-
asyncGeneratorStep(gen,
|
|
1431
|
+
asyncGeneratorStep(gen, resolve3, reject, _next, _throw, "throw", err);
|
|
1432
1432
|
}
|
|
1433
1433
|
__name(_throw, "_throw");
|
|
1434
1434
|
_next(void 0);
|
|
@@ -1479,7 +1479,7 @@ var require_IORedisConnection = __commonJS({
|
|
|
1479
1479
|
}
|
|
1480
1480
|
_setup(client, sub) {
|
|
1481
1481
|
client.setMaxListeners(0);
|
|
1482
|
-
return new this.Promise((
|
|
1482
|
+
return new this.Promise((resolve3, reject) => {
|
|
1483
1483
|
client.on("error", (e) => {
|
|
1484
1484
|
return this.Events.trigger("error", e);
|
|
1485
1485
|
});
|
|
@@ -1490,9 +1490,9 @@ var require_IORedisConnection = __commonJS({
|
|
|
1490
1490
|
});
|
|
1491
1491
|
}
|
|
1492
1492
|
if (client.status === "ready") {
|
|
1493
|
-
return
|
|
1493
|
+
return resolve3();
|
|
1494
1494
|
} else {
|
|
1495
|
-
return client.once("ready",
|
|
1495
|
+
return client.once("ready", resolve3);
|
|
1496
1496
|
}
|
|
1497
1497
|
});
|
|
1498
1498
|
}
|
|
@@ -1518,10 +1518,10 @@ var require_IORedisConnection = __commonJS({
|
|
|
1518
1518
|
}
|
|
1519
1519
|
__addLimiter__(instance) {
|
|
1520
1520
|
return this.Promise.all([instance.channel(), instance.channel_client()].map((channel) => {
|
|
1521
|
-
return new this.Promise((
|
|
1521
|
+
return new this.Promise((resolve3, reject) => {
|
|
1522
1522
|
return this.subscriber.subscribe(channel, () => {
|
|
1523
1523
|
this.limiters[channel] = instance;
|
|
1524
|
-
return
|
|
1524
|
+
return resolve3();
|
|
1525
1525
|
});
|
|
1526
1526
|
});
|
|
1527
1527
|
}));
|
|
@@ -1623,7 +1623,7 @@ var require_RedisDatastore = __commonJS({
|
|
|
1623
1623
|
if (Array.isArray(arr)) return arr;
|
|
1624
1624
|
}
|
|
1625
1625
|
__name(_arrayWithHoles2, "_arrayWithHoles");
|
|
1626
|
-
function asyncGeneratorStep2(gen,
|
|
1626
|
+
function asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, key, arg) {
|
|
1627
1627
|
try {
|
|
1628
1628
|
var info = gen[key](arg);
|
|
1629
1629
|
var value = info.value;
|
|
@@ -1632,7 +1632,7 @@ var require_RedisDatastore = __commonJS({
|
|
|
1632
1632
|
return;
|
|
1633
1633
|
}
|
|
1634
1634
|
if (info.done) {
|
|
1635
|
-
|
|
1635
|
+
resolve3(value);
|
|
1636
1636
|
} else {
|
|
1637
1637
|
Promise.resolve(value).then(_next, _throw);
|
|
1638
1638
|
}
|
|
@@ -1641,14 +1641,14 @@ var require_RedisDatastore = __commonJS({
|
|
|
1641
1641
|
function _asyncToGenerator2(fn) {
|
|
1642
1642
|
return function() {
|
|
1643
1643
|
var self2 = this, args = arguments;
|
|
1644
|
-
return new Promise(function(
|
|
1644
|
+
return new Promise(function(resolve3, reject) {
|
|
1645
1645
|
var gen = fn.apply(self2, args);
|
|
1646
1646
|
function _next(value) {
|
|
1647
|
-
asyncGeneratorStep2(gen,
|
|
1647
|
+
asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "next", value);
|
|
1648
1648
|
}
|
|
1649
1649
|
__name(_next, "_next");
|
|
1650
1650
|
function _throw(err) {
|
|
1651
|
-
asyncGeneratorStep2(gen,
|
|
1651
|
+
asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "throw", err);
|
|
1652
1652
|
}
|
|
1653
1653
|
__name(_throw, "_throw");
|
|
1654
1654
|
_next(void 0);
|
|
@@ -1789,7 +1789,7 @@ var require_RedisDatastore = __commonJS({
|
|
|
1789
1789
|
if (!(name2 === "init" || name2 === "register_client")) {
|
|
1790
1790
|
yield _this3.ready;
|
|
1791
1791
|
}
|
|
1792
|
-
return new _this3.Promise((
|
|
1792
|
+
return new _this3.Promise((resolve3, reject) => {
|
|
1793
1793
|
var all_args, arr;
|
|
1794
1794
|
all_args = [Date.now(), _this3.clientId].concat(args);
|
|
1795
1795
|
_this3.instance.Events.trigger("debug", `Calling Redis script: ${name2}.lua`, all_args);
|
|
@@ -1797,7 +1797,7 @@ var require_RedisDatastore = __commonJS({
|
|
|
1797
1797
|
if (err != null) {
|
|
1798
1798
|
return reject(err);
|
|
1799
1799
|
}
|
|
1800
|
-
return
|
|
1800
|
+
return resolve3(replies);
|
|
1801
1801
|
});
|
|
1802
1802
|
return _this3.connection.__scriptFn__(name2)(...arr);
|
|
1803
1803
|
}).catch((e) => {
|
|
@@ -2031,7 +2031,7 @@ var require_States = __commonJS({
|
|
|
2031
2031
|
var require_Sync = __commonJS({
|
|
2032
2032
|
"node_modules/bottleneck/lib/Sync.js"(exports2, module2) {
|
|
2033
2033
|
"use strict";
|
|
2034
|
-
function asyncGeneratorStep2(gen,
|
|
2034
|
+
function asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, key, arg) {
|
|
2035
2035
|
try {
|
|
2036
2036
|
var info = gen[key](arg);
|
|
2037
2037
|
var value = info.value;
|
|
@@ -2040,7 +2040,7 @@ var require_Sync = __commonJS({
|
|
|
2040
2040
|
return;
|
|
2041
2041
|
}
|
|
2042
2042
|
if (info.done) {
|
|
2043
|
-
|
|
2043
|
+
resolve3(value);
|
|
2044
2044
|
} else {
|
|
2045
2045
|
Promise.resolve(value).then(_next, _throw);
|
|
2046
2046
|
}
|
|
@@ -2049,14 +2049,14 @@ var require_Sync = __commonJS({
|
|
|
2049
2049
|
function _asyncToGenerator2(fn) {
|
|
2050
2050
|
return function() {
|
|
2051
2051
|
var self2 = this, args = arguments;
|
|
2052
|
-
return new Promise(function(
|
|
2052
|
+
return new Promise(function(resolve3, reject) {
|
|
2053
2053
|
var gen = fn.apply(self2, args);
|
|
2054
2054
|
function _next(value) {
|
|
2055
|
-
asyncGeneratorStep2(gen,
|
|
2055
|
+
asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "next", value);
|
|
2056
2056
|
}
|
|
2057
2057
|
__name(_next, "_next");
|
|
2058
2058
|
function _throw(err) {
|
|
2059
|
-
asyncGeneratorStep2(gen,
|
|
2059
|
+
asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "throw", err);
|
|
2060
2060
|
}
|
|
2061
2061
|
__name(_throw, "_throw");
|
|
2062
2062
|
_next(void 0);
|
|
@@ -2084,19 +2084,19 @@ var require_Sync = __commonJS({
|
|
|
2084
2084
|
_tryToRun() {
|
|
2085
2085
|
var _this = this;
|
|
2086
2086
|
return _asyncToGenerator2(function* () {
|
|
2087
|
-
var args, cb, error, reject,
|
|
2087
|
+
var args, cb, error, reject, resolve3, returned, task;
|
|
2088
2088
|
if (_this._running < 1 && _this._queue.length > 0) {
|
|
2089
2089
|
_this._running++;
|
|
2090
2090
|
var _this$_queue$shift = _this._queue.shift();
|
|
2091
2091
|
task = _this$_queue$shift.task;
|
|
2092
2092
|
args = _this$_queue$shift.args;
|
|
2093
|
-
|
|
2093
|
+
resolve3 = _this$_queue$shift.resolve;
|
|
2094
2094
|
reject = _this$_queue$shift.reject;
|
|
2095
2095
|
cb = yield _asyncToGenerator2(function* () {
|
|
2096
2096
|
try {
|
|
2097
2097
|
returned = yield task(...args);
|
|
2098
2098
|
return function() {
|
|
2099
|
-
return
|
|
2099
|
+
return resolve3(returned);
|
|
2100
2100
|
};
|
|
2101
2101
|
} catch (error1) {
|
|
2102
2102
|
error = error1;
|
|
@@ -2112,16 +2112,16 @@ var require_Sync = __commonJS({
|
|
|
2112
2112
|
})();
|
|
2113
2113
|
}
|
|
2114
2114
|
schedule(task, ...args) {
|
|
2115
|
-
var promise, reject,
|
|
2116
|
-
|
|
2115
|
+
var promise, reject, resolve3;
|
|
2116
|
+
resolve3 = reject = null;
|
|
2117
2117
|
promise = new this.Promise(function(_resolve, _reject) {
|
|
2118
|
-
|
|
2118
|
+
resolve3 = _resolve;
|
|
2119
2119
|
return reject = _reject;
|
|
2120
2120
|
});
|
|
2121
2121
|
this._queue.push({
|
|
2122
2122
|
task,
|
|
2123
2123
|
args,
|
|
2124
|
-
resolve:
|
|
2124
|
+
resolve: resolve3,
|
|
2125
2125
|
reject
|
|
2126
2126
|
});
|
|
2127
2127
|
this._tryToRun();
|
|
@@ -2178,7 +2178,7 @@ var require_Group = __commonJS({
|
|
|
2178
2178
|
if (Array.isArray(arr)) return arr;
|
|
2179
2179
|
}
|
|
2180
2180
|
__name(_arrayWithHoles2, "_arrayWithHoles");
|
|
2181
|
-
function asyncGeneratorStep2(gen,
|
|
2181
|
+
function asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, key, arg) {
|
|
2182
2182
|
try {
|
|
2183
2183
|
var info = gen[key](arg);
|
|
2184
2184
|
var value = info.value;
|
|
@@ -2187,7 +2187,7 @@ var require_Group = __commonJS({
|
|
|
2187
2187
|
return;
|
|
2188
2188
|
}
|
|
2189
2189
|
if (info.done) {
|
|
2190
|
-
|
|
2190
|
+
resolve3(value);
|
|
2191
2191
|
} else {
|
|
2192
2192
|
Promise.resolve(value).then(_next, _throw);
|
|
2193
2193
|
}
|
|
@@ -2196,14 +2196,14 @@ var require_Group = __commonJS({
|
|
|
2196
2196
|
function _asyncToGenerator2(fn) {
|
|
2197
2197
|
return function() {
|
|
2198
2198
|
var self2 = this, args = arguments;
|
|
2199
|
-
return new Promise(function(
|
|
2199
|
+
return new Promise(function(resolve3, reject) {
|
|
2200
2200
|
var gen = fn.apply(self2, args);
|
|
2201
2201
|
function _next(value) {
|
|
2202
|
-
asyncGeneratorStep2(gen,
|
|
2202
|
+
asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "next", value);
|
|
2203
2203
|
}
|
|
2204
2204
|
__name(_next, "_next");
|
|
2205
2205
|
function _throw(err) {
|
|
2206
|
-
asyncGeneratorStep2(gen,
|
|
2206
|
+
asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "throw", err);
|
|
2207
2207
|
}
|
|
2208
2208
|
__name(_throw, "_throw");
|
|
2209
2209
|
_next(void 0);
|
|
@@ -2323,14 +2323,14 @@ var require_Group = __commonJS({
|
|
|
2323
2323
|
clearInterval(this.interval);
|
|
2324
2324
|
return typeof (base = this.interval = setInterval(
|
|
2325
2325
|
/* @__PURE__ */ _asyncToGenerator2(function* () {
|
|
2326
|
-
var e, k, ref, results,
|
|
2327
|
-
|
|
2326
|
+
var e, k, ref, results, time2, v;
|
|
2327
|
+
time2 = Date.now();
|
|
2328
2328
|
ref = _this3.instances;
|
|
2329
2329
|
results = [];
|
|
2330
2330
|
for (k in ref) {
|
|
2331
2331
|
v = ref[k];
|
|
2332
2332
|
try {
|
|
2333
|
-
if (yield v._store.__groupCheck__(
|
|
2333
|
+
if (yield v._store.__groupCheck__(time2)) {
|
|
2334
2334
|
results.push(_this3.deleteKey(k));
|
|
2335
2335
|
} else {
|
|
2336
2336
|
results.push(void 0);
|
|
@@ -2480,7 +2480,7 @@ var require_Bottleneck = __commonJS({
|
|
|
2480
2480
|
if (Array.isArray(arr)) return arr;
|
|
2481
2481
|
}
|
|
2482
2482
|
__name(_arrayWithHoles2, "_arrayWithHoles");
|
|
2483
|
-
function asyncGeneratorStep2(gen,
|
|
2483
|
+
function asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, key, arg) {
|
|
2484
2484
|
try {
|
|
2485
2485
|
var info = gen[key](arg);
|
|
2486
2486
|
var value = info.value;
|
|
@@ -2489,7 +2489,7 @@ var require_Bottleneck = __commonJS({
|
|
|
2489
2489
|
return;
|
|
2490
2490
|
}
|
|
2491
2491
|
if (info.done) {
|
|
2492
|
-
|
|
2492
|
+
resolve3(value);
|
|
2493
2493
|
} else {
|
|
2494
2494
|
Promise.resolve(value).then(_next, _throw);
|
|
2495
2495
|
}
|
|
@@ -2498,14 +2498,14 @@ var require_Bottleneck = __commonJS({
|
|
|
2498
2498
|
function _asyncToGenerator2(fn) {
|
|
2499
2499
|
return function() {
|
|
2500
2500
|
var self2 = this, args = arguments;
|
|
2501
|
-
return new Promise(function(
|
|
2501
|
+
return new Promise(function(resolve3, reject) {
|
|
2502
2502
|
var gen = fn.apply(self2, args);
|
|
2503
2503
|
function _next(value) {
|
|
2504
|
-
asyncGeneratorStep2(gen,
|
|
2504
|
+
asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "next", value);
|
|
2505
2505
|
}
|
|
2506
2506
|
__name(_next, "_next");
|
|
2507
2507
|
function _throw(err) {
|
|
2508
|
-
asyncGeneratorStep2(gen,
|
|
2508
|
+
asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "throw", err);
|
|
2509
2509
|
}
|
|
2510
2510
|
__name(_throw, "_throw");
|
|
2511
2511
|
_next(void 0);
|
|
@@ -2748,14 +2748,14 @@ var require_Bottleneck = __commonJS({
|
|
|
2748
2748
|
counts = this._states.counts;
|
|
2749
2749
|
return counts[0] + counts[1] + counts[2] + counts[3] === at;
|
|
2750
2750
|
}, "finished");
|
|
2751
|
-
return new this.Promise((
|
|
2751
|
+
return new this.Promise((resolve3, reject) => {
|
|
2752
2752
|
if (finished()) {
|
|
2753
|
-
return
|
|
2753
|
+
return resolve3();
|
|
2754
2754
|
} else {
|
|
2755
2755
|
return this.on("done", () => {
|
|
2756
2756
|
if (finished()) {
|
|
2757
2757
|
this.removeAllListeners("done");
|
|
2758
|
-
return
|
|
2758
|
+
return resolve3();
|
|
2759
2759
|
}
|
|
2760
2760
|
});
|
|
2761
2761
|
}
|
|
@@ -2863,9 +2863,9 @@ var require_Bottleneck = __commonJS({
|
|
|
2863
2863
|
options2 = parser2.load(options2, this.jobDefaults);
|
|
2864
2864
|
}
|
|
2865
2865
|
task = /* @__PURE__ */ __name((...args2) => {
|
|
2866
|
-
return new this.Promise(function(
|
|
2866
|
+
return new this.Promise(function(resolve3, reject) {
|
|
2867
2867
|
return fn(...args2, function(...args3) {
|
|
2868
|
-
return (args3[0] != null ? reject :
|
|
2868
|
+
return (args3[0] != null ? reject : resolve3)(args3);
|
|
2869
2869
|
});
|
|
2870
2870
|
});
|
|
2871
2871
|
}, "task");
|
|
@@ -4174,7 +4174,7 @@ __export(index_exports, {
|
|
|
4174
4174
|
name: () => name
|
|
4175
4175
|
});
|
|
4176
4176
|
module.exports = __toCommonJS(index_exports);
|
|
4177
|
-
var
|
|
4177
|
+
var import_koishi2 = require("koishi");
|
|
4178
4178
|
|
|
4179
4179
|
// src/components/miscs.tsx
|
|
4180
4180
|
var import_jsx_runtime = require("@satorijs/element/jsx-runtime");
|
|
@@ -4240,7 +4240,7 @@ var messages = {
|
|
|
4240
4240
|
};
|
|
4241
4241
|
function t(messageOrResult, params) {
|
|
4242
4242
|
if (typeof messageOrResult !== "string") {
|
|
4243
|
-
return t(messageOrResult.
|
|
4243
|
+
return t(messageOrResult.error.code, messageOrResult.error.params);
|
|
4244
4244
|
}
|
|
4245
4245
|
let text = messages[messageOrResult];
|
|
4246
4246
|
for (const [key, value] of Object.entries(params ?? {})) {
|
|
@@ -4250,7 +4250,7 @@ function t(messageOrResult, params) {
|
|
|
4250
4250
|
}
|
|
4251
4251
|
__name(t, "t");
|
|
4252
4252
|
|
|
4253
|
-
// src/utils/assets.ts
|
|
4253
|
+
// src/warframe/utils/assets.ts
|
|
4254
4254
|
var import_node_fs = require("node:fs");
|
|
4255
4255
|
var import_node_path = require("node:path");
|
|
4256
4256
|
var jsonCache = /* @__PURE__ */ new Map();
|
|
@@ -4259,7 +4259,7 @@ function assetRoot() {
|
|
|
4259
4259
|
if ((0, import_node_path.basename)(__dirname) === "utils") {
|
|
4260
4260
|
return (0, import_node_path.resolve)(__dirname, "../assets");
|
|
4261
4261
|
}
|
|
4262
|
-
return (0, import_node_path.resolve)(__dirname, "assets");
|
|
4262
|
+
return (0, import_node_path.resolve)(__dirname, "warframe/assets");
|
|
4263
4263
|
}
|
|
4264
4264
|
__name(assetRoot, "assetRoot");
|
|
4265
4265
|
function assetPath(path) {
|
|
@@ -4292,7 +4292,7 @@ function loadAssetText(path) {
|
|
|
4292
4292
|
}
|
|
4293
4293
|
__name(loadAssetText, "loadAssetText");
|
|
4294
4294
|
|
|
4295
|
-
// src/utils/cache.ts
|
|
4295
|
+
// src/warframe/utils/cache.ts
|
|
4296
4296
|
function createAsyncCache(factory, ttlMs = 6e4) {
|
|
4297
4297
|
let cache;
|
|
4298
4298
|
let lastUpdatedAt = 0;
|
|
@@ -4326,7 +4326,7 @@ function createAsyncCache(factory, ttlMs = 6e4) {
|
|
|
4326
4326
|
}
|
|
4327
4327
|
__name(createAsyncCache, "createAsyncCache");
|
|
4328
4328
|
|
|
4329
|
-
// src/utils/collection.ts
|
|
4329
|
+
// src/warframe/utils/collection.ts
|
|
4330
4330
|
var listToDict = /* @__PURE__ */ __name((dict, predict) => {
|
|
4331
4331
|
const result = {};
|
|
4332
4332
|
for (const obj of dict) {
|
|
@@ -4352,31 +4352,8 @@ var dictToKeyDict = /* @__PURE__ */ __name((dict, predict) => {
|
|
|
4352
4352
|
return result;
|
|
4353
4353
|
}, "dictToKeyDict");
|
|
4354
4354
|
|
|
4355
|
-
// src/utils/
|
|
4356
|
-
function lerp(start, end, t2) {
|
|
4357
|
-
return Math.round(start + (end - start) * t2);
|
|
4358
|
-
}
|
|
4359
|
-
__name(lerp, "lerp");
|
|
4360
|
-
function hexToRgb(hex) {
|
|
4361
|
-
const r = Number.parseInt(hex.slice(1, 3), 16);
|
|
4362
|
-
const g = Number.parseInt(hex.slice(3, 5), 16);
|
|
4363
|
-
const b = Number.parseInt(hex.slice(5, 7), 16);
|
|
4364
|
-
return { r, g, b };
|
|
4365
|
-
}
|
|
4366
|
-
__name(hexToRgb, "hexToRgb");
|
|
4367
|
-
function rgbToHex(r, g, b) {
|
|
4368
|
-
return `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`;
|
|
4369
|
-
}
|
|
4370
|
-
__name(rgbToHex, "rgbToHex");
|
|
4371
|
-
|
|
4372
|
-
// src/utils/http.ts
|
|
4355
|
+
// src/warframe/utils/http.ts
|
|
4373
4356
|
var import_ofetch = require("ofetch");
|
|
4374
|
-
|
|
4375
|
-
// src/utils/logger.ts
|
|
4376
|
-
var import_koishi = require("koishi");
|
|
4377
|
-
var logger = new import_koishi.Logger("koishi-plugin-warframe");
|
|
4378
|
-
|
|
4379
|
-
// src/utils/http.ts
|
|
4380
4357
|
var defaultHeaders = {
|
|
4381
4358
|
"Accept": "text/html,application/json;q=0.9,image/*;q=0.8,*/*;q=0.8",
|
|
4382
4359
|
"Accept-Language": "zh-CN,zh-Hans;q=0.9",
|
|
@@ -4394,11 +4371,7 @@ async function request(url, method, responseType) {
|
|
|
4394
4371
|
retryDelay: 500,
|
|
4395
4372
|
retryStatusCodes: [408, 429, 500, 502, 503, 504]
|
|
4396
4373
|
});
|
|
4397
|
-
} catch
|
|
4398
|
-
const e = err;
|
|
4399
|
-
const status = e.statusCode ?? "network";
|
|
4400
|
-
const detail = e.data && typeof e.data === "object" ? JSON.stringify(e.data) : e.data ?? e.message ?? "";
|
|
4401
|
-
logger.error(`[HTTP] ${method} ${url} -> ${status} ${detail}`.trimEnd());
|
|
4374
|
+
} catch {
|
|
4402
4375
|
return void 0;
|
|
4403
4376
|
}
|
|
4404
4377
|
}
|
|
@@ -4416,7 +4389,7 @@ async function fetchAsyncImage(url, method = "GET") {
|
|
|
4416
4389
|
}
|
|
4417
4390
|
__name(fetchAsyncImage, "fetchAsyncImage");
|
|
4418
4391
|
|
|
4419
|
-
// src/utils/text.ts
|
|
4392
|
+
// src/warframe/utils/text.ts
|
|
4420
4393
|
function normalizeName(text) {
|
|
4421
4394
|
return fullWidthToHalfWidth(text).toLowerCase().replace(/[·'\-+()【】[\]{},。!?;:_]/g, "").replace(/\s+/g, "");
|
|
4422
4395
|
}
|
|
@@ -4482,7 +4455,7 @@ function tokenSimilarity(a, b) {
|
|
|
4482
4455
|
}
|
|
4483
4456
|
__name(tokenSimilarity, "tokenSimilarity");
|
|
4484
4457
|
|
|
4485
|
-
// src/utils/time.ts
|
|
4458
|
+
// src/warframe/utils/time.ts
|
|
4486
4459
|
function toTimeStamp(timeStr) {
|
|
4487
4460
|
return new Date(timeStr).getTime();
|
|
4488
4461
|
}
|
|
@@ -4506,7 +4479,7 @@ function msToHumanReadable(ms) {
|
|
|
4506
4479
|
}
|
|
4507
4480
|
__name(msToHumanReadable, "msToHumanReadable");
|
|
4508
4481
|
|
|
4509
|
-
// src/infrastructure/miscs/lab-api.ts
|
|
4482
|
+
// src/warframe/infrastructure/miscs/lab-api.ts
|
|
4510
4483
|
async function getHotRivenWeapons(num = 30) {
|
|
4511
4484
|
const response = await fetchAsyncData(
|
|
4512
4485
|
`https://lab.webutilitykit.com/api/RivenTracker/hot-weapons?limit=${num}&sortBy=price`
|
|
@@ -4515,30 +4488,43 @@ async function getHotRivenWeapons(num = 30) {
|
|
|
4515
4488
|
}
|
|
4516
4489
|
__name(getHotRivenWeapons, "getHotRivenWeapons");
|
|
4517
4490
|
|
|
4518
|
-
// src/data/miscs/lab.ts
|
|
4491
|
+
// src/warframe/data/miscs/lab.ts
|
|
4519
4492
|
var globalHotRivenWeapons = createAsyncCache(async () => {
|
|
4520
4493
|
const items = await getHotRivenWeapons(40);
|
|
4521
4494
|
return items || [];
|
|
4522
4495
|
}, 18e5);
|
|
4523
4496
|
|
|
4524
|
-
// src/
|
|
4497
|
+
// src/warframe/types/warframe-result.ts
|
|
4498
|
+
function failure(code, retryable = false, params) {
|
|
4499
|
+
return {
|
|
4500
|
+
ok: false,
|
|
4501
|
+
error: {
|
|
4502
|
+
code,
|
|
4503
|
+
retryable,
|
|
4504
|
+
...params ? { params } : {}
|
|
4505
|
+
}
|
|
4506
|
+
};
|
|
4507
|
+
}
|
|
4508
|
+
__name(failure, "failure");
|
|
4509
|
+
|
|
4510
|
+
// src/warframe/services/miscs-service.ts
|
|
4525
4511
|
async function getHotRivenWeapons2() {
|
|
4526
4512
|
try {
|
|
4527
4513
|
const result = await globalHotRivenWeapons.get();
|
|
4528
4514
|
if (!result || result.length === 0) {
|
|
4529
|
-
return
|
|
4515
|
+
return failure("miscs.hotRiven.noData");
|
|
4530
4516
|
}
|
|
4531
4517
|
return { ok: true, data: result };
|
|
4532
4518
|
} catch {
|
|
4533
|
-
return
|
|
4519
|
+
return failure("miscs.hotRiven.fetchFailed", true);
|
|
4534
4520
|
}
|
|
4535
4521
|
}
|
|
4536
4522
|
__name(getHotRivenWeapons2, "getHotRivenWeapons");
|
|
4537
4523
|
|
|
4538
|
-
// src/services/wf-service.ts
|
|
4524
|
+
// src/warframe/services/wf-service.ts
|
|
4539
4525
|
var import_warframe_public_export_plus6 = require("warframe-public-export-plus");
|
|
4540
4526
|
|
|
4541
|
-
// src/assets/index.ts
|
|
4527
|
+
// src/warframe/assets/index.ts
|
|
4542
4528
|
var {
|
|
4543
4529
|
incarnons,
|
|
4544
4530
|
warframes
|
|
@@ -4553,7 +4539,7 @@ var Baro = loadAssetText("baro.txt");
|
|
|
4553
4539
|
var BaroParsed = loadAssetJson("baroParsed.json");
|
|
4554
4540
|
var warframeAlias = loadAssetJson("warframeAlias.json");
|
|
4555
4541
|
|
|
4556
|
-
// src/data/wf/arbitrationSchedule.ts
|
|
4542
|
+
// src/warframe/data/wf/arbitrationSchedule.ts
|
|
4557
4543
|
var arbitrationSchedule = arbitrationScheduleText.split("\n").map((line) => line.split(",")).filter((arr) => arr.length === 2).map((arr) => {
|
|
4558
4544
|
return {
|
|
4559
4545
|
time: parseInt(arr[0]),
|
|
@@ -4561,10 +4547,10 @@ var arbitrationSchedule = arbitrationScheduleText.split("\n").map((line) => line
|
|
|
4561
4547
|
};
|
|
4562
4548
|
});
|
|
4563
4549
|
|
|
4564
|
-
// src/data/wf/globalWorldState.ts
|
|
4550
|
+
// src/warframe/data/wf/globalWorldState.ts
|
|
4565
4551
|
var import_warframe_public_export_plus3 = require("warframe-public-export-plus");
|
|
4566
4552
|
|
|
4567
|
-
// src/infrastructure/wf/wf-api.ts
|
|
4553
|
+
// src/warframe/infrastructure/wf/wf-api.ts
|
|
4568
4554
|
var apiBase = "https://api.warframe.com/cdn/";
|
|
4569
4555
|
async function getWorldState(json) {
|
|
4570
4556
|
if (!json) {
|
|
@@ -4574,7 +4560,8 @@ async function getWorldState(json) {
|
|
|
4574
4560
|
throw new Error("获取游戏信息失败");
|
|
4575
4561
|
}
|
|
4576
4562
|
const WorldStateParser = await import("warframe-worldstate-parser");
|
|
4577
|
-
return WorldStateParser.WorldState.build(json)
|
|
4563
|
+
return WorldStateParser.WorldState.build(json, { locale: "en", logger: { debug: /* @__PURE__ */ __name(() => {
|
|
4564
|
+
}, "debug") } });
|
|
4578
4565
|
}
|
|
4579
4566
|
__name(getWorldState, "getWorldState");
|
|
4580
4567
|
async function getVoidTraderHistory(data) {
|
|
@@ -4735,7 +4722,7 @@ async function getVoidTraderHistory(data) {
|
|
|
4735
4722
|
}
|
|
4736
4723
|
__name(getVoidTraderHistory, "getVoidTraderHistory");
|
|
4737
4724
|
|
|
4738
|
-
// src/infrastructure/wf/wf-export-adapter.ts
|
|
4725
|
+
// src/warframe/infrastructure/wf/wf-export-adapter.ts
|
|
4739
4726
|
var import_warframe_public_export_plus = require("warframe-public-export-plus");
|
|
4740
4727
|
function regionToShort(region, dict) {
|
|
4741
4728
|
let faction;
|
|
@@ -4768,7 +4755,7 @@ function fixRelicRewardKey(item) {
|
|
|
4768
4755
|
}
|
|
4769
4756
|
__name(fixRelicRewardKey, "fixRelicRewardKey");
|
|
4770
4757
|
|
|
4771
|
-
// src/infrastructure/wf/wfcd-adapter.ts
|
|
4758
|
+
// src/warframe/infrastructure/wf/wfcd-adapter.ts
|
|
4772
4759
|
var import_warframe_public_export_plus2 = require("warframe-public-export-plus");
|
|
4773
4760
|
function relicToFullNameZH(tier, category) {
|
|
4774
4761
|
return `${import_warframe_public_export_plus2.dict_zh[relicEraToTransKey(tier)] ?? toPascalCase(tier)} ${category} 遗物`;
|
|
@@ -4866,24 +4853,28 @@ function getVoidTraderItemName(sourceKey) {
|
|
|
4866
4853
|
}
|
|
4867
4854
|
__name(getVoidTraderItemName, "getVoidTraderItemName");
|
|
4868
4855
|
|
|
4869
|
-
// src/data/wf/globalWorldState.ts
|
|
4856
|
+
// src/warframe/data/wf/globalWorldState.ts
|
|
4857
|
+
async function adaptFissure(fissure) {
|
|
4858
|
+
const nodeKey = await getSolNodeKey(fissure.nodeKey);
|
|
4859
|
+
const tierName = fissure.tierNum in fissureTierName ? import_warframe_public_export_plus3.dict_zh[fissureTierName[fissure.tierNum]] : fissure.tierNum;
|
|
4860
|
+
return {
|
|
4861
|
+
category: fissure.isStorm ? "rj-fissures" : fissure.isHard ? "sp-fissures" : "fissures",
|
|
4862
|
+
hard: fissure.isHard,
|
|
4863
|
+
activation: fissure.activation?.getTime() ?? 0,
|
|
4864
|
+
expiry: fissure.expiry?.getTime() ?? 0,
|
|
4865
|
+
node: regionToShort(import_warframe_public_export_plus3.ExportRegions[nodeKey], import_warframe_public_export_plus3.dict_zh),
|
|
4866
|
+
tier: String(tierName),
|
|
4867
|
+
tierNum: fissureTierNumToNumber(fissure.tierNum)
|
|
4868
|
+
};
|
|
4869
|
+
}
|
|
4870
|
+
__name(adaptFissure, "adaptFissure");
|
|
4870
4871
|
var globalWorldState = createAsyncCache(async () => {
|
|
4871
4872
|
const worldState = await getWorldState();
|
|
4872
4873
|
const fissures = [];
|
|
4873
4874
|
const rjFissures = [];
|
|
4874
4875
|
const spFissures = [];
|
|
4875
4876
|
for (const fissure of worldState.fissures) {
|
|
4876
|
-
const
|
|
4877
|
-
const tierName = fissure.tierNum in fissureTierName ? import_warframe_public_export_plus3.dict_zh[fissureTierName[fissure.tierNum]] : fissure.tierNum;
|
|
4878
|
-
const obj = {
|
|
4879
|
-
category: fissure.isStorm ? "rj-fissures" : fissure.isHard ? "sp-fissures" : "fissures",
|
|
4880
|
-
hard: fissure.isHard,
|
|
4881
|
-
activation: fissure.activation?.getTime() ?? 0,
|
|
4882
|
-
expiry: fissure.expiry?.getTime() ?? 0,
|
|
4883
|
-
node: regionToShort(import_warframe_public_export_plus3.ExportRegions[nodeKey], import_warframe_public_export_plus3.dict_zh),
|
|
4884
|
-
tier: String(tierName),
|
|
4885
|
-
tierNum: fissureTierNumToNumber(fissure.tierNum)
|
|
4886
|
-
};
|
|
4877
|
+
const obj = await adaptFissure(fissure);
|
|
4887
4878
|
if (fissure.isStorm) {
|
|
4888
4879
|
rjFissures.push(obj);
|
|
4889
4880
|
} else if (fissure.isHard) {
|
|
@@ -4896,9 +4887,9 @@ var globalWorldState = createAsyncCache(async () => {
|
|
|
4896
4887
|
spFissures.sort((a, b) => a.tierNum - b.tierNum);
|
|
4897
4888
|
rjFissures.sort((a, b) => a.tierNum - b.tierNum);
|
|
4898
4889
|
return { raw: worldState, fissures, spFissures, rjFissures };
|
|
4899
|
-
},
|
|
4890
|
+
}, -1);
|
|
4900
4891
|
|
|
4901
|
-
// src/data/wf/relics.ts
|
|
4892
|
+
// src/warframe/data/wf/relics.ts
|
|
4902
4893
|
var import_warframe_public_export_plus4 = require("warframe-public-export-plus");
|
|
4903
4894
|
var relics = (() => {
|
|
4904
4895
|
const result = {};
|
|
@@ -4926,7 +4917,7 @@ var relics = (() => {
|
|
|
4926
4917
|
return result;
|
|
4927
4918
|
})();
|
|
4928
4919
|
|
|
4929
|
-
// src/data/wf/rivenBaseValues.ts
|
|
4920
|
+
// src/warframe/data/wf/rivenBaseValues.ts
|
|
4930
4921
|
var rivenAttrValueDict = (() => {
|
|
4931
4922
|
const dict = {};
|
|
4932
4923
|
for (const key in rivenAttrValues) {
|
|
@@ -4941,7 +4932,7 @@ var rivenAttrValueDict = (() => {
|
|
|
4941
4932
|
return dict;
|
|
4942
4933
|
})();
|
|
4943
4934
|
|
|
4944
|
-
// src/data/wf/rivenDisposition.ts
|
|
4935
|
+
// src/warframe/data/wf/rivenDisposition.ts
|
|
4945
4936
|
var import_warframe_public_export_plus5 = require("warframe-public-export-plus");
|
|
4946
4937
|
var weaponRivenDispositionDict = (() => {
|
|
4947
4938
|
const mapped = rivenCalc.weapons.reduce(
|
|
@@ -4989,7 +4980,7 @@ var weaponRivenDispositionDict = (() => {
|
|
|
4989
4980
|
]);
|
|
4990
4981
|
})();
|
|
4991
4982
|
|
|
4992
|
-
// src/data/wf/rivenStatData.ts
|
|
4983
|
+
// src/warframe/data/wf/rivenStatData.ts
|
|
4993
4984
|
var rivenStatFixFactor = {
|
|
4994
4985
|
2: { buffFactor: 0.99, buffCount: 2, curseFactor: 0, curseCount: 0 },
|
|
4995
4986
|
21: {
|
|
@@ -5191,10 +5182,10 @@ function resolveLimiter(rateLimit) {
|
|
|
5191
5182
|
}
|
|
5192
5183
|
__name(resolveLimiter, "resolveLimiter");
|
|
5193
5184
|
|
|
5194
|
-
// src/infrastructure/wfm-client.ts
|
|
5185
|
+
// src/warframe/infrastructure/wfm-client.ts
|
|
5195
5186
|
var wfmClient = createWfmApiClient();
|
|
5196
5187
|
|
|
5197
|
-
// src/data/wfm/globalRivenAttribute.ts
|
|
5188
|
+
// src/warframe/data/wfm/globalRivenAttribute.ts
|
|
5198
5189
|
async function globalRivenAttributeFactory(rivenAttributeData) {
|
|
5199
5190
|
rivenAttributeData ??= await wfmClient.rivens.getAttributes();
|
|
5200
5191
|
if (!rivenAttributeData) {
|
|
@@ -5218,7 +5209,7 @@ var globalRivenAttribute = createAsyncCache(
|
|
|
5218
5209
|
-1
|
|
5219
5210
|
);
|
|
5220
5211
|
|
|
5221
|
-
// src/data/wfm/globalRivenItem.ts
|
|
5212
|
+
// src/warframe/data/wfm/globalRivenItem.ts
|
|
5222
5213
|
function normalizeWordPrefixName(input) {
|
|
5223
5214
|
return fullWidthToHalfWidth(input).toLowerCase().replace(/[·'()+【】[\]{},。!?;:_]/g, " ").replace(/[-/\\]/g, " ").replace(/\s+/g, " ").trim();
|
|
5224
5215
|
}
|
|
@@ -5294,7 +5285,7 @@ var globalRivenItemData = createAsyncCache(async () => {
|
|
|
5294
5285
|
return globalRivenItemFactory();
|
|
5295
5286
|
}, -1);
|
|
5296
5287
|
|
|
5297
|
-
// src/infrastructure/ocr-api.ts
|
|
5288
|
+
// src/warframe/infrastructure/ocr-api.ts
|
|
5298
5289
|
var import_node_buffer = require("node:buffer");
|
|
5299
5290
|
var import_node_crypto = __toESM(require("node:crypto"));
|
|
5300
5291
|
var import_async_cache_dedupe = require("async-cache-dedupe");
|
|
@@ -5345,24 +5336,23 @@ async function extractTextFromImage(image, secret) {
|
|
|
5345
5336
|
const hash = getImageBase64Hash(image);
|
|
5346
5337
|
try {
|
|
5347
5338
|
return await ocrCache.extract({ hash, image, secret });
|
|
5348
|
-
} catch
|
|
5349
|
-
logger.error("OCR request error:", err);
|
|
5339
|
+
} catch {
|
|
5350
5340
|
return void 0;
|
|
5351
5341
|
}
|
|
5352
5342
|
}
|
|
5353
5343
|
__name(extractTextFromImage, "extractTextFromImage");
|
|
5354
5344
|
|
|
5355
|
-
// src/services/wf-service.ts
|
|
5345
|
+
// src/warframe/services/wf-service.ts
|
|
5356
5346
|
async function getRelic(input) {
|
|
5357
5347
|
if (!input) {
|
|
5358
|
-
return
|
|
5348
|
+
return failure("relic.invalidName");
|
|
5359
5349
|
}
|
|
5360
5350
|
input = normalizeName(input);
|
|
5361
5351
|
if (!input) {
|
|
5362
|
-
return
|
|
5352
|
+
return failure("relic.invalidName");
|
|
5363
5353
|
}
|
|
5364
5354
|
if (!relics) {
|
|
5365
|
-
return
|
|
5355
|
+
return failure("relic.dataLoading", true);
|
|
5366
5356
|
}
|
|
5367
5357
|
const tierListForMatch = [
|
|
5368
5358
|
"古纪",
|
|
@@ -5380,7 +5370,7 @@ async function getRelic(input) {
|
|
|
5380
5370
|
].map((t2) => normalizeName(t2));
|
|
5381
5371
|
const tier = tierListForMatch.find((t2) => input.startsWith(t2));
|
|
5382
5372
|
if (!tier) {
|
|
5383
|
-
return
|
|
5373
|
+
return failure("relic.invalidName");
|
|
5384
5374
|
}
|
|
5385
5375
|
const category = input.replace(new RegExp(`^${tier}`), "").replace(/遗物$|relic$/, "");
|
|
5386
5376
|
const zhTierMap = {
|
|
@@ -5393,12 +5383,12 @@ async function getRelic(input) {
|
|
|
5393
5383
|
};
|
|
5394
5384
|
const enTier = zhTierMap[tier] ?? tier;
|
|
5395
5385
|
const key = normalizeName(enTier + category);
|
|
5396
|
-
return relics[key] ? { ok: true, data: relics[key] } :
|
|
5386
|
+
return relics[key] ? { ok: true, data: relics[key] } : failure("relic.notFound");
|
|
5397
5387
|
}
|
|
5398
5388
|
__name(getRelic, "getRelic");
|
|
5399
5389
|
function getArbitrations(day = 3) {
|
|
5400
5390
|
if (day > 14 || day <= 0) {
|
|
5401
|
-
return
|
|
5391
|
+
return failure("arbitration.invalidDayRange");
|
|
5402
5392
|
}
|
|
5403
5393
|
const currentHourTimeStamp = Math.floor(
|
|
5404
5394
|
(/* @__PURE__ */ new Date()).setUTCMinutes(0, 0, 0) / 1e3
|
|
@@ -5437,7 +5427,7 @@ __name(getArbitrations, "getArbitrations");
|
|
|
5437
5427
|
async function getWeekly() {
|
|
5438
5428
|
const { raw: worldState } = await globalWorldState.get();
|
|
5439
5429
|
if (!worldState) {
|
|
5440
|
-
return
|
|
5430
|
+
return failure("common.fetchFailed", true);
|
|
5441
5431
|
}
|
|
5442
5432
|
const archon = {
|
|
5443
5433
|
name: import_warframe_public_export_plus6.dict_zh[`/Lotus/Language/Narmer/${removeSpace(worldState.archonHunt.boss)}`],
|
|
@@ -5574,31 +5564,31 @@ function getCircuitWeek() {
|
|
|
5574
5564
|
__name(getCircuitWeek, "getCircuitWeek");
|
|
5575
5565
|
async function getFissures() {
|
|
5576
5566
|
const { fissures } = await globalWorldState.get();
|
|
5577
|
-
return fissures ? { ok: true, data: fissures } :
|
|
5567
|
+
return fissures ? { ok: true, data: fissures } : failure("common.fetchFailed", true);
|
|
5578
5568
|
}
|
|
5579
5569
|
__name(getFissures, "getFissures");
|
|
5580
5570
|
async function getSteelPathFissures() {
|
|
5581
5571
|
const { spFissures } = await globalWorldState.get();
|
|
5582
|
-
return spFissures ? { ok: true, data: spFissures } :
|
|
5572
|
+
return spFissures ? { ok: true, data: spFissures } : failure("common.fetchFailed", true);
|
|
5583
5573
|
}
|
|
5584
5574
|
__name(getSteelPathFissures, "getSteelPathFissures");
|
|
5585
5575
|
async function getRailjackFissures() {
|
|
5586
5576
|
const { rjFissures } = await globalWorldState.get();
|
|
5587
|
-
return rjFissures ? { ok: true, data: rjFissures } :
|
|
5577
|
+
return rjFissures ? { ok: true, data: rjFissures } : failure("common.fetchFailed", true);
|
|
5588
5578
|
}
|
|
5589
5579
|
__name(getRailjackFissures, "getRailjackFissures");
|
|
5590
5580
|
async function getAnalyzedRiven(secret, url) {
|
|
5591
5581
|
const img = await fetchAsyncImage(url);
|
|
5592
5582
|
if (!img) {
|
|
5593
|
-
return
|
|
5583
|
+
return failure("riven.imageFetchFailed", true);
|
|
5594
5584
|
}
|
|
5595
5585
|
const extractResult = await extractTextFromImage(img, secret);
|
|
5596
5586
|
if (!extractResult) {
|
|
5597
|
-
return
|
|
5587
|
+
return failure("riven.imageParseFailed");
|
|
5598
5588
|
}
|
|
5599
5589
|
const parseResult = await parseOCRResult(extractResult);
|
|
5600
5590
|
if (!parseResult || parseResult.attributes.length < 2 || parseResult.attributes.length > 4) {
|
|
5601
|
-
return
|
|
5591
|
+
return failure("riven.imageParseFailed");
|
|
5602
5592
|
}
|
|
5603
5593
|
return analyzeRivenStat(parseResult);
|
|
5604
5594
|
}
|
|
@@ -5606,12 +5596,12 @@ __name(getAnalyzedRiven, "getAnalyzedRiven");
|
|
|
5606
5596
|
async function getVoidTrader() {
|
|
5607
5597
|
const { raw: worldState } = await globalWorldState.get();
|
|
5608
5598
|
if (worldState.voidTraders.length === 0) {
|
|
5609
|
-
return
|
|
5599
|
+
return failure("voidTrader.drifting");
|
|
5610
5600
|
}
|
|
5611
5601
|
const trader = worldState.voidTraders[0];
|
|
5612
5602
|
if (trader && trader.activation && trader.activation.getTime() > Date.now()) {
|
|
5613
5603
|
const diff2 = trader.activation.getTime() - Date.now();
|
|
5614
|
-
return
|
|
5604
|
+
return failure("voidTrader.arriving", false, { time: msToHumanReadable(diff2) });
|
|
5615
5605
|
}
|
|
5616
5606
|
const diff = trader.expiry.getTime() - Date.now();
|
|
5617
5607
|
const items = trader.inventory.map(getVoidTraderItem);
|
|
@@ -5654,7 +5644,7 @@ async function getWeeklyRivens(minPrice) {
|
|
|
5654
5644
|
__name(getWeeklyRivens, "getWeeklyRivens");
|
|
5655
5645
|
async function getStaticRivenStats(weaponType, statType, disposition) {
|
|
5656
5646
|
if (disposition > 1.55 || disposition < 0.5) {
|
|
5657
|
-
return
|
|
5647
|
+
return failure("riven.dispositionError");
|
|
5658
5648
|
}
|
|
5659
5649
|
const weaponTypes = [
|
|
5660
5650
|
"步枪",
|
|
@@ -5672,7 +5662,7 @@ async function getStaticRivenStats(weaponType, statType, disposition) {
|
|
|
5672
5662
|
(v) => normalizeName(v).startsWith(normalizeName(weaponType))
|
|
5673
5663
|
);
|
|
5674
5664
|
if (!matchedWeaponType) {
|
|
5675
|
-
return
|
|
5665
|
+
return failure("riven.weaponTypeError");
|
|
5676
5666
|
}
|
|
5677
5667
|
const weaponTypeKeys = {
|
|
5678
5668
|
步枪: "Rifle",
|
|
@@ -5684,7 +5674,7 @@ async function getStaticRivenStats(weaponType, statType, disposition) {
|
|
|
5684
5674
|
const weaponTypeKey = weaponTypeKeys[matchedWeaponType] ?? matchedWeaponType;
|
|
5685
5675
|
const statTypes = ["2", "3", "21", "31"];
|
|
5686
5676
|
if (!statTypes.includes(statType)) {
|
|
5687
|
-
return
|
|
5677
|
+
return failure("riven.statTypeError");
|
|
5688
5678
|
}
|
|
5689
5679
|
const rivenAttrValues2 = rivenAttrValueDict[weaponTypeKey];
|
|
5690
5680
|
const factor = rivenStatFixFactor[statType];
|
|
@@ -5871,11 +5861,9 @@ __name(parseOCRResult, "parseOCRResult");
|
|
|
5871
5861
|
function analyzeRivenStat(parseResult) {
|
|
5872
5862
|
const weaponRiven = getWeaponRivenDisposition(parseResult.name);
|
|
5873
5863
|
if (!weaponRiven) {
|
|
5874
|
-
return {
|
|
5875
|
-
|
|
5876
|
-
|
|
5877
|
-
params: { weapon: parseResult.name }
|
|
5878
|
-
};
|
|
5864
|
+
return failure("riven.weaponNotFound", false, {
|
|
5865
|
+
weapon: parseResult.name
|
|
5866
|
+
});
|
|
5879
5867
|
}
|
|
5880
5868
|
const disposition = weaponRiven.calc.disposition;
|
|
5881
5869
|
const weaponType = weaponRiven.calc.riventype;
|
|
@@ -5940,10 +5928,10 @@ function analyzeRivenStat(parseResult) {
|
|
|
5940
5928
|
}
|
|
5941
5929
|
__name(analyzeRivenStat, "analyzeRivenStat");
|
|
5942
5930
|
|
|
5943
|
-
// src/services/wfm-service/index.ts
|
|
5931
|
+
// src/warframe/services/wfm-service/index.ts
|
|
5944
5932
|
var import_warframe_public_export_plus7 = require("warframe-public-export-plus");
|
|
5945
5933
|
|
|
5946
|
-
// src/data/wfm/globalDucatnator.ts
|
|
5934
|
+
// src/warframe/data/wfm/globalDucatnator.ts
|
|
5947
5935
|
var globalDucatnatorIDDict = createAsyncCache(async () => {
|
|
5948
5936
|
const data = await wfmClient.tools.getDucatnator();
|
|
5949
5937
|
if (!data) {
|
|
@@ -5952,7 +5940,7 @@ var globalDucatnatorIDDict = createAsyncCache(async () => {
|
|
|
5952
5940
|
return listToDict(data.hour, (d) => [d.item]);
|
|
5953
5941
|
}, 36e5);
|
|
5954
5942
|
|
|
5955
|
-
// src/data/wfm/globalItem.ts
|
|
5943
|
+
// src/warframe/data/wfm/globalItem.ts
|
|
5956
5944
|
function normalizeWordPrefixName2(input) {
|
|
5957
5945
|
return fullWidthToHalfWidth(input).toLowerCase().replace(/[·'()+【】[\]{},。!?;:_]/g, " ").replace(/[-/\\]/g, " ").replace(/\s+/g, " ").trim();
|
|
5958
5946
|
}
|
|
@@ -6037,7 +6025,7 @@ async function globalItemDataFactory(response) {
|
|
|
6037
6025
|
__name(globalItemDataFactory, "globalItemDataFactory");
|
|
6038
6026
|
var globalItemData = createAsyncCache(globalItemDataFactory, -1);
|
|
6039
6027
|
|
|
6040
|
-
// src/services/wfm-service/wfm-service.item-matcher.ts
|
|
6028
|
+
// src/warframe/services/wfm-service/wfm-service.item-matcher.ts
|
|
6041
6029
|
var wfmItemMatcher = (() => {
|
|
6042
6030
|
const setSuffix = "一套";
|
|
6043
6031
|
const bpSuffix = "蓝图";
|
|
@@ -6297,7 +6285,7 @@ var shortHandProcess = wfmItemMatcher.shortHandProcess;
|
|
|
6297
6285
|
var stringToWFMItem = wfmItemMatcher.stringToWFMItem;
|
|
6298
6286
|
var transformByWarframeAlias = wfmItemMatcher.transformByWarframeAlias;
|
|
6299
6287
|
|
|
6300
|
-
// src/services/wfm-service/wfm-service.riven-item-matcher.ts
|
|
6288
|
+
// src/warframe/services/wfm-service/wfm-service.riven-item-matcher.ts
|
|
6301
6289
|
function normalizeWordPrefixName4(input) {
|
|
6302
6290
|
return fullWidthToHalfWidth(input).toLowerCase().replace(/[·'()+【】[\]{},。!?;:_]/g, " ").replace(/[-/\\]/g, " ").replace(/\s+/g, " ").trim();
|
|
6303
6291
|
}
|
|
@@ -6425,7 +6413,7 @@ async function findRivenItemByName(input, globalRivenItemList) {
|
|
|
6425
6413
|
}
|
|
6426
6414
|
__name(findRivenItemByName, "findRivenItemByName");
|
|
6427
6415
|
|
|
6428
|
-
// src/services/wfm-service/index.ts
|
|
6416
|
+
// src/warframe/services/wfm-service/index.ts
|
|
6429
6417
|
async function updateCache() {
|
|
6430
6418
|
const updateTasks = [
|
|
6431
6419
|
{ name: "globalItemData", fn: globalItemData.update() },
|
|
@@ -6446,10 +6434,10 @@ async function updateCache() {
|
|
|
6446
6434
|
}
|
|
6447
6435
|
__name(updateCache, "updateCache");
|
|
6448
6436
|
async function getItemOrders(input) {
|
|
6449
|
-
input
|
|
6450
|
-
|
|
6451
|
-
return { ok: false, message: "wfm.inputItemName" };
|
|
6437
|
+
if (!input || !input.trim()) {
|
|
6438
|
+
return failure("wfm.inputItemName");
|
|
6452
6439
|
}
|
|
6440
|
+
input = input.trim();
|
|
6453
6441
|
const isFullLevel = /^满级|满级$/.test(normalizeName(input));
|
|
6454
6442
|
if (isFullLevel) {
|
|
6455
6443
|
if (input.startsWith("满级")) {
|
|
@@ -6460,18 +6448,18 @@ async function getItemOrders(input) {
|
|
|
6460
6448
|
}
|
|
6461
6449
|
const targetItem = await stringToWFMItem(input);
|
|
6462
6450
|
if (!targetItem) {
|
|
6463
|
-
return
|
|
6451
|
+
return failure("wfm.itemNotFound", false, { input });
|
|
6464
6452
|
}
|
|
6465
6453
|
const itemId = targetItem.slug;
|
|
6466
6454
|
const data = await wfmClient.items.getOrders(itemId);
|
|
6467
6455
|
if (!data) {
|
|
6468
|
-
return
|
|
6456
|
+
return failure("wfm.orderFetchFailed", true);
|
|
6469
6457
|
}
|
|
6470
6458
|
const result = data.filter(
|
|
6471
6459
|
(order) => order.user.status === "ingame" && order.visible && order.type === "sell" && (!isFullLevel || order.rank === targetItem.maxRank)
|
|
6472
6460
|
).sort((a, b) => toTimeStamp(b.updatedAt) - toTimeStamp(a.updatedAt)).sort((a, b) => a.platinum - b.platinum).slice(0, 8);
|
|
6473
6461
|
if (result.length === 0) {
|
|
6474
|
-
return
|
|
6462
|
+
return failure("wfm.noOnlineSeller");
|
|
6475
6463
|
}
|
|
6476
6464
|
return {
|
|
6477
6465
|
ok: true,
|
|
@@ -6480,21 +6468,25 @@ async function getItemOrders(input) {
|
|
|
6480
6468
|
}
|
|
6481
6469
|
__name(getItemOrders, "getItemOrders");
|
|
6482
6470
|
async function getRivenOrders(input) {
|
|
6471
|
+
if (!input || !input.trim()) {
|
|
6472
|
+
return failure("wfm.inputItemName");
|
|
6473
|
+
}
|
|
6474
|
+
input = input.trim();
|
|
6483
6475
|
const { globalRivenAttributeDict } = await globalRivenAttribute.get();
|
|
6484
6476
|
const targetItem = await findRivenItemByName(input);
|
|
6485
6477
|
if (!targetItem) {
|
|
6486
|
-
return
|
|
6478
|
+
return failure("wfm.rivenWeaponNotFound", false, { input });
|
|
6487
6479
|
}
|
|
6488
6480
|
const itemId = targetItem.slug;
|
|
6489
6481
|
const data = await wfmClient.rivens.getOrders(itemId);
|
|
6490
6482
|
if (!data) {
|
|
6491
|
-
return
|
|
6483
|
+
return failure("wfm.rivenOrderFetchFailed", true);
|
|
6492
6484
|
}
|
|
6493
6485
|
const top5 = data.filter(
|
|
6494
6486
|
(order) => order.owner.status === "ingame" && order.visible && !order.private && !order.closed && order.is_direct_sell
|
|
6495
6487
|
).sort((a, b) => toTimeStamp(b.updated) - toTimeStamp(a.updated)).sort((a, b) => a.starting_price - b.starting_price).slice(0, 5);
|
|
6496
6488
|
if (top5.length === 0) {
|
|
6497
|
-
return
|
|
6489
|
+
return failure("wfm.noOnlineRivenSeller");
|
|
6498
6490
|
}
|
|
6499
6491
|
const orders = top5.map((e) => {
|
|
6500
6492
|
const transformed = e.item.attributes.map(
|
|
@@ -6598,6 +6590,144 @@ var primedModHistory = createAsyncCache(async () => {
|
|
|
6598
6590
|
return result;
|
|
6599
6591
|
}, 432e5);
|
|
6600
6592
|
|
|
6593
|
+
// src/warframe/services/world-state-refresh.ts
|
|
6594
|
+
function time(value) {
|
|
6595
|
+
return value?.getTime() ?? 0;
|
|
6596
|
+
}
|
|
6597
|
+
__name(time, "time");
|
|
6598
|
+
function fissureId(value) {
|
|
6599
|
+
return value.id ?? [
|
|
6600
|
+
time(value.activation),
|
|
6601
|
+
time(value.expiry),
|
|
6602
|
+
value.node,
|
|
6603
|
+
value.tier,
|
|
6604
|
+
value.isHard,
|
|
6605
|
+
value.isStorm
|
|
6606
|
+
].join(":");
|
|
6607
|
+
}
|
|
6608
|
+
__name(fissureId, "fissureId");
|
|
6609
|
+
function dailyDealId(value) {
|
|
6610
|
+
return value.id ?? [
|
|
6611
|
+
time(value.activation),
|
|
6612
|
+
time(value.expiry),
|
|
6613
|
+
value.uniqueName ?? value.item
|
|
6614
|
+
].join(":");
|
|
6615
|
+
}
|
|
6616
|
+
__name(dailyDealId, "dailyDealId");
|
|
6617
|
+
function alertId(value) {
|
|
6618
|
+
return value.id ?? [
|
|
6619
|
+
time(value.activation),
|
|
6620
|
+
time(value.expiry),
|
|
6621
|
+
value.mission?.nodeKey ?? value.mission?.node ?? "",
|
|
6622
|
+
value.tag ?? ""
|
|
6623
|
+
].join(":");
|
|
6624
|
+
}
|
|
6625
|
+
__name(alertId, "alertId");
|
|
6626
|
+
function traderId(value) {
|
|
6627
|
+
return value.id ?? [
|
|
6628
|
+
time(value.activation),
|
|
6629
|
+
value.character,
|
|
6630
|
+
value.location
|
|
6631
|
+
].join(":");
|
|
6632
|
+
}
|
|
6633
|
+
__name(traderId, "traderId");
|
|
6634
|
+
function alertReward(alert) {
|
|
6635
|
+
const reward = alert.mission?.reward;
|
|
6636
|
+
if (!reward) {
|
|
6637
|
+
return "";
|
|
6638
|
+
}
|
|
6639
|
+
const values = [
|
|
6640
|
+
...reward.items,
|
|
6641
|
+
...reward.countedItems.map((item) => `${item.key} x${item.count}`)
|
|
6642
|
+
];
|
|
6643
|
+
if (reward.credits) {
|
|
6644
|
+
values.push(`${reward.credits} 现金`);
|
|
6645
|
+
}
|
|
6646
|
+
return values.join("、");
|
|
6647
|
+
}
|
|
6648
|
+
__name(alertReward, "alertReward");
|
|
6649
|
+
async function diffWorldStates(previous, current) {
|
|
6650
|
+
const notifications = [];
|
|
6651
|
+
const previousFissures = new Set(previous.raw.fissures.map(fissureId));
|
|
6652
|
+
for (const fissure of current.raw.fissures) {
|
|
6653
|
+
const id = fissureId(fissure);
|
|
6654
|
+
if (!previousFissures.has(id)) {
|
|
6655
|
+
const mapped = await adaptFissure(fissure);
|
|
6656
|
+
notifications.push({
|
|
6657
|
+
type: "fissure",
|
|
6658
|
+
id,
|
|
6659
|
+
tier: mapped.tier,
|
|
6660
|
+
tierNum: mapped.tierNum,
|
|
6661
|
+
node: mapped.node,
|
|
6662
|
+
hard: mapped.hard,
|
|
6663
|
+
category: fissure.isStorm ? "railjack" : fissure.isHard ? "steel-path" : "normal",
|
|
6664
|
+
expiry: time(fissure.expiry)
|
|
6665
|
+
});
|
|
6666
|
+
}
|
|
6667
|
+
}
|
|
6668
|
+
const previousTimestamp = previous.raw.timestamp.getTime();
|
|
6669
|
+
const currentTimestamp = current.raw.timestamp.getTime();
|
|
6670
|
+
for (const trader of current.raw.voidTraders) {
|
|
6671
|
+
const activation = time(trader.activation);
|
|
6672
|
+
if (activation > previousTimestamp && activation <= currentTimestamp) {
|
|
6673
|
+
notifications.push({
|
|
6674
|
+
type: "void-trader",
|
|
6675
|
+
id: traderId(trader),
|
|
6676
|
+
character: trader.character,
|
|
6677
|
+
location: trader.location,
|
|
6678
|
+
expiry: time(trader.expiry)
|
|
6679
|
+
});
|
|
6680
|
+
}
|
|
6681
|
+
}
|
|
6682
|
+
const previousDeals = new Set(previous.raw.dailyDeals.map(dailyDealId));
|
|
6683
|
+
for (const deal of current.raw.dailyDeals) {
|
|
6684
|
+
const id = dailyDealId(deal);
|
|
6685
|
+
if (!previousDeals.has(id)) {
|
|
6686
|
+
notifications.push({
|
|
6687
|
+
type: "daily-deal",
|
|
6688
|
+
id,
|
|
6689
|
+
item: deal.item,
|
|
6690
|
+
originalPrice: deal.originalPrice,
|
|
6691
|
+
salePrice: deal.salePrice,
|
|
6692
|
+
discount: deal.discount,
|
|
6693
|
+
expiry: time(deal.expiry)
|
|
6694
|
+
});
|
|
6695
|
+
}
|
|
6696
|
+
}
|
|
6697
|
+
const previousAlerts = new Set(previous.raw.alerts.map(alertId));
|
|
6698
|
+
for (const alert of current.raw.alerts) {
|
|
6699
|
+
const id = alertId(alert);
|
|
6700
|
+
if (!previousAlerts.has(id)) {
|
|
6701
|
+
notifications.push({
|
|
6702
|
+
type: "alert",
|
|
6703
|
+
id,
|
|
6704
|
+
description: alert.description,
|
|
6705
|
+
node: alert.mission?.node ?? "",
|
|
6706
|
+
missionType: alert.mission?.type ?? "",
|
|
6707
|
+
reward: alertReward(alert),
|
|
6708
|
+
expiry: time(alert.expiry)
|
|
6709
|
+
});
|
|
6710
|
+
}
|
|
6711
|
+
}
|
|
6712
|
+
return notifications;
|
|
6713
|
+
}
|
|
6714
|
+
__name(diffWorldStates, "diffWorldStates");
|
|
6715
|
+
function createWorldStateRefresher(source = globalWorldState) {
|
|
6716
|
+
let previous;
|
|
6717
|
+
return async () => {
|
|
6718
|
+
const current = await source.update();
|
|
6719
|
+
if (!previous) {
|
|
6720
|
+
previous = current;
|
|
6721
|
+
return [];
|
|
6722
|
+
}
|
|
6723
|
+
const notifications = await diffWorldStates(previous, current);
|
|
6724
|
+
previous = current;
|
|
6725
|
+
return notifications;
|
|
6726
|
+
};
|
|
6727
|
+
}
|
|
6728
|
+
__name(createWorldStateRefresher, "createWorldStateRefresher");
|
|
6729
|
+
var refreshWorldState = createWorldStateRefresher();
|
|
6730
|
+
|
|
6601
6731
|
// src/commands/miscs.ts
|
|
6602
6732
|
function inDevelopment() {
|
|
6603
6733
|
return t("miscs.inDevelopment");
|
|
@@ -6620,6 +6750,54 @@ function createMiscsCommands(deps) {
|
|
|
6620
6750
|
}
|
|
6621
6751
|
__name(createMiscsCommands, "createMiscsCommands");
|
|
6622
6752
|
|
|
6753
|
+
// src/utils/assets.ts
|
|
6754
|
+
var import_node_fs2 = require("node:fs");
|
|
6755
|
+
var import_node_path2 = require("node:path");
|
|
6756
|
+
var textCache2 = /* @__PURE__ */ new Map();
|
|
6757
|
+
function assetRoot2() {
|
|
6758
|
+
if ((0, import_node_path2.basename)(__dirname) === "utils") {
|
|
6759
|
+
return (0, import_node_path2.resolve)(__dirname, "../assets");
|
|
6760
|
+
}
|
|
6761
|
+
return (0, import_node_path2.resolve)(__dirname, "assets");
|
|
6762
|
+
}
|
|
6763
|
+
__name(assetRoot2, "assetRoot");
|
|
6764
|
+
function assetPath2(path) {
|
|
6765
|
+
const root = assetRoot2();
|
|
6766
|
+
const resolved = (0, import_node_path2.resolve)(root, path);
|
|
6767
|
+
if (resolved !== root && !resolved.startsWith(`${root}${import_node_path2.sep}`)) {
|
|
6768
|
+
throw new Error(`Invalid asset path: ${path}`);
|
|
6769
|
+
}
|
|
6770
|
+
return resolved;
|
|
6771
|
+
}
|
|
6772
|
+
__name(assetPath2, "assetPath");
|
|
6773
|
+
function loadAssetText2(path) {
|
|
6774
|
+
const resolved = assetPath2(path);
|
|
6775
|
+
if (textCache2.has(resolved)) {
|
|
6776
|
+
return textCache2.get(resolved);
|
|
6777
|
+
}
|
|
6778
|
+
const data = (0, import_node_fs2.readFileSync)(resolved, "utf8");
|
|
6779
|
+
textCache2.set(resolved, data);
|
|
6780
|
+
return data;
|
|
6781
|
+
}
|
|
6782
|
+
__name(loadAssetText2, "loadAssetText");
|
|
6783
|
+
|
|
6784
|
+
// src/utils/color.ts
|
|
6785
|
+
function lerp(start, end, t2) {
|
|
6786
|
+
return Math.round(start + (end - start) * t2);
|
|
6787
|
+
}
|
|
6788
|
+
__name(lerp, "lerp");
|
|
6789
|
+
function hexToRgb(hex) {
|
|
6790
|
+
const r = Number.parseInt(hex.slice(1, 3), 16);
|
|
6791
|
+
const g = Number.parseInt(hex.slice(3, 5), 16);
|
|
6792
|
+
const b = Number.parseInt(hex.slice(5, 7), 16);
|
|
6793
|
+
return { r, g, b };
|
|
6794
|
+
}
|
|
6795
|
+
__name(hexToRgb, "hexToRgb");
|
|
6796
|
+
function rgbToHex(r, g, b) {
|
|
6797
|
+
return `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`;
|
|
6798
|
+
}
|
|
6799
|
+
__name(rgbToHex, "rgbToHex");
|
|
6800
|
+
|
|
6623
6801
|
// src/components/wf.tsx
|
|
6624
6802
|
var import_jsx_runtime2 = require("@satorijs/element/jsx-runtime");
|
|
6625
6803
|
function ArbitrationComponent(arbi) {
|
|
@@ -8323,10 +8501,10 @@ function createWfCommands(deps) {
|
|
|
8323
8501
|
__name(createWfCommands, "createWfCommands");
|
|
8324
8502
|
|
|
8325
8503
|
// src/components/render.tsx
|
|
8326
|
-
var
|
|
8327
|
-
var style =
|
|
8328
|
-
var svg =
|
|
8329
|
-
var template =
|
|
8504
|
+
var import_koishi = require("koishi");
|
|
8505
|
+
var style = loadAssetText2("render.css");
|
|
8506
|
+
var svg = loadAssetText2("render-icons.svg");
|
|
8507
|
+
var template = loadAssetText2("render.html");
|
|
8330
8508
|
var slots = {
|
|
8331
8509
|
body: "<!-- __WARFRAME_RENDER_SLOT_BODY__ -->",
|
|
8332
8510
|
title: "__WARFRAME_RENDER_SLOT_TITLE__",
|
|
@@ -8357,7 +8535,7 @@ async function generateImageElementOutput(puppe, element) {
|
|
|
8357
8535
|
const handle = await page.$("#root>*");
|
|
8358
8536
|
const clip = await handle?.boundingBox() ?? void 0;
|
|
8359
8537
|
const buffer = await page.screenshot({ clip });
|
|
8360
|
-
return
|
|
8538
|
+
return import_koishi.h.image(buffer, "image/png");
|
|
8361
8539
|
}
|
|
8362
8540
|
);
|
|
8363
8541
|
}
|
|
@@ -8404,9 +8582,10 @@ function ItemOrderComponent(item, orders) {
|
|
|
8404
8582
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("table", { style: "width:100%;", children: [
|
|
8405
8583
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("tr", { children: [
|
|
8406
8584
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("th", { style: "width:40%;", children: "玩家名" }),
|
|
8407
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("th", { style: "width:
|
|
8585
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("th", { style: "width:20%;", children: "状态" }),
|
|
8408
8586
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("th", { style: "width:10%;", children: "价格" }),
|
|
8409
8587
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("th", { style: "width:10%;", children: "数量" }),
|
|
8588
|
+
item.maxRank && item.maxRank > 0 ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("th", { style: "width:10%;", children: "等级" }) : null,
|
|
8410
8589
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("th", { style: "width:10%;", children: "好评" })
|
|
8411
8590
|
] }),
|
|
8412
8591
|
orders.map((order) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("tr", { children: [
|
|
@@ -8414,6 +8593,7 @@ function ItemOrderComponent(item, orders) {
|
|
|
8414
8593
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("td", { children: order.user.status }),
|
|
8415
8594
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("td", { children: order.platinum }),
|
|
8416
8595
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("td", { children: order.quantity }),
|
|
8596
|
+
item.maxRank && item.maxRank > 0 ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("td", { children: order.rank }) : null,
|
|
8417
8597
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("td", { children: order.user.reputation })
|
|
8418
8598
|
] }))
|
|
8419
8599
|
] })
|
|
@@ -8866,8 +9046,8 @@ function wmMessage(img, item, orders) {
|
|
|
8866
9046
|
const lines = orders.slice(0, 3).map((order) => `
|
|
8867
9047
|
/w ${order.user.ingameName} Hi! I want to buy: "${item.i18n.en?.name}${!item.maxRank || item.maxRank === 0 ? "" : ` (rank ${order.rank})`}" for ${order.platinum} platinum. (warframe.market)`);
|
|
8868
9048
|
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("message", { children: [
|
|
8869
|
-
|
|
8870
|
-
|
|
9049
|
+
img,
|
|
9050
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { children: lines.join("") })
|
|
8871
9051
|
] });
|
|
8872
9052
|
}
|
|
8873
9053
|
__name(wmMessage, "wmMessage");
|
|
@@ -8905,17 +9085,100 @@ function createWfmCommands(deps) {
|
|
|
8905
9085
|
}
|
|
8906
9086
|
__name(createWfmCommands, "createWfmCommands");
|
|
8907
9087
|
|
|
9088
|
+
// src/messages/world-state.tsx
|
|
9089
|
+
var import_jsx_runtime5 = require("@satorijs/element/jsx-runtime");
|
|
9090
|
+
function formatExpiry(expiry) {
|
|
9091
|
+
if (!expiry) {
|
|
9092
|
+
return "";
|
|
9093
|
+
}
|
|
9094
|
+
return new Date(expiry).toLocaleString("zh-CN", {
|
|
9095
|
+
hour12: false,
|
|
9096
|
+
timeZone: "Asia/Shanghai"
|
|
9097
|
+
});
|
|
9098
|
+
}
|
|
9099
|
+
__name(formatExpiry, "formatExpiry");
|
|
9100
|
+
function suffixWithExpiry(expiry) {
|
|
9101
|
+
const formatted = formatExpiry(expiry);
|
|
9102
|
+
return formatted ? `,截止 ${formatted}` : "";
|
|
9103
|
+
}
|
|
9104
|
+
__name(suffixWithExpiry, "suffixWithExpiry");
|
|
9105
|
+
function suffixWithTimeRemaining(expiry) {
|
|
9106
|
+
return expiry > Date.now() ? `剩余${msToHumanReadable(expiry - Date.now())}` : "";
|
|
9107
|
+
}
|
|
9108
|
+
__name(suffixWithTimeRemaining, "suffixWithTimeRemaining");
|
|
9109
|
+
async function createWorldStateMessages(items) {
|
|
9110
|
+
const messages2 = [];
|
|
9111
|
+
const push = /* @__PURE__ */ __name(async (title, lines) => {
|
|
9112
|
+
if (lines.length) {
|
|
9113
|
+
messages2.push(/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("message", { children: [
|
|
9114
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { children: `${title}
|
|
9115
|
+
` }),
|
|
9116
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { children: lines.join("\n") })
|
|
9117
|
+
] }));
|
|
9118
|
+
}
|
|
9119
|
+
}, "push");
|
|
9120
|
+
await push("新的虚空裂隙已出现:", items.filter((item) => item.type === "fissure").map((item) => {
|
|
9121
|
+
const category = item.category === "steel-path" ? "[钢铁]" : item.category === "railjack" ? "[九重天]" : "[普通]";
|
|
9122
|
+
const faction = item.node.faction ? `${item.node.faction}` : "";
|
|
9123
|
+
return `${category}${item.tier} - ${item.node.system} (${item.node.type}) ${faction} ${item.node.name} | ${suffixWithTimeRemaining(item.expiry)}`;
|
|
9124
|
+
}));
|
|
9125
|
+
await push("虚空商人到达", items.filter((item) => item.type === "void-trader").map((item) => `${item.character} 已到达 ${item.location}${suffixWithExpiry(item.expiry)}`));
|
|
9126
|
+
await push("新每日特惠", items.filter((item) => item.type === "daily-deal").map((item) => `${item.item}:${item.salePrice} 白金(-${item.discount}%,原价 ${item.originalPrice})${suffixWithExpiry(item.expiry)}`));
|
|
9127
|
+
await push("新警报", items.filter((item) => item.type === "alert").map((item) => {
|
|
9128
|
+
const reward = item.reward ? ` | 奖励:${item.reward}` : "";
|
|
9129
|
+
return `${item.description} | ${item.node} ${item.missionType}${reward}${suffixWithExpiry(item.expiry)}`;
|
|
9130
|
+
}));
|
|
9131
|
+
return messages2;
|
|
9132
|
+
}
|
|
9133
|
+
__name(createWorldStateMessages, "createWorldStateMessages");
|
|
9134
|
+
|
|
9135
|
+
// src/schedules/world-state.ts
|
|
9136
|
+
function setupWorldStateSchedule(ctx, deps, refresh = refreshWorldState) {
|
|
9137
|
+
let running = false;
|
|
9138
|
+
const run = /* @__PURE__ */ __name(async () => {
|
|
9139
|
+
if (running) {
|
|
9140
|
+
return;
|
|
9141
|
+
}
|
|
9142
|
+
running = true;
|
|
9143
|
+
try {
|
|
9144
|
+
const messages2 = await createWorldStateMessages(await refresh());
|
|
9145
|
+
const channels = Object.values(deps.config.channelIds);
|
|
9146
|
+
if (!channels.length) {
|
|
9147
|
+
return;
|
|
9148
|
+
}
|
|
9149
|
+
for (const message of messages2) {
|
|
9150
|
+
await ctx.broadcast(channels, message);
|
|
9151
|
+
}
|
|
9152
|
+
} catch (error) {
|
|
9153
|
+
deps.logger.warn(error, "刷新 Warframe 世界状态失败");
|
|
9154
|
+
} finally {
|
|
9155
|
+
running = false;
|
|
9156
|
+
}
|
|
9157
|
+
}, "run");
|
|
9158
|
+
ctx.cron("0 */5 * * * *", () => {
|
|
9159
|
+
void run();
|
|
9160
|
+
});
|
|
9161
|
+
}
|
|
9162
|
+
__name(setupWorldStateSchedule, "setupWorldStateSchedule");
|
|
9163
|
+
|
|
9164
|
+
// src/schedules/index.ts
|
|
9165
|
+
function setupSchedules(ctx, deps) {
|
|
9166
|
+
setupWorldStateSchedule(ctx, deps);
|
|
9167
|
+
}
|
|
9168
|
+
__name(setupSchedules, "setupSchedules");
|
|
9169
|
+
|
|
8908
9170
|
// src/index.ts
|
|
8909
9171
|
var import_reflect_metadata = __toESM(require_Reflect());
|
|
8910
9172
|
var name = "warframe";
|
|
8911
9173
|
var inject = {
|
|
8912
|
-
required: ["puppeteer"]
|
|
9174
|
+
required: ["cron", "database", "puppeteer"]
|
|
8913
9175
|
};
|
|
8914
|
-
var Config =
|
|
8915
|
-
|
|
8916
|
-
|
|
8917
|
-
|
|
8918
|
-
|
|
9176
|
+
var Config = import_koishi2.Schema.object({
|
|
9177
|
+
channelIds: import_koishi2.Schema.dict(import_koishi2.Schema.string()).default({}).description("用于接收推送的`channelId`列表, 需携带平台前缀, 如:`qq:123456789`"),
|
|
9178
|
+
developerMode: import_koishi2.Schema.boolean().default(false),
|
|
9179
|
+
ocrAPISecret: import_koishi2.Schema.object({
|
|
9180
|
+
id: import_koishi2.Schema.string(),
|
|
9181
|
+
key: import_koishi2.Schema.string()
|
|
8919
9182
|
}).description("OCR API 密钥")
|
|
8920
9183
|
});
|
|
8921
9184
|
function apply(ctx) {
|
|
@@ -8926,13 +9189,14 @@ function apply(ctx) {
|
|
|
8926
9189
|
};
|
|
8927
9190
|
setupHooks(ctx, deps);
|
|
8928
9191
|
setupCommands(ctx, deps);
|
|
9192
|
+
setupSchedules(ctx, deps);
|
|
8929
9193
|
}
|
|
8930
9194
|
__name(apply, "apply");
|
|
8931
9195
|
function setupHooks(ctx, deps) {
|
|
8932
|
-
const { config, logger
|
|
9196
|
+
const { config, logger } = deps;
|
|
8933
9197
|
ctx.on("message", (session) => {
|
|
8934
9198
|
if (config.developerMode) {
|
|
8935
|
-
|
|
9199
|
+
logger.info(
|
|
8936
9200
|
`Koishi recieved message: ${session.content}
|
|
8937
9201
|
Platform: ${session.platform}
|
|
8938
9202
|
User: ${session.author.name}`
|
|
@@ -8941,7 +9205,7 @@ function setupHooks(ctx, deps) {
|
|
|
8941
9205
|
});
|
|
8942
9206
|
ctx.on("command/before-execute", (action) => {
|
|
8943
9207
|
if (config.developerMode) {
|
|
8944
|
-
|
|
9208
|
+
logger.info(
|
|
8945
9209
|
`WFM Plugin received command ${action.command?.name}
|
|
8946
9210
|
arguments: ${JSON.stringify(action.args)}`
|
|
8947
9211
|
);
|