🌌 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 update | AstrBot 管理员 | 立即检查 NASA 是否发布或修改了内容,并刷新缓存 |
历史查询允许填写的最大天数由管理员设置的缓存天数决定。
例如缓存天数为 7 时,可以使用:
@bot apod 0
@bot apod 1
……
@bot apod 7
负数、非数字或超过可查询范围的参数会返回相应提示。
🖼️ 图片内容
当当天内容是图片时,机器人会把图片和文字组合在同一条消息中:
[图片]
标题:……
日期:……
天文说明……
图片、标题、日期和说明是否显示,由管理员配置决定。
🎞️ 视频内容
当当天内容是视频时,机器人会分两条发送:
- 标题、日期和天文说明;
- 视频消息。
视频会先由插件下载并缓存,再通过专用媒体地址交给 QQ 协议端发送。
如果视频无法下载、文件过大或媒体服务暂时不可用,机器人会回退为:
- 视频缩略图;
- 原始视频地址;
- 已获取到的标题、日期和说明。
因此,即使视频无法直接发送,也不会丢失当天的文字内容。
📅 历史内容
插件支持按“距最新一期多少天”查询历史内容。
例如:
@bot apod 2
表示获取当前最新一期往前两天的 APOD。
这里的数字是相对天数,不是具体日期。
当本地还没有对应历史缓存时,插件会:
- 向 NASA 请求对应日期;
- 翻译标题和说明;
- 下载并缓存图片或视频;
- 返回查询结果。
以后其他用户再次查询同一天时,会直接使用本地缓存,不再重复请求 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。