A: 由于 Telegram 的限制,如果短时间内发送了太多消息,bot 会被泛洪控制,而必须等待一段时间。尽管 bot 会重试,但如果仍被泛洪控制,消息就会被丢弃。避免订阅太多的订阅源,特别是在频道和群组中(它们有着严格得多的泛洪限制阈值)。
A: 将 bot 添加到你的频道或群组里,然后发送命令就可以了。在频道里,需要「发送消息」权限。而如果你是群组的匿名管理员,bot 也需要成为管理员(不需要任何权限)才能验证你的身份。
A: 发送 /lang
并再次设置你的语言。Bot 会为你更新命令列表。
A: Bot 被设计为异步的,因此它轻量快速。即使订阅了超过 6000 个订阅源,bot 仍然可以在单核 VPS 上运行,并维持着令人印象深刻的 load average (约 0.2),内存占用此时大约为 350MB。在这种情况下,bot 仍然工作得很好,且稳定性和可用性不会降低。
A: 这并非真正的「内存泄漏」,而是 glibc
的 ptmalloc
的内存碎片化问题。这个问题只能在 Linux 或 macOS 上观察到。请参阅这个 issue 以获取可能的变通解决方案。注意,官方的 Docker 镜像已经包含了针对这个问题的变通解决方案。如果你部署了官方的 Docker 镜像,但仍然发现了一些「内存泄漏」,请提出 issue。
A: 「静音」通知并不意在关闭通知,而是让通知不发出声音。由于 Telegram 的限制,在发送端完全关闭通知是不可能的。
A: 将环境变量 MULTIUSER
设置为 0
。
如果你需要在频道里使用 bot,请阅读下一个问题。
即使没有启用多用户模式,在群组里使用 bot 也是可能的,只要你是群组的非匿名管理员就可以。如果你是群组的匿名管理员,请阅读下一个问题。
A: 首先,将环境变量 MULTIUSER
设置为 0
。这将使访客无法使用 bot。
如果你想要允许某个用户使用 bot,向 bot 发送 /user_info 用户ID
或 /user_info @用户名
,然后将他提升为「用户」。
如果你想要允许某个频道/群组使用 bot,你需要将频道/群组本身和至少一位它的管理员提升为提升为「用户」。只有被提升的管理员才可以在频道/群组里操作 bot。
A: 一旦 bot 发现自身缺乏发送消息的权限(未授予或被屏蔽),它将立即退订该聊天中的所有订阅。与此同时,如果该聊天是频道或群组且 bot 仍是成员,它将退出该频道/群组。 确保在群组/频道中授予 bot 足够的权限(发送消息)。
一个特例是,如果「General」话题被关闭,bot 将退出话题群组。这是在话题群组完全受支持之前的一个临时限制。
Q: 我的 bot 无响应。查看日志后发现 Telethon 在抱怨 "Server sent a very new message with ID...","Server replied with a wrong session ID...",或者 "Could not find a matching Constructor ID for the TLObject..."。
A: Telethon 正保护您免受潜在的攻击。欲知详情,请参阅 Telethon FAQ。如果你确信问题并非由攻击引起,而只是由错误的配置引发,且 bot 并非部署于 PaaS 平台上(如 Heroku, Railway),你可以通过停止 RSStT,删除会话文件(config/bot.session
),然后重启 RSStT 以解决这个问题。