Skip to content

Latest commit

 

History

History
452 lines (313 loc) · 37.2 KB

CHANGELOG.zh.md

File metadata and controls

452 lines (313 loc) · 37.2 KB

更新日志

未发布

增强

  • 生成 Telegraph 文章时,不再代理来自 *.wp.com 的图像: *.wp.com 位于 wsrv.nl (环境变量 IMAGES_WESERV_NL) 的阻断列表中。因此,在生成 Telegraph 文章时,这些图像不再被代理。来自 *.wp.com 的所有图片都可以用任何 refer 头访问,因此它们现在保持原样。
  • 次要的重构: 重构了一些内部函数以提高性能、可读性和可维护性。

Bug 修复

  • 无法识别规范的 DATABASE_URL: 自 v2.9.0 起, 在连接到相应的数据库之前,DATABASE_URL 被规范化。然而,在检查 scheme (数据库类型) 的合法性时,无法识别指向本地路径的规范 URL。现在,此类 URL 的规范 (scheme:/path/to/file.db) 和传统 (scheme:///path/to/file.db) 形式都被正确识别。
  • 订阅时不会根据服务端缓存延迟监控:自 v2.7.0 起,当检测到激进的服务器端缓存时,监控任务将被延迟(例如 Cloudflare 和 RSSHub,它们使得在缓存过期之前检查更新变得徒劳无功)。但是,当新订阅 feed 时,第一个监视任务不会被推迟。该问题已修复,第一个监控任务会等待服务端缓存过期。
  • 次要的 bug 修复

v2.9.0: 与 Telegraph 相关的 revert、跳过证书校验和更多

重大变更

由于 Telegraph 禁用了媒体上传,生成 Telegraph 文章时不再上传媒体 (图片与视频) 。(在 v2.6.0 中首次引入)

新增功能

  • 关闭 TLS 证书验证: 环境变量 VERIFY_TLS 已被添加以禁用 (设置为 0 时) 或启用 (设置为 1 时,默认) TLS 证书验证。当订阅 TLS 被错误配置的 feed 时,这很有用。注意:不建议禁用 TLS 证书验证,只应用作最后手段。

增强

  • 净化文章标题和作者: 文章 (RSS item 或 Atom entry) 的标题和作者现在被净化以防止意外的格式问题。特别是,预期外的空格和换行符被移除,任何 HTML 元素都被剥离。这有助于在 Telegram 消息以及 Telegraph 文章中正确显示它们。
  • 改善在 Railway.app 上的稳健性: 一些特定于 Railway 的环境变量被识别以提高在 Railway.app 上的稳健性。特别是,当 DATABASE_URL 不可用或无效时,将使用 DATABASE_PRIVATE_URLDATABASE_PUBLIC_URL。这应该解决在 Railway.app 上的大多数数据库连接问题。
  • 次要的重构: 重构了一些内部函数以提高可读性和可维护性。

Bug 修复

  • /version 不工作: 当从 PyPI 安装时 (例如 pip install rsstt), /version 命令可能会导致错误。这是在 v2.7.0 中引入的一个回归 (regression)。
  • Bot 管理员可以设置比限制更短的监控间隔: 由于 v2.8.0 中引入的一个重大变更,bot 管理员可以设置比最小监控间隔更短的间隔的特权变得毫无意义。虽然 v2.8.0 只在监控 feed 的更新时应用了这个限制,但这个版本也将它应用于 bot 管理员的更改订阅监控间隔的尝试。注意: bot 管理员总是可以通过调整 /set_option 中的 minimal_interval 来降低最小监控间隔 (另请参阅 高级设置),但这样做也会允许任何能够使用 bot 的人设置更短的间隔。
  • 次要的 bug 修复

v2.8.0: 保留文章顺序、重写的监视器和更多

重大变更

  • 最小监控间隔被强制实施: 现在,最小监控间隔 (/set_option 中的 minimal_interval) 将应用于所有订阅,而不管它们被设置于数据库中的间隔如何。先前,设置最小监控间隔只会影响将来的更改订阅监控间隔的尝试,且不会应用于 bot 管理员。因此,先前存在的订阅和 bot 管理员的订阅逃脱了。新行为更一致和可预测。如果您是自托管实例的 bot 管理员,并且依赖于旧行为,即 bot 管理员能够设置比最小监控间隔更短的间隔,您可能需要调整 /set_option 中的 minimal_interval (另请参阅 高级设置)。

亮点

  • 保留文章顺序: 在发送文章时保留文章在 feed 中的顺序。先前,所有新文章都被同时发送,失去了它们在 feed 中的顺序。注意:来自不同 feed 的文章仍然同时发送,因此预计会看到它们交错。
  • 重写的监视器: Feed 监视器已被重写,以提高灵活性和稳健性。它现在更节省内存,并且可以平滑 CPU 使用率的波动。

增强

  • 打印 bot 的 Telegram 用户信息: 在 bot 启动时打印 bot 的 Telegram 用户信息。这是为了帮助 bot 管理员在部署 bot 时找到 bot 的用户名和用户 ID。
  • 次要的重构: 重构了一些内部函数以提高性能和可维护性。

Bug 修复

  • 断开连接后以 0 退出: 过去,如果 bot 由于网络错误或 Telegram DC 降级而被登出,它将以退出码 0 退出。当 bot 在容器中或作为服务运行时,这会导致混乱。现在,当断开连接时,机器人将以退出码 100 退出。
  • 无法处理完全空白的文章: 修复由完全空白的文章引起的 AttributeError。它们现在会被忽略。
  • 次要的 bug 修复

v2.7.0: 来自文章的 #hashtag、Python 3.12 支持和更多

重大变更

  • 迁移到 aerich 0.7.2aerich (RSStT 的一个依赖项) 0.7.x 中引入的一个重大变更使 RSStT 长期以来无法升级它。已经作出了很多努力,所以迁移预期为无缝的,且不应该造成任何破坏。但是,建议在升级 RSStT 之前进行数据库备份。如果您因迁移而遇到任何问题,请提交错误报告。

亮点

  • 来自文章 (源条目) 的 #hashtag: 如果在 /set/set_default 中启用,来自文章 (源条目) 的 hashtag,在与源的自定义 hashtag 合并后,将被添加到消息中。术语“来自文章的 hashtag”指的是 RSS <item> 或 Atom <entry> 中的 <category> 元素。此功能默认禁用。感谢 @maooyer#449 中作出的初次贡献。
  • 支持 Python 3.12: 进行了一些小的修复以支持 Python 3.12。官方 Docker 镜像现在也基于 Python 3.12。
  • 使贡献更容易的辅助脚本: 在进行更新数据库模型的贡献时,创建数据库迁移文件并不是一件容易的事。scripts/aerich_helper.py 是一个可以简化这个流程的辅助脚本。将 --help 传递给脚本以查看详细的使用指南。

增强

  • 根据 RSSHub TTL 推迟监控: 根据 RSSHub 生成的 feed 的 TTL (生存时间) 推迟监控。RSSHub 会缓存 feed 直到 TTL 过期,因此对 TTL 较长的 RSSHub feed 进行激进的监控是不必要的。这旨在减少 RSStT 实例以及 RSSHub 实例的负载。如果 TTL 不可用或小于 5 分钟,则不会应用延迟。考虑到 RSS TTL 被广泛误用的情况,并非由 RSSHub 生成的 feed 不受影响。
  • 根据 Cloudflare 缓存推迟监控: 同上,但适用于由 Cloudflare 代理的 feed。如果 Cloudflare 代理一个 feed 但不缓存它,将不会对这样的 feed 应用延迟。
  • 更好地处理自定义 #hashtag: 当设置自定义 hashtag 时,会将破坏 hashtag 的无效字符和标点符号替换为 _ (下划线)。
  • 改进了监控日志: 监控日志已经被改进,使其更加信息丰富和易于阅读。
  • 次要的重构: 重构了一些内部函数以提高可读性和可维护性。

v2.6.0: 上传媒体到 Telegraph、管理增强

亮点

  • 上传媒体到 Telegraph: 在生成 Telegraph 文章时,图片和视频都将被上传到 Telegraph。这是为了解决防盗链问题和提高文章的加载性能。此功能依赖媒体反代服务器 (Rongronggg9/rsstt-img-relay) 的最新版本。由于太大而无法上传的图片和视频仍将由 wsrv.nl (环境变量 IMAGES_WESERV_NL) 或媒体反代服务器 (环境变量 IMG_RELAY_SERVER) 进行代理。感谢 #431 的启发。

新增功能

  • 多个管理员: 环境变量 MANAGER 现在既接受单个用户 ID,也接受由 ;, ,, (空格), (换行)(制表符) 分隔的列表。列表中的每个用户都可以平等地管理机器人。
  • 可自定义的错误日志会话: 先前,一些错误日志总是发送到 bot 管理员。为了使其更加灵活,添加了一个新的环境变量 ERROR_LOGGING_CHAT,其接受单个用户/频道/群组 ID。如果被设置,这些错误日志将被发送到指定的会话。否则,将选择 MANAGER 中的第一个用户 ID 作为默认值。

增强

  • 除去 <li> 中的表层空格: 除去 <li> (列表项) 中的表层空格 (包括换行符) 以提高可读性。只有前导和尾随空格 (包括换行符) 被除去。
  • 只在群组中设置“强制回复”: 只在群组中设置 ReplyKeyboardForceReplyTrue。先前,它也在私聊中被设置。另请参阅下面的“Bug 修复”。
  • 次要的重构: 重构了一些内部函数以提高可读性和可维护性。

Bug 修复

  • (/sub) “强制回复”未被清除: /sub/import 都将 ReplyKeyboardForceReply 设置为 True 以强制用户回复 bot。然而,由于 Telegram 的一个 bug,即使用户已经回复过了,它仍然有效,导致回复栏总是重新出现。先前,通过在用户回复后删除包含 ReplyKeyboardForceReply 的提示消息,为 /import 应用了变通解决方案 (另请参阅 #170)。但是 /sub 在那时被遗忘了。现在,这个变通解决方案也被应用到了 /sub 上。
  • “远程” /lang 不可用:修复阻止用户“远程”使用 /lang 命令的错误。

v2.5.0: 响应性优化、小的增强和修复

新增功能

  • 为子进程/线程设置 nice 值: (仅限 Unix) 为子进程和/或线程提升 nice 值以改进主进程的响应性。这可通过环境变量 EXECUTOR_NICENESS_INCREMENT 调节。

增强

  • 改进了对 HTML 列表的支持: 现在,<menu><dir> 被视为 <ul> (无序列表)。此外,没有有效列表父标签的孤立 <li> (列表项) 不再被忽略,而是被视为单个无序列表中的一个项目。

Bug 修复

  • 即使 “General” 话题已关闭,也留在话题群组中: 由于话题群组尚未被完全支持,bot 只能在 “General” 话题中发送消息。先前,如果 “General” 话题被关闭,bot 只会向 bot 管理员发送错误消息。现在,如果 “General” 话题被关闭,bot 将离开话题群组,而不再打扰 bot 管理员。这是在话题群组完全受支持之前的一个临时限制。
  • v2.4.1 未被发布到 PyPI: 由于一个先前的失误,v2.4.1 无法被发布到 PyPI。v2.5.0 修正了这一失误,并被发布到 PyPI。

v2.4.1: 次要的增强和 bug 修复,以及新年快乐!

增强

  • 经反代的 wsrv.nl: 尝试通过媒体反代服务器 (环境变量 IMG_RELAY_SERVER) 使用 wsrv.nl (环境变量 IMAGES_WESERV_NL)。这是对那些来自被 wsrv.nl 封禁的域名或将 wsrv.nl 封禁的 CDN 的图片的变通解决方案。考虑到 RSStT 大量使用 wsrv.nl 将图片转换为 Telegram DC 所接受的格式,这有望减少在消息中见到 "Invalid media" 的频率。另请参阅 #369
  • 将 enclosure 附加到 Telegraph 文章: 如果有的话,将 enclosure (附件) 附加到 Telegraph 文章。先前,enclosure 只能在 Telegram 消息中发送,而无法在 Telegraph 文章中发送。
  • 依赖项更新: 将大部分过时的依赖项更新到了最新版本。引入可一个可选依赖 isal 用于稍微提升条目散列的性能。
  • 本地化更新: 本地化已被更新。
  • 杂项重构: 重构了一些代码以提高可读性和可维护性。

Bug 修复

  • “远程” /test 不可用:修复阻止 bot 管理员“远程”使用 /test 命令的错误。
  • 调节尺寸后的图像仍然太大: 修复了一个错误,这个错误导致经过 wsrv.nl 调节尺寸后的图像有时候仍然太大(超过 Telegram DC 的 5MiB 限制)以至于无法发送。
  • Sinaimg 图片未被正确解析: 修复了针对 Sinaimg (微博图床) 图片的正则表达式。这有望减少在消息中见到 "Invalid media" 的频率。
  • WEBP 被完全获取,而没有考虑获取限制: 修复了一个导致不带有 Content-Length 标头的 WEBP 被完全获取,而没有考虑获取限制的错误。
  • 监视器和订阅的条目散列不统一: 统一监视器和订阅的条目散列。先前,监视器和订阅的条目散列不统一,这可能导致 bot 在一个 RSS 源被首次订阅后发送已经存在的条目 (文章)。

v2.4.0: 显著提高性能、原生块状引用和语法高亮

重大变更

  • 取消对 Python 3.7 和 3.8 的支持:最低的 Python 版本要求现在是 3.9。

亮点

性能增强

  • SSL 上下文重用:像 aiohttp 那样重用 SSL 上下文。这将提高性能(将平均负载降低约 40%)并减少内存使用量。
  • 懒惰 CookieJar:懒惰创建 CookieJar,直到真正有 Cookie。这将提高性能(将平均负载降低约 15%)并减少内存使用量。

新增功能

  • 原生块状引用<blockquote> 现在被渲染为原生的 Telegram 块状引用,取代用横线包裹的文本块。
  • 语法高亮显示:只要在 class 属性中指定了语言,<pre> 现在会呈现为带有语法高亮的 Telegram 原生代码块。

增强

  • 可感知自定义标题的 OPML:在导入和导出 OPML 时,bot 会尝试判断订阅源是否具有自定义标题,如果是,则会保留它。
  • /lang/test 作为“远程”命令/lang/test 现在被认定为“远程”命令,这意味着您可以在私聊中使用它们,但使操作实际应用于您在命令中指定的频道/群组。注意:/test 仅适用于 bot 管理员。
  • /user_info UX 增强/user_info 现在有了更好的 UX。注意:/user_info 仅对 bot 管理员有效。
  • 次要的增强: Docker 映像现在基于 Debian bookworm。

Bug 修复

  • 意外迁移订阅源:修复一个导致 bot 意外将订阅源迁移到新 URL 的错误。更具体地说,bot 现在只会在重定向被视为永久性(HTTP 状态码为 301 或 308)的情况下迁移订阅源。
  • 以错误的色彩空间发送 WEBP:修复导致 WEBP 图像以错误色彩空间发送的错误。
  • 不正确的 OPML 格式:修正不正确的 OPML 格式,这导致某些 RSS 阅读器无法导入 bot 导出的 OPML 文件。
  • 错误的看门狗饲喂时序:修复导致看门狗在不正确的时间被饲喂的错误。
  • 未捕获的错误:修复一些导致消息发送失败的未捕获错误。

v2.3.0: 改进的性能、订阅数量限制等

这是一个期待已久的版本。很高兴在变更日志中再次相遇!这是支持 Python 3.7 的最后一个版本,v2.3.x 系列不会有任何补丁版本。任何修复都将只应用于下一个版本,且下一个版本将使 Python 的最低版本要求提高到 3.9。

性能增强

  • 对 Python 3.11 的支持:Python 3.11 于 2022-10-24 发布,速度比 Python 3.10 快 10-60% (平均 25%)。RSStT 现在支持 Python 3.11,官方 Docker 镜像也基于 Python 3.11。
  • CPU:将平均负载降低约 30%(取决于使用场景)。这要归功于将依赖 fuzzwuzz (纯 Python) 迁移到 rapidfuzz (C 扩展) 以及大量的性能调校。
  • 内存:(仅适用于 Docker 镜像)采用 jemalloc 降低内存消耗,提高内存分配性能。
  • 多核 CPU:如果环境变量 MULTIPROCESSING 设置为 1,将启动多个进程。进程的数量将等于 CPU 核心数,但最大值为 3。一个是主进程,其它进程(如果有的话)用于解析 RSS 提要等。请注意,只有当有 1 个以上的 CPU 核心时,该选项才有效,否则将只启动 1 个进程(主进程)。它可能有助于在多核 CPU 上提升性能,但会消耗更多内存。通常你不需要启用它。但是,如果有大量订阅,或者您的 VPS 有多个核心,但每个核心的性能都很差,您可能需要启用此功能。
  • 带宽使用:变通解决上游(uvloop)的 bug,这导致 bot 使用过多的带宽。与之前的版本相比,当启用 uvloop 时,可以减少高达 75% 的带宽使用。
  • 启动时间:通过增加启动时的并发性,将一些不重要的启动任务放到后台,来减少启动时间。
  • 小的功能增强:一些内部功能已进行了优化,以提高性能。

新特性

亮点

  • 订阅数量限制:现在可以配置每个用户的最大订阅数量(默认值:无限制)。通过使用 /set_option 命令,可以设置 user_sub_limit (普通用户的订阅数量限制) 和 channel_or_group_sub_limit (频道或群组的订阅数量限制)。要为特定用户/频道/群组检查或设置订阅数量限制,请使用 /user_info 命令。
  • 监视器看门狗:已经实现了一个看门狗来检查订阅源监视器是否正常运行。如果没有,看门狗将使 bot 退出。Docker、Railway 或 Heroku 将自动重新启动它。

其他新特性

  • 如果被封禁,则离开聊天:如果 bot 没有在频道/群组中发送消息的权限,它将离开聊天。
  • <q> 标签转换为引号: <q> 标签现在会被转换为引号(<q>I am a quote,</q> said Q. -> “I am a quote,” said Q.)。
  • 新的本地化:添加了多个翻译。

增强和 bug 修复

  • 接受 4 个字符的用户名:现在可以在 “远程” 命令中使用 4 个字符的用户名来指定频道/群组。
  • 忽略命令中的 inline query header:先前,如果 bot 没有被正确设置为 inline bot,命令会带着 inline query header (@bot_username) 发送,导致 bot 没有响应。现在, bot 将忽略 inline query header 并正确响应命令。
  • 如果正等待速率控制,则跳过监控任务:如果 bot 由于速率限制而无法向订阅源的所有订阅者发送消息,则会跳过该订阅源的监控任务一次。
  • 优雅地退出:如果 bot 接受到 SIGINT 或 SIGTERM,它将通过首先关闭数据库连接来优雅地退出。先前,未关闭的数据库连接会阻止 bot 退出。
  • 编码检测:修复导致某些订阅源的编码检测不正确的错误。
  • 删除 sr-only 元素:从 RSS 源中删除 sr_only 元素。它们仅用于屏幕阅读器,不应被渲染。
  • 修复错误的命令正则表达式:修复一些错误的命令正则表达式,它们使 bot 无法正确响应命令。

次要的 bug 修复和更改

更多未提及的小 bug 已在该版本被修复。变更日志不包括所有变更。有关更多详细信息,请参阅比较视图

v2.2.1: 发布至 PyPI、HTML 表格转换器和更多

新特性

亮点

  • 发布至 PyPI: RSStT 现在可从 PyPI 中获取。可通过 pip install rsstt 来安装。详细信息请参阅部署指南.
  • HTML 表格转换器: 实现了一个 HTML 表格转换器,可以将 HTML 表格转换为图片。需要将环境变量 TABLE_TO_IMAGE 设置为 1,并且需要安装 CJK 字体。请注意,转换器不是完美的,不能处理富文本格式,可能无法处理所有的 HTML 表格,并可能会导致更高的性能成本和更长的处理时间。

其他新特性

  • 新的本地化: 增加了印度尼西亚语 (id, Bahasa Indonesia) 的翻译。
  • 增加 .env.sample: 增加了范例 .env 文件。

增强

  • 自然排序: 从旧到新推送文章。
  • 定时 GC: 每 10 分钟执行一次 GC (垃圾回收) 以清理内存。
  • 本地化更新: 更新了土耳其语 (tr, Türkçe) 的翻译。
  • 安全: 在 shell 之外执行 git
  • 次要的增强

Bug 修复

  • 监视任务启动失败: 增加了 misfire_grace_time 至 10s 以避免监视任务由于高负载未能启动。
  • 依赖更新: 修复了一个阻止用户在使用 PostgreSQL 的实例上重置所有订阅到用户的默认设置的上游 bug。
  • 次要的 bug 修复

v2.2.0: 频道远程管理、更多格式化选项和更多

新特性

亮点

  • 频道/群组远程管理: 现在你可以在和 bot 的私聊里管理你的频道/群组的订阅。支持使用大部分命令。只需以类似于 /sub @username https://exmaple.com/sub -10010000000000 https://exmaple.com 的格式发送命令。(@username 是频道/群组的用户名, @ 是不可缺少的; -10010000000000 是频道/群组的 ID, 必须以 -100 开头)
  • 更多格式化选项:
    • 媒体: 你可以选择让 Telegram 消息不带任何媒体 (只有文字)。也可以选择让 Telegram 消息只带有媒体和元数据 (没有内容);只有当有媒体附加到文章时才可如此,否则,它们仍会带有内容。
    • 链接预览: 现在你可以强制关闭 Telegram 消息的链接预览。
    • 来源: 更多来源格式化选项。阅读 格式设置指南 以获取详细信息。
  • 部署到 Heroku: Bot 现在可以部署到 Heroku。阅读 部署指南 以获取详细信息。
  • 用户权限管理: Bot 管理员现在可以使用 /user_info 命令来管理 bot 用户 (用户/频道/群组) 的权限。这样管理员就可以设置谁可以使用 bot,即使禁用了多用户模式。

其他新特性

  • 单列表格支持: 先前,所有 HTML 表格都被丢弃。现在,只含有单列的表格将被渲染为多行文本。请注意,多列表格仍会被丢弃。
  • 适用于 lizhi.fm 的音频回落: 如果高音质音频超出了文件大小限制,自动回落到更低音质的音频。仅适用于 lizhi.fm

增强

  • Telegraph 文章美化: Telegraph 文章的格式美化。除此之外,所有图片和视频都使用媒体中继服务器来规避防盗链。
  • 非 HTTP 超链接: Telegram 不支持非 HTTP 超链接。Bot 会自动将它们转换为裸 URL。
  • Enclosure 清理: 如果一个附件包含非 HTTP URL 且文章中的链接已包含它,它将被移除。
  • 懒惰的媒体验证器: 媒体验证器现在是懒惰的。它只有在一篇文章可能作为 Telegram 消息发送时才会运行。这将减少 CPU 使用量和网络流量。
  • 增强的图片尺寸提取: 图片尺寸提取现在更快速和灵活。如果提取失败,bot 会尝试使用 images.weserv.nl 来提取。
  • 本地化更新: 土耳其语 (Türkçe) 本地化文件已更新。 (英语 / English 、简体中文 、繁体中文 / 正體中文 和 粤语 / 廣東話 永远是最新的。)
  • 改进的 Docker 构建缓存: 如果依赖未改变,无需再重新拉取完整的 Docker 镜像。只需使用缓存的依赖并拉取最新的源码。
  • 从 Railway.app 的环境变量中提取 git 信息: Railway.app 上的部署现在可以识别 git 信息。
  • 次要的增强

Bug 修复

  • Python 3.7 兼容性: 上一个版本破坏了与 Python 3.8 的兼容性,现在已经修复了。请注意,仅支持 x86 和 amd64 架构。对于 arm64,最小的 Python 版本要求是 3.8。
  • EntitiesTooLongError: 含有大量文本超链接的文章可引起 Telegram API 抛出这个错误。现在 bot 会尝试通过更激进的文章分割来修复这个错误。
  • <div>: Bot 现在会确保每个 <div> 标签都占据一整行。
  • 不必要的图片回落: 如果至少有一张图片需要作为文件发送,bot 不再会将所有图片都回落成文件。
  • 网络重试: 增加了一个需要进行重试的异常。
  • 网页解码错误: cchardet 并不足够健壮以处理所有源。现在 bot 会尝试从 XML 编码声明中探测网页编码。同时,如果 cchardet 返回了不支持的编码,bot 会尝试使用 UTF-8 来解码网页。任何无法被解码的字符都会被替换为
  • 从 Exif 缩略图中提取图片尺寸: 一些图片在 Exif 数据中含有缩略图。Bot 现在会避免从缩略图中提取尺寸。
  • 次要的 bug 修复

v2.1.0: 自定义格式、新本地化、改进的媒体回落和更多

官方的公开 bot @RSStT_Bot 一直使用 dev 分支。如果你正在使用它,你可能已经注意到新功能了。由于添加了新的命令,请使用 /lang 命令再一次选择你的语言,让 bot 更新你的命令列表。

重大变更

  • 由于加入了新的自定义设置,现在需要启用 inline 模式。请到 @BotFather ,发送 /setinline,选择你的 bot,并回复一个你喜欢的 inline 占位符。例如,@RSStT_Bot 使用的是 Please input a command to continue...

新特性

亮点

  • 更多自定义格式化选项: /set 命令可以发挥它的全部威力了。你可以控制媒体或者任何元数据是否显示,还可以添加自定义 hashtag 和设置自定义订阅标题。但这些都需要启用 inline 模式。请阅读 格式设置指南 了解格式设置的详细信息。
  • 用户默认格式化设置: 使用 /set_default 命令来设置你的默认格式化设置。这将应用到你的所有新订阅,如果你喜欢,你也可以让现有订阅也使用它。如果你想给大多数你的订阅应用相似的设置,这是非常有用的。 img.png
  • 新本地化: 意大利语 (Italiano)、土耳其语 (Türkçe)、加泰罗尼亚语 (Català) 和法语 (français)。想要添加你的语言吗?请在这里阅读翻译指南。
  • RSS 源嗅探器: 如果你尝试订阅一个网页而不是 RSS 源,bot 将尝试从网页中提取 RSS 源。(注意:这仅在网页中包含 RSS 源链接时有效。)
  • Enclosure 支持: Bot 现在可以从文章的 enclosure 中提取附件。来享受听音频节目,或者下载附件吧!
  • <audio> 支持: Bot 现在可以从文章中提取音频。来享受听音频节目吧!
  • 长图作为文件发送: Bot 现在可以将长图作为文件发送,防止 Telegram 将它压缩得不可读。
  • 导入含自定义标题的 OPML 文件: 你现在可以从 OPML 文件导入订阅,而不会丢失你的自定义标题。Bot 将会询问你是否应该使用 OPML 文件中的自定义标题。
  • 导出含自定义标题的 OPML 文件: 你现在可以将你的订阅导出到 OPML 文件,而不会丢失你的自定义标题。

其他新特性

  • 合法化更多图片格式: Bot 现在可以判断非 JPEG 图片的合法性,并在不合法时回落到替代图片 (如果有)。
  • 图片回落 (srcset): Bot 现在可以在图片不合法时回落到替代图片 (<img srcset="...">,如果有)。
  • pixiv 图片回落: Bot 现在可以在 pixiv 图片不合法时回落到其他尺寸 (如果有)。 (#41)
  • 为所有图片设计的图片回落: Bot 现在会使用 images.weserv.nl 来将不合法的图片回落成对于 Telegram API 合法的图片。
  • 视频回落: Bot 现在可以在视频不合法时回落到替代视频 (<video><source>...</video>,如果有) 或它的封面 (<video poster="...">,如果有)。
  • WEBP 和 SVG 支持: Bot 现在会使用 images.weserv.nl 来将 WEBP 和 SVG 转换成 PNG,使它们兼容于 Telegram API。
  • 媒体上传器: Bot 现在使用基本的 MTProto API 调用来上传媒体,而不是使用 telethon 提供的便捷方法。这有助于避免不必要的媒体回落和提升性能。

增强

  • 页码: 当命令需要分页时,bot 会显示当前页码。
  • /unsub_all 确认: 当你退订所有订阅时,bot 会向你确认并发送备份。
  • 取消: 一些命令可通过点击 取消 按钮取消。
  • 自定义监视间隔: 你现在有了更多的监视间隔可选。如果你想的话,也可以设置任何你喜欢的监视间隔 (需要启用 inline 模式,注意 bot 管理员可以禁止普通用户设置太短的监视间隔)
  • 停用原因: 当订阅由于出错太多次而被停用时,bot 会告知原因。
  • 丢弃更多图标: 一些文章有烦人的图标,bot 现在可以检测并丢弃更多。
  • 监视任务顺序随机化: 监视任务的顺序会被随机化。
  • 发生 Telegram 内部错误时重试: 当发生 Telegram 内部错误时,bot 会重试发送消息。
  • 重写的文章解析器: 文章解析器被重写,以使其更灵活,并获得支持自定义格式的能力。
  • 重写的富文本分割器: 富文本分割器被重写,以使其更灵活,并获得支持自定义格式的能力。这同样避免了它过早地分割文本。
  • 命令加速: 一些命令现在更快了。
  • /test 格式化: /test 命令现在会使用用户的默认格式化设置或者订阅的格式化设置 (如果已被订阅)。 (注: 只有 bot 管理员可以使用这个命令。)
  • 次要的增强

Bug 修复

  • RSS 源标题未更新: 当 RSS 源更新了它的标题时,bot 现在会更新在数据库里的标题并在发送消息时使用新标题。
  • 内容太长: 可能包含太长的内容的命令现在会被缩减或分页。如果还是太长,bot 会提示你。
  • 太多 entity: Bot 现在会确保消息中格式化 entity 的数量不多于 100 个 (Telegram API 限制),否则就进行分割。这有助于避免消息丢失格式化。
  • 潜在的死锁: 一个潜在的死锁问题被修复。
  • 不正确的空格和换行策略: Bot 现在会避免在消息中出现非预期的空格和换行,特别针对怪异的 RSS 源。这同样应用到 RSS 源/文章的标题和文章作者之上。
  • 次要的 bug 修复

v2.0.0: 多用户、国际化、改进的用户友好性和更多

官方的公开 bot: @RSStT_Bot

这是一个重大的发布。它引入了一些重大变更,因此迁移至新版本需要手动完成。
更新前请务必阅读迁移指南

重大变更

  • 重写用户及订阅管理。Bot 现在可以被多个用户同时使用,且各个订阅都可以独立设置监视间隔。因此,环境变量 CHATIDDELAY 已经被弃用且不再有效。
    • 默认情况下,bot 将作为多用户机器人运行。如果你仍然希望限制 bot 仅为你服务,请按照迁移指南进行设置。
  • 不再支持 Redis,仅支持 SQLite 和 PostgreSQL。

新特性

亮点

  • 多用户: 任何用户都可以使用 bot,也可以在频道和群组中使用(除非环境变量 MULTIUSER 设置为 0)。
  • 国际化: Bot 现在支持多语言。目前,英语 (English, en), 简体中文 (zh-Hans)粤语 (廣東話, yue) 已被支持。你可以参考 翻译指南,通过将 bot 翻译为你的语言,为项目作出贡献。
  • 用户友好: 你可以交互式地使用大部分命令,而不需要记住他们的语法。
  • HTTP 缓存: Bot 已经实现了 RFC7234 中的必要部分,以“缓存”订阅源。这可以帮助 bot 所在的服务器和订阅源所在的服务器降低负载。

其他新特性

  • 自定义订阅: 订阅可被自定义。目前,只有下面列出的设置可被自定义。其他设置正在开发中。
    • 暂停订阅: 你可以暂停订阅。这样的话,你就可以让 bot 暂停发送订阅更新。
    • 静音订阅: 你可以静音订阅。这样的话,当 bot 发送更新时,会发送静音消息。(你仍然会收到通知,但不会有声音)
    • 监视间隔: 你可以更改订阅的监视间隔。
  • 文档: Bot 现在有了文档。请查阅 docs

增强

  • 更好的订阅源历史管理: 订阅源中的所有文章都会经过散列并储存,这样你就可以订阅几乎任何订阅源而不必担心遗漏文章。
  • 更好的错误处理: Bot 现在能更好地处理错误,它将会尝试恢复并重试。
  • 更好的日志: Bot 现在能更好地记录日志。
  • 更佳的性能: Bot 现在有着更佳的性能。
  • 依赖更新: 依赖已被更新至最新版本。潜在的漏洞已被修复。
  • 代理绕过: 如果设置了环境变量 PROXY_BYPASS_PRIVATE ,bot 会为私有网络绕过代理。在环境变量 PROXY_BYPASS_DOMAINS 中列出的域名也会被绕过。
  • Bug 修复: 修复了一些 bug。

v1.6.1: 修复登录的仓促发布

这是一个仓促的发布。它将依赖 telethon 升级到了最新版本。请立即升级到这个版本以免由于依赖过时而无法登录。

机器人正在 multiuser 分支上被活跃开发,但尚未被合并回来,以免过早引入重大变更。如果你想要尝试多用户版本,这里有一个公开的 demo @RSStT_Bot

新特性

  • .env 文件支持 (仅在手动执行时支持,不支持 docker)
  • 反转义受到 HTML 转义的文章标题
  • 当文章内容不含有文本时,将标题作为文章的内容

增强

  • 一些小的错误修复
  • 引入了一些变通解决方案以免频繁受到泛洪控制
  • 引入了一些依赖以加速 HTTP 请求

v1.6.0: 切换到 MTProto、OPML 支持和更多

重大变更

  • 与 Telegram 交互的库由使用 HTTP Bot API 的同步库 python-telegram-bot 改为使用 MTProto Bot API 的异步库 telethon
    • 这引入了 API key 的需求,程序已经内置了 7 个公开的 API key,通常情况下不应无法登入。如果无法登入,可以自己申请 API key (详见 docker-compose.yml.sample 中的说明)

新特性

  • 由于 Telegram bot 库的替换,bot 可以直接连接到 bot 所属的 DC,不需绕经 HTTP Bot API;也不需轮询获得消息更新,它在接收及发送消息方面都更为迅速,资源占用也更低; 即使 HTTP Bot API 宕机,bot 也可以正常工作 (详见 Advantages of MTProto over Bot APIMTProto vs HTTP Bot API)
  • 支持更多元素的解析
    • <iframe>
    • <video><source><source>...</video>
    • <code>
    • <pre>
  • 支持 OPML 导入导出
  • 支持超长文章通过 Telegraph 发送 (必须先设置 TELEGRAPH_TOKEN 环境变量)
  • 支持使用 redis 作为数据库
    • 注意:这是为了在 railway.app 上部署而设计的变通解决方案,未来很可能丢弃
  • 支持 arm64 (docker 构建)
  • 支持在由于 Telegram 服务器不稳定或 Telegram 服务器与媒体服务器之间的网络连接不稳定而导致 Telegram 无法发出带有媒体的消息时,使用媒体反代服务器重新发送。
  • 支持日志着色
  • docker-compose.yml.sample
  • 用于检查 bot 版本的 /version 命令
  • 如果设置了全局代理 (环境变量 SOCKS_PROXY/HTTP_PROXY),会使用它们

增强

  • 将 feed 监视任务分配到每分钟,而不是每次 DELAY 一次性全部执行
    • 因此,环境变量 DELAY 将只能被设置为 60~3600
    • 注意:环境变量 DELAY 未来将被弃用
  • 使用 guid/id 来辨识一个 post,而不是 link
  • 简化了 /list 的输出
  • 升级为 Python 3.9 (docker 构建)
  • 次要的修复

v1.5.0: 完全重写的文章解码

  • 文章解码完全重写,更加稳定及更加忠实还原原有格式
    • 针对大量短动态类 RSS 源进行了测试
    • 即使是长文 RSS 源,也可以正确处理
  • 支持 GIF
  • 消息多于 10 张媒体时支持分条发送
  • 支持视频与图片任意混合于同一条消息
  • 超限媒体不再直接丢弃,而是作为链接附加到消息末尾
  • 自动判断 RSS 源的标题是否为自动填充,并自动选择是否略去标题
  • 自动显示作者名
  • 自动替换 emoji shortcodes 为 emoji
  • 自动替换满足某些特征的表情图片为 emoji 或其描述文本
  • 因 telegram api 不稳定而无法发出图片时,自动更换图床服务器重发
    • 仅限微博图源,非微博图源自动将所有媒体转为链接附加到消息末尾
  • 改进文本长度计数方式,不再因为链接 url 过长而导致消息被提前分割
  • 更改 user-agent,规避某些网站屏蔽 requests UA 的问题
  • 改进的日志记录

v1.0.0: 初始发布

第一个公开发布