Skip to content

VincentZyuApps/koishi-plugin-sky-renwu-weibo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

koishi-plugin-sky-renwu-weibo

koishi-plugin-sky-renwu-weibo

npm npm-download

GitHub Gitee

Koishi Forum awa群-zyu建的qq群 光遇Bot群

💬 交流反馈

🐛 Bug 反馈 / 💡 建议 / 👨‍💻 插件开发交流,欢迎加群:

💬 插件使用问题 / 🐛 Bug反馈 / 👨‍💻 插件开发交流,欢迎加入QQ群:259248174 🎉(这个群G了)

💬 插件使用问题 / 🐛 Bug反馈 / 👨‍💻 插件开发交流,欢迎加入 awa群-zyu建的qq群:1085190201 🎉

🤖 光遇 Bot / QQ 官方 Bot / Koishi 相关交流,也欢迎加入光遇 Bot QQ 群:475328908

💡 在群里直接艾特我,回复的更快哦~ ✨

📅✅ 获取微博博主 @今天游离翻车了吗 的光遇国服每日任务,支持文字、图片、Puppeteer 卡片图和 QQ Markdown ✨

Important

🙏 特别感谢微博博主 @今天游离翻车了吗 多年来稳定更新光遇每日任务内容。

这个插件只是做自动化获取和转发,真正持续维护每日攻略内容的是博主本人。

Important

🙏 特别感谢 github.com/Kaguya233qwq/nonebot_plugin_sky 仓库提供的微博爬虫思路参考。

本插件在 TypeScript + Koishi 环境中重新实现相关流程。

Tip

puppeteerassetsserver 都是可选服务,不启用对应功能时不需要安装。

  • 启用 puppeteer-image 卡片图发送形式时,需要启用 Koishi 的 puppeteer 服务。
  • 启用 append-puppeteer-image QQ Markdown 按钮行为时,会根据配置模式使用 Koishi 的 assetsserver 服务,把 Puppeteer 卡片图转换成 QQ 官方 Bot 可访问的公网图片 URL。
  • standaloneappend-qq-markdown 不使用 assets / server 图片 URL 生成功能,也不依赖它们。

📌 指令

今日光遇国服任务

命令名称可以在配置项 commandName 中修改。

可以用命令选项临时覆盖微博访问策略,优先级为:--weibo 命令选项 > weiboAccessMode 配置项。mode 不区分大小写,可用值为:

cookie-only
guest-only
cookie-then-guest
guest-then-cookie

示例:

今日光遇国服任务 --weibo guest-only
今日光遇国服任务 --weibo COOKIE-ONLY

🔐 微博访问策略与 Cookie

推荐保持默认访问策略 D:先尝试移动端无登录用户态,失败或未匹配到今日任务时再 fallback 到 PC 微博网页登录态。

默认情况下可以先不填写 weiboCookie。如果移动端公开接口受限、无登录用户态没有匹配到今日任务,或想提高兜底稳定性,再运行仓库内的辅助脚本打开有头浏览器,手动登录微博后导出 weibo.com Cookie,并填入插件配置项 weiboCookie

Important

Cookie 辅助脚本只使用 Python 标准库,不需要安装任何第三方库,也不需要 pip install

建议使用 Python 3.10 - 3.13,优先推荐和作者同款的 Python 3.13。脚本使用了 Python 3.10+ 的类型标注语法,Python 3.9 及以下不建议使用。

Tip

这个脚本底层使用的是 CDP(Chrome DevTools Protocol),不是 Selenium。

它会启动带 --remote-debugging-port 的 Chrome / Edge,只访问本机 127.0.0.1 的 DevTools 调试端口,再通过 CDP 的 Network.getAllCookies 读取当前 PC 微博网页登录态下的 weibo.com Cookie。

脚本不会把完整 Cookie 打印到终端或写进调试日志,只会把结果写入本地 weibo_cookie.private.txt

由于安全原因,插件不会内置任何微博登录 Cookie,也不建议把 Cookie 写进源码、README、issue 或聊天记录中。请自行登录微博并获取自己的 Cookie。

当前推荐配置流程是:先保持默认 D 使用移动端无登录用户态;需要 Cookie fallback 时,再通过 Python 脚本使用 CDP 获取本机 PC 浏览器里的 weibo.com 登录态,并把导出的 Cookie 复制到 Koishi 配置项 weiboCookie

由于浏览器安全策略和跨域限制,Koishi Console 页面暂时无法直接读取 weibo.com 的登录 Cookie,因此获取 Cookie 的流程目前没有内置到浏览器 WebUI 中。插件运行时也不会自动读取本地 weibo_cookie.private.txt,这个文件只用于把内容复制到配置项。

脚本说明见:scripts/readme.md

脚本会优先使用 --browser 传入的浏览器路径;如果没有传入,会依次尝试寻找下面这些默认路径:

C:\Program Files\Google\Chrome\Application\chrome.exe
C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
C:\Program Files\Microsoft\Edge\Application\msedge.exe
/usr/bin/google-chrome
/usr/bin/chromium

你也可以使用 --browser 参数指定浏览器路径。

# 🪟 on Windows:使用默认路径自动查找
python scripts\20260630\weibo_cookie.py
# 🪟 on Windows:也可以使用 --browser 指定浏览器路径
python scripts\20260630\weibo_cookie.py --browser "C:\Program Files\Google\Chrome\Application\chrome.exe"
# 🐧 on Linux:使用默认路径自动查找
python scripts/20260630/weibo_cookie.py
# 🐧 on Linux:也可以使用 --browser 指定浏览器路径
python scripts/20260630/weibo_cookie.py --browser "/usr/bin/google-chrome"

运行后目录大致如下:

scripts/
└── 20260630/
    ├── weibo_cookie.py             # 🌐 打开有头浏览器,登录微博并导出 Cookie
    ├── latest.debug.log            # 🧾 调试日志,包含本地运行信息
    ├── weibo_cookie.private.txt    # 🔐 访问策略 A/C/D 可使用的 weiboCookie
    └── .browser-profile/           # 🗂️ 隔离浏览器用户数据目录,可能包含登录态

weibo_cookie.private.txt 的内容填入 Koishi 插件配置项 weiboCookie。访问策略 A/C/D 会使用这个配置项,策略 B 不使用它;插件不会自动读取本地 txt 文件。

weibo_cookie.private.txtlatest.debug.log.browser-profile 都包含隐私信息,不要发给别人,也不要提交到 Git。

微博 Cookie 脚本示例

💬 输出方式

插件配置项 msgFormArr 是表格形式:每一行选择一种发送形式,并通过 enabled 控制是否启用。可以调整行顺序,插件会按表格顺序发送;strictOrderMode=false 时会并行发送,发送顺序不保证。

  • 📄➕🖼️ text-with-image:先文后图,一条消息内先发送微博长文本,再发送全部图片
  • 🖼️➕📄 image-with-text:先图后文,一条消息内先发送全部图片,再发送微博长文本
  • 📄 text:纯文字,只发送微博长文本、数据来源和原文链接
  • 📦 forward:图文合并转发,把文字和图片打包进合并转发;仅支持 onebotreddiscord 平台
  • 🖼️ puppeteer-image:Puppeteer 卡片图,把文字和微博图片排版成一张圆角卡片图
  • 🤖 qq-markdown:QQ 官方 Bot Markdown 正文消息,只有 QQ 官方 Bot 平台能用;操作按钮行为由 qqMarkdownButtonMode 控制

默认启用 forwardpuppeteer-imageqq-markdown

forward 模式仅支持 onebotreddiscord 平台;其他平台即使勾选也会直接跳过。puppeteer-image 模式需要启用 Koishi 的 puppeteer 服务;未启用时插件会跳过该发送形式。append-puppeteer-image 按钮行为还需要根据配置模式启用 Koishi assetsserver 服务,用于生成公网 http(s) 图片地址。standaloneappend-qq-markdown 不使用这套图片 URL 生成逻辑。

QQ 官方 Bot 平台使用 puppeteer-imageappend-puppeteer-image 时,建议把 Puppeteer 卡片图输出格式改为 jpegwebp,并适当调低 screenshotQuality。如果继续使用默认 PNG,微博图片较多时生成的长图可能过大,导致 QQ 平台不接受或不渲染图片。

🖼️ 效果预览

Puppeteer 卡片图预览

QQ Markdown 按钮预览

🔧 配置项

📌 指令配置

配置项 类型 默认值 说明
commandName string "今日光遇国服任务" 触发命令名称

🔑 微博请求配置

配置项 类型 默认值 说明
uid string "7360748659" 微博用户 UID,默认是 @今天游离翻车了吗
authorName string "今天游离翻车了吗" 来源作者显示名,会展示在数据来源署名里
weiboAccessMode "cookie-only" | "guest-only" | "cookie-then-guest" | "guest-then-cookie" "guest-then-cookie" 微博访问策略:A 仅 PC 微博网页登录态、B 仅无登录用户态、C 先 PC 网页登录态后无登录、D 先无登录后 PC 网页登录态;命令选项 --weibo <mode> 可临时覆盖此配置,优先级更高
weiboCookie string "" PC 微博网页登录 Cookie;访问策略 A/C/D 会使用这个配置项,可用 scripts/20260630/weibo_cookie.py 导出后手动复制,不会自动读取本地 txt
matchPattern string 默认正则 筛选每日任务微博的正则表达式,微博文案格式变化时可调整
cacheMinutes number 20 内存缓存分钟数;0 表示不缓存
requestTimeout number 10000 微博请求超时时间,单位毫秒
userAgent string Edge/Chrome UA 请求微博使用的 User-Agent,通常保持默认即可

💬 消息发送形式配置

配置项 类型 默认值 说明
enableQuote boolean true bot 发送普通消息时是否引用触发指令;forward 合并转发模式不会附带引用
enableWaitingHint boolean true 是否显示“获取并生成中.... 请耐心等待”等待提示;所有发送形式完成后会尝试撤回
msgFormArr { mode, enabled }[] 见说明 每日任务发送形式表格,可调整顺序,可启用 / 禁用;默认启用 forwardpuppeteer-imageqq-markdown
strictOrderMode boolean true 是否严格按照表格顺序串行发送;关闭后会并行发送,顺序不保证

🤖 QQ 官方 Bot Markdown 适配

配置项 类型 默认值 说明
qqMarkdownPuppeteerImageStorageMode "assets" | "server" "server" append-puppeteer-image 的图片 URL 生成模式;仅在按钮行为勾选 append-puppeteer-image 且消息发送形式启用 puppeteer-image 时生效;assets 模式只能新增、不能删除、命名不可控,server 模式使用 ctx.baseDir/cache/sky-renwu-weibo,支持时间命名,并按数量上限仅保留最新图片
qqMarkdownPuppeteerImageSelfUrl string "" server 模式公网 URL 覆盖值;仅在 append-puppeteer-image 且存储模式为 server 时生效;留空则回退 ctx.server.config.selfUrl
qqMarkdownPuppeteerImageMaxFiles number 5 server 模式缓存图片数量上限;仅在 append-puppeteer-image 且存储模式为 server 时生效;仅保留最新 N 张,填写 <= 0 表示不设置上限
qqMarkdownMode "structured" | "blockquote" "structured" QQ Markdown 文案整理模式;structured 会尝试按正则整理标题、任务条目和来源,blockquote 会把全文逐行放进引用块
qqMarkdownButtonMode string[] ["append-qq-markdown", "append-puppeteer-image"] QQ Markdown 按钮发送行为,可多选;standalone 单独发送固定的 ## 光遇任务操作按钮 消息并附带按钮,append-qq-markdown 在启用 qq-markdown 发送形式时把按钮挂到正文 Markdown 后面,append-puppeteer-image 在启用 puppeteer-image 发送形式时按上方模式把 Puppeteer 卡片图转成公网 URL 后发送 Markdown 图片并附带按钮
qqMarkdownKeyboardJson string 默认按钮 JSON QQ Markdown 按钮 JSON 配置;默认两行三个按钮:第一行 再次获取 执行 ${commandName}获取帮助 执行 ${commandName} --help,第二行 玩玩别的 执行 help

append-qq-markdown 必须同时启用 qq-markdownappend-puppeteer-image 必须同时启用 puppeteer-image,并根据配置模式依赖 Koishi assetsserver 服务提供公网 http(s) 图片地址。如果条件不满足,会话里默认静默跳过;只有开启 verboseSessionLog 时才会额外发送会话提醒。控制台在 QQ 平台默认仍会输出警告,非 QQ 平台则需要开启 verboseConsoleLog 才会输出,不会自动补发。standalone 不使用 assets / server 图片 URL 生成功能。

server 模式会把临时图片写到 ctx.baseDir/cache/sky-renwu-weibo,文件名格式为 yyyyMMdd-HHmmss.<ext>,并按配置的数量上限只保留最新图片;qqMarkdownPuppeteerImageMaxFiles <= 0 表示不设置上限。超过上限时,较早生成的旧图片会被清理,旧 QQ Markdown 消息里的图片后续可能失效,这是预期行为。

🖼️ Puppeteer 卡片图配置

配置项 类型 默认值 说明
imageType "png" | "jpeg" | "webp" "png" Puppeteer 卡片图输出格式;PNG 不支持质量参数;QQ 平台建议改为 jpegwebp,避免长图文件过大
screenshotQuality number 88 Puppeteer 卡片图截图质量,仅 JPEG / WEBP 生效;QQ 平台建议适当调低,图片过大可能不被接受
imageWidth number 980 Puppeteer 卡片图宽度,单位 px
useCustomFont boolean true 是否使用自定义字体路径;关闭后使用系统默认字体,并跳过默认字体下载
autoDownloadFont boolean true 是否自动下载并校验默认字体
imageFontPath string process.cwd()/data/fonts/LXGWWenKaiMono-Regular.ttf Puppeteer 卡片图字体路径;运行时自动映射到 ctx.baseDir/data/fonts/LXGWWenKaiMono-Regular.ttf

Puppeteer 卡片图默认使用 LXGWWenKaiMono-Regular.ttf。插件加载时会检查 ctx.baseDir/data/fonts/LXGWWenKaiMono-Regular.ttf。字体存在且 hash 校验通过时会跳过下载;缺失或校验失败时会尝试从 Gitee / GitHub 下载。配置项 useCustomFont=falseimageFontPath 为空时会使用系统默认字体。

🐛 调试配置

配置项 类型 默认值 说明
verboseSessionLog boolean false 是否在会话中输出详细调试信息;关闭时 QQ Markdown 按钮跳过提醒默认不会发送到会话,开启后才会同步发送到会话
verboseConsoleLog boolean false 是否在控制台输出详细调试信息;关闭时非 QQ 平台的 QQ Markdown 按钮跳过提醒不会输出到控制台,开启后会输出缓存、微博访问策略、游客态 Cookie 初始化、微博接口状态码、列表数量、匹配样本、渲染、发送、assets/server 图片 URL 生成和字体检查细节

About

📅✅ 获取微博博主 @今天游离翻车了吗 的光遇国服每日任务,支持文字、图片、Puppeteer 卡片图和 QQ Markdown ✨

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors