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 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.push` 命令。
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 pushNews(news) {
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
- const content = config.picture
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "koishi-plugin-cs2-update-log",
3
- "version": "2.0.1",
3
+ "version": "2.1.1",
4
4
  "description": "Koishi plugin for monitoring CS2 official Steam announcements and update logs.",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",