🌌 NASA 每日新闻

🌌 NASA 每日一图/视频 [✅PASS]

当前功能版本: v1.0.2
获取 NASA Astronomy Picture of the Day(APOD)内容,并返回图片或视频、标题、日期和天文说明。

插件可以调用 AstrBot 已配置的大语言模型,将 NASA 的英文标题和说明翻译为简体中文。翻译暂时不可用时,仍会返回 NASA 英文原文。


🚀 快速开始

在聊天中艾特 bot 并发送:

@bot apod

机器人会发送当前最新一期 APOD。

内容可能是:

  • 天文图片;
  • 天文视频;
  • APOD 标题;
  • APOD 日期;
  • NASA 官方说明;
  • 翻译后的简体中文标题和说明。

@bot 表示艾特需要使用的机器人。


⌨️ 命令

命令权限说明
@bot apod所有人获取当前最新一期 APOD
@bot apod 0所有人同样获取最新一期
@bot apod 1所有人获取最新一期的前一天
@bot apod 3所有人获取最新一期的前三天
@bot apod updateAstrBot 管理员立即检查 NASA 是否发布或修改了内容,并刷新缓存

历史查询允许填写的最大天数由管理员设置的缓存天数决定。

例如缓存天数为 7 时,可以使用:

@bot apod 0
@bot apod 1
……
@bot apod 7

负数、非数字或超过可查询范围的参数会返回相应提示。


🖼️ 图片内容

当当天内容是图片时,机器人会把图片和文字组合在同一条消息中:

[图片]
标题:……
日期:……

天文说明……

图片、标题、日期和说明是否显示,由管理员配置决定。


🎞️ 视频内容

当当天内容是视频时,机器人会分两条发送:

  1. 标题、日期和天文说明;
  2. 视频消息。

视频会先由插件下载并缓存,再通过专用媒体地址交给 QQ 协议端发送。

如果视频无法下载、文件过大或媒体服务暂时不可用,机器人会回退为:

  • 视频缩略图;
  • 原始视频地址;
  • 已获取到的标题、日期和说明。

因此,即使视频无法直接发送,也不会丢失当天的文字内容。


📅 历史内容

插件支持按“距最新一期多少天”查询历史内容。

例如:

@bot apod 2

表示获取当前最新一期往前两天的 APOD。

这里的数字是相对天数,不是具体日期。

当本地还没有对应历史缓存时,插件会:

  1. 向 NASA 请求对应日期;
  2. 翻译标题和说明;
  3. 下载并缓存图片或视频;
  4. 返回查询结果。

以后其他用户再次查询同一天时,会直接使用本地缓存,不再重复请求 NASA 或调用翻译模型。


💾 自动缓存

插件加载后会立即检查一次 NASA APOD,之后默认每小时检查一次。

发现新内容或同一天内容被 NASA 修改后,插件会自动:

  • 更新标题、说明和媒体信息;
  • 翻译新的文本;
  • 下载新的图片或视频;
  • 更新本地缓存;
  • 清理超过保留期限的历史内容。

普通用户发送 @bot apod 时,主要读取已经准备好的缓存。因此,即使许多人同时查询,也不会分别向 NASA 发起大量重复请求。

管理员还可以随时发送:

@bot apod update

立即检查并修复最新缓存。

刷新失败时,插件会保留已有的可用内容,不会先删除旧缓存。


🗓️ 缓存天数

管理员可以设置历史内容保留天数。

设置为 0

cache_days = 0

只保留最新一期,不提供历史查询。获取到新一期后会清理旧内容。

设置为 7

cache_days = 7

保留:

  • 最新一期;
  • 最新一期之前的 7 天。

也就是最多保留 8 期内容,并允许使用:

@bot apod 0

至:

@bot apod 7

🌏 中文翻译

标题和说明是否翻译,由管理员配置决定。

翻译开启且模型可用时,机器人优先发送简体中文内容。

如果出现以下情况:

  • 未配置翻译模型;
  • 模型请求失败;
  • 模型服务暂时不可用;

插件不会中止 APOD 查询,而会自动回退到 NASA 英文原文,并提示翻译暂时不可用。


🌐 数据与媒体来源

APOD 的标题、日期、说明、图片地址和视频地址均来自 NASA Astronomy Picture of the Day。

视频可能托管在 YouTube、Vimeo 或其他第三方平台,因此并非每一期视频都一定能够成功下载并直接发送。

查询结果以 NASA 实际发布内容为准。


⚠️ 使用注意

  • NASA 通常每天发布一期 APOD,但实际发布时间可能不固定。
  • 网络、NASA API 限流或临时维护可能导致刷新延迟。
  • 部分视频可能因为来源限制、下载失败或文件过大而只能返回原始地址。
  • 历史查询范围取决于管理员设置的缓存天数。
  • 本功能不会生成或修改 NASA 的天文内容。
  • 缓存内容可能在管理员手动刷新或定时检查后更新。

❓ 常见问题

为什么今天和刚才获取到的内容一样?

APOD 通常每天只更新一次,而且插件会复用本地缓存。短时间内重复查询同一期时,结果保持相同是正常的。

为什么没有显示中文?

可能是管理员关闭了翻译,或者翻译模型暂时不可用。翻译失败时,插件会返回 NASA 英文原文。

为什么图片和文字只有一条消息?

图片型 APOD 固定使用图文消息链,将图片、标题、日期和说明组合在同一条消息里。

为什么视频分成两条消息?

视频型 APOD 会先发送文字,再单独发送视频,以提高 QQ 协议端的兼容性。

为什么视频没有直接发出来?

可能是视频来源无法下载、文件超过大小限制,或者媒体服务暂时不可用。此时机器人会尽量返回缩略图和原始视频地址。

为什么查不到更早的内容?

查询天数超过了管理员设置的 cache_days。例如缓存天数为 7 时,最多查询七天前。

@bot apod update 为什么不能使用?

这是管理员命令,普通用户只能查询最新或历史内容。

为什么命令没有响应?

请确认:

  • 已正确艾特 bot;
  • 使用的是 @bot apod
  • bot 当前在线;
  • NASA API 和服务器网络正常。

📎 项目来源

本功能改编自开源插件 astrbot_plugin_Astronomy_Picture_of_the_Day

评论交流

文档目录