koishi-plugin-kkk 3.3.0-beta.1 → 3.3.0-beta.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/CHANGELOG.md +2 -1
- package/lib/compat/node-karin.js +13 -1
- package/package.json +1 -1
- package/src/compat/node-karin.ts +13 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 更新日志
|
|
2
2
|
|
|
3
|
-
## 3.3.0-beta.
|
|
3
|
+
## 3.3.0-beta.2
|
|
4
4
|
|
|
5
5
|
> **预览版**:给愿意先试的人用。npm 上默认安装的(latest)还是 3.2.2,想装这个用 npm i koishi-plugin-kkk@beta(或者面板里的「检查更新」换成 beta 通道)。
|
|
6
6
|
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
### 顺手修掉的几个问题
|
|
13
13
|
|
|
14
|
+
- **预览版不会再被提示「有新版本」了**:更新检测以前一律拿 npm 上的 latest 比,本地跑预览版时会说「有新版本 3.2.2」—— 那其实是**降级**。现在本地版本带 -(beta)时改看 beta 通道,而且只在远端确实更新时才提示。
|
|
14
15
|
- **修了快手/小红书一解析就报错的 bug**:这两个平台的处理里调用了在线播放器的 `applyForceOnlinePlayer`,却**从来没 import 过它** —— 一发快手链接就是 `ReferenceError: applyForceOnlinePlayer is not defined`(错误卡片倒是发得挺快)。现在补上 import,并加了 `scripts/smoke-imports.cjs` 把这类「用了没 import」钉死(自检 + 全仓库扫描,实测能抓到这次这个坑)。
|
|
15
16
|
- **错误提示的分段加了空行**:markdown 里单个换行不算换行,两段会被拼成一整行、QQ 那边字号被撑得很难看;现在 ID 一行、说明一行,中间空一行。
|
|
16
17
|
- **卡片解析不再去搜抖音**:抖音那边没有「卡片消息」这种东西,以前那条「当前接口库没有抖音搜索能力,跳过」的日志就是多搜了一个平台留下的 —— 现在只搜 B站(入口本来就只放 B站卡片进来),少一次风控风险、也少几秒等待。
|
package/lib/compat/node-karin.js
CHANGED
|
@@ -28,6 +28,8 @@ const node_url_1 = require("node:url");
|
|
|
28
28
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
29
29
|
const node_path_1 = __importDefault(require("node:path"));
|
|
30
30
|
const koishi_1 = require("koishi");
|
|
31
|
+
// 版本比较复用注入器那边的实现(它处理了 -beta.1 这类预发布号的先后)
|
|
32
|
+
const semver_1 = require("../karin/module/utils/semver");
|
|
31
33
|
const logger_1 = require("./logger");
|
|
32
34
|
Object.defineProperty(exports, "logger", { enumerable: true, get: function () { return logger_1.logger; } });
|
|
33
35
|
const forward_collect_1 = require("./forward-collect");
|
|
@@ -954,11 +956,21 @@ const checkPkgUpdate = async (name, _options) => {
|
|
|
954
956
|
if (!response.ok)
|
|
955
957
|
return { status: 'error', error: new Error('HTTP ' + response.status) };
|
|
956
958
|
const meta = await response.json();
|
|
957
|
-
const
|
|
959
|
+
const tags = meta?.['dist-tags'] ?? {};
|
|
960
|
+
/**
|
|
961
|
+
* 预览版(3.3.0-beta.1 这种)**不能拿 latest 比**:本地跑 beta 时 latest 还在 3.2.2,
|
|
962
|
+
* 按老逻辑会报「有新版本 3.2.2」—— 那其实是**降级**。
|
|
963
|
+
* 所以带 - 的本地版本改看 beta 通道;beta 没有(说明预览已经并进正式版)才回退到 latest,
|
|
964
|
+
* 并且只在远端确实比本地新时才说「有更新」。
|
|
965
|
+
*/
|
|
966
|
+
const isPreview = local.includes('-');
|
|
967
|
+
const remote = (isPreview ? (tags.beta || tags.latest) : tags.latest) || '';
|
|
958
968
|
if (!remote)
|
|
959
969
|
return { status: 'error', error: new Error('响应缺少 dist-tags.latest') };
|
|
960
970
|
if (remote === local)
|
|
961
971
|
return { status: 'no', local };
|
|
972
|
+
if (isPreview && !(0, semver_1.isSemverGreater)(remote, local))
|
|
973
|
+
return { status: 'no', local };
|
|
962
974
|
return { status: 'yes', local, remote };
|
|
963
975
|
}
|
|
964
976
|
catch (error) {
|
package/package.json
CHANGED
package/src/compat/node-karin.ts
CHANGED
|
@@ -14,6 +14,9 @@ import path from 'node:path'
|
|
|
14
14
|
import { h } from 'koishi'
|
|
15
15
|
import type { Bot, Context, Session } from 'koishi'
|
|
16
16
|
|
|
17
|
+
// 版本比较复用注入器那边的实现(它处理了 -beta.1 这类预发布号的先后)
|
|
18
|
+
import { isSemverGreater } from '../karin/module/utils/semver'
|
|
19
|
+
|
|
17
20
|
import { logger } from './logger'
|
|
18
21
|
import { COLLECTED_MESSAGE_ID, collectForward } from './forward-collect'
|
|
19
22
|
import { UnconfirmedSendError, classifySendFailure, describeSendFailure, isPassiveLimitFailure } from './sendError'
|
|
@@ -963,9 +966,18 @@ export const checkPkgUpdate = async (name: string, _options?: { compare?: string
|
|
|
963
966
|
const response = await fetch('https://registry.npmmirror.com/' + name, { signal: AbortSignal.timeout(10000) })
|
|
964
967
|
if (!response.ok) return { status: 'error' as const, error: new Error('HTTP ' + response.status) }
|
|
965
968
|
const meta: any = await response.json()
|
|
966
|
-
const
|
|
969
|
+
const tags: Record<string, string> = meta?.['dist-tags'] ?? {}
|
|
970
|
+
/**
|
|
971
|
+
* 预览版(3.3.0-beta.1 这种)**不能拿 latest 比**:本地跑 beta 时 latest 还在 3.2.2,
|
|
972
|
+
* 按老逻辑会报「有新版本 3.2.2」—— 那其实是**降级**。
|
|
973
|
+
* 所以带 - 的本地版本改看 beta 通道;beta 没有(说明预览已经并进正式版)才回退到 latest,
|
|
974
|
+
* 并且只在远端确实比本地新时才说「有更新」。
|
|
975
|
+
*/
|
|
976
|
+
const isPreview = local.includes('-')
|
|
977
|
+
const remote = (isPreview ? (tags.beta || tags.latest) : tags.latest) || ''
|
|
967
978
|
if (!remote) return { status: 'error' as const, error: new Error('响应缺少 dist-tags.latest') }
|
|
968
979
|
if (remote === local) return { status: 'no' as const, local }
|
|
980
|
+
if (isPreview && !isSemverGreater(remote, local)) return { status: 'no' as const, local }
|
|
969
981
|
return { status: 'yes' as const, local, remote }
|
|
970
982
|
} catch (error) {
|
|
971
983
|
return { status: 'error' as const, error: error as Error }
|