koishi-plugin-cs2-update-log 2.0.1 → 2.1.1
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/README.md +2 -1
- package/lib/index.js +19 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ Koishi QQ 机器人插件,用于轮询 CS2 官方 Steam 公告流,按 `gid`
|
|
|
14
14
|
- 或正文包含 `[MAPS]`、`[GAMEPLAY]`、`[MISC]`、`[AUDIO]`、`[ITEMS]`、`[WORKSHOP]`、`[PREMIER]` 等更新分区
|
|
15
15
|
- 支持纯文本推送或 Puppeteer 深色长图卡片推送。
|
|
16
16
|
- 支持 OpenAI-compatible Chat Completions API 翻译。
|
|
17
|
-
- 提供 `cs2log.check` 与 `cs2log.
|
|
17
|
+
- 提供 `cs2log.check`、`cs2log.push` 与 `cs2log.test` 命令。
|
|
18
18
|
|
|
19
19
|
## 配置要点
|
|
20
20
|
|
|
@@ -26,3 +26,4 @@ Koishi QQ 机器人插件,用于轮询 CS2 官方 Steam 公告流,按 `gid`
|
|
|
26
26
|
|
|
27
27
|
- `cs2log.check`:查看最近 5 条新闻的分类结果。
|
|
28
28
|
- `cs2log.push`:手动检查并推送新内容。
|
|
29
|
+
- `cs2log.test`:在输入该指令的当前群测试推送最近 2 条新闻,不写入判重 state。
|
package/lib/index.js
CHANGED
|
@@ -157,15 +157,18 @@ function apply(ctx, config) {
|
|
|
157
157
|
polling = false;
|
|
158
158
|
}
|
|
159
159
|
}
|
|
160
|
-
async function
|
|
160
|
+
async function buildNewsContent(news) {
|
|
161
161
|
const link = getNewsLink(news.item);
|
|
162
162
|
const baseMarkdown = steamContentToMarkdown(news.item.content);
|
|
163
163
|
const translated = await maybeTranslate(news.item.title, baseMarkdown);
|
|
164
164
|
const displayTitle = translated.title || news.item.title;
|
|
165
165
|
const displayMarkdown = translated.markdown || baseMarkdown;
|
|
166
|
-
|
|
166
|
+
return config.picture
|
|
167
167
|
? await renderOrFallbackText(news, displayTitle, displayMarkdown, link)
|
|
168
168
|
: buildTextMessage(news, displayTitle, displayMarkdown, link);
|
|
169
|
+
}
|
|
170
|
+
async function pushNews(news) {
|
|
171
|
+
const content = await buildNewsContent(news);
|
|
169
172
|
if (!config.targets.length) {
|
|
170
173
|
logger.warn('未配置推送目标,已跳过:%s', news.item.title);
|
|
171
174
|
return;
|
|
@@ -300,6 +303,20 @@ function apply(ctx, config) {
|
|
|
300
303
|
const pushed = await pollAndPush('manual');
|
|
301
304
|
return pushed ? `已推送 ${pushed} 条新的 CS2 官方新闻。` : '没有发现新的 CS2 官方新闻。';
|
|
302
305
|
});
|
|
306
|
+
ctx.command('cs2log.test', '测试推送最近 2 条 CS2 官方新闻')
|
|
307
|
+
.action(async ({ session }) => {
|
|
308
|
+
if (!session?.bot || !session.channelId)
|
|
309
|
+
return '测试指令需要在可发送消息的会话中使用。';
|
|
310
|
+
const items = await fetchNews();
|
|
311
|
+
const testItems = items.slice(0, 2).reverse();
|
|
312
|
+
if (!testItems.length)
|
|
313
|
+
return '没有拉取到可测试推送的 CS2 官方新闻。';
|
|
314
|
+
for (const item of testItems) {
|
|
315
|
+
const content = await buildNewsContent(classifyNews(item));
|
|
316
|
+
await session.bot.sendMessage(session.channelId, content);
|
|
317
|
+
}
|
|
318
|
+
return `已向当前会话触发 ${testItems.length} 条 CS2 官方新闻测试推送。本次测试不会写入 gid 判重 state。`;
|
|
319
|
+
});
|
|
303
320
|
ctx.on('ready', () => {
|
|
304
321
|
void loadState()
|
|
305
322
|
.then(() => pollAndPush('startup'))
|
package/package.json
CHANGED