其他
只读读取 Telegram 财经频道/群组:用 tdl…
当用户需要查看、搜索或导出 Telegram 频道/群组中的财经新闻、加密信号或市场情报,并且只做只读访问时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 57/100 ×0.15
适用场景
只读读取 Telegram 财经频道/群特定
解决思路
- 检查 tdl 是否已安装:运行 `(command -v tdl && tdl version 2>&1 | head -3 || echo "TDL_NOT_INSTALLED") 2>/dev/null`;若显示版本号则跳到认证步骤。
- 若未安装 tdl,按平台安装并询问用户偏好:macOS/Linux 用 `curl -sSL https://docs.iyear.me/tdl/install.sh | sudo bash`;macOS 用 Homebrew 的 `brew install telegram-downloader`;Linux(Termux)用 `pkg install tdl`;Linux(AUR)用 `yay -S tdl`;Linux(Nix)用 `nix-env -iA nixos.tdl`;Go 用 `go install github.com/iyear/tdl@latest`;macOS 默认 Homebrew,Linux 默认 curl 脚本。
- 检查 tdl 认证状态:运行 `(tdl chat ls --limit 1 2>&1 >/dev/null && echo "AUTH_OK" || echo "AUTH_NEEDED") 2>/dev/null`;若 `AUTH_OK` 则跳到识别需求。
- 若需要认证,引导用户交互式登录:方式 A 推荐二维码 `tdl login -T qr`,用户用 Telegram 手机 App 扫描(Settings > Devices > Link Desktop Device)。
- 认证方式 B:手机号+验证码,运行 `tdl login -T code`,由用户输入手机号和 Telegram App 收到的验证码。
- 认证方式 C:从 Telegram Desktop 导入,运行 `tdl login`;要求桌面客户端来自官网 https://desktop.telegram.org/,不能是 App Store 或 Microsoft Store 版本。
- 多账号用命名空间:登录时加 `-n work`,如 `tdl login -n work -T qr`;后续命令加 `-n work`,如 `tdl chat ls -n work`。
- 认证注意事项:登录是一次性操作,成功后 session 持久化到磁盘;登录失败时让用户检查网络并重试;永远不要以程序方式索取或处理 Telegram 密码/2FA 验证码,始终让用户交互输入。
- 识别用户需求并映射命令:列出所有聊天/频道用 `tdl chat ls`,可加 `-o json`、`-f "FILTER"`;仅列出频道用 `tdl chat ls -f "Type contains 'channel'"`;导出最近消息用 `tdl chat export -c CHAT -T last -i N`,可加 `--all`、`--with-content`。
- 按时间范围导出消息:用 `tdl chat export -c CHAT -T time -i START,END`,可加 `--all --with-content`。
- 按消息 ID 范围导出消息:用 `tdl chat export -c CHAT -T id -i FROM,TO`,可加 `--all --with-content`。
- 从话题/线程导出:用 `tdl chat export -c CHAT --topic TOPIC_ID`,可加 `--all --with-content`。
- 按名称搜索频道:用 `tdl chat ls -f "VisibleName contains 'NAME'"`,可加 `-o json`。
- `-c` 聊天标识符支持:`-c @channel_name`、`-c channel_name`、`-c 123456789`、`-c https://t.me/channel_name`、`-c "+1 123456789"`、`-c ""`(空字符串表示 Saved Messages)。
- 列出聊天示例:`tdl chat ls`;JSON 输出用于处理:`tdl chat ls -o json`;仅频道:`tdl chat ls -f "Type contains 'channel'"`;按名称搜索:`tdl chat ls -f "VisibleName contains 'Bloomberg'"`。
- 导出消息时始终使用 `--all --with-content` 以获取文本消息而不只是媒体;示例最近 20 条:`tdl chat export -c @channel_name -T last -i 20 --all --with-content -o /tmp/tdl-export.json`。
- 按时间范围导出示例(Unix 时间戳):`tdl chat export -c @channel_name -T time -i 1710288000,1710374400 --all --with-content -o /tmp/tdl-export.json`。
- 按 ID 范围导出示例:`tdl chat export -c @channel_name -T id -i 100,200 --all --with-content -o /tmp/tdl-export.json`。
- 执行关键规则:先运行 `tdl chat ls --limit 1` 检查认证;导出阅读消息总是加 `--all --with-content`;用 `-o FILE` 保存导出后再读 JSON,比解析 stdout 更可靠;除非用户要求更多,否则从小导出开始(`-T last -i 20`);用 `chat ls` 过滤器帮用户先找到正确频道;绝不执行写操作,不发送消息、不加入频道、不修改任何内容;用户给日期时转换为 Unix 时间戳供 `-T time` 使用。
- 处理导出的 JSON:导出到文件后用 `cat /tmp/tdl-export.json` 或读取该文件,提取消息对象中的 `id`、`date`、`message`(文本内容)、`from_id`、`views` 和媒体元数据。
- 展示结果:总结关键消息并突出最相关的新闻或市场更新;包含每条消息的发布时间;若涉及多个频道,按主题分组(宏观、财报、加密等);标记可操作信息(突发新闻、目标价、财报意外);说明每条消息来自哪个频道/群组;对频道列表显示频道名称、成员数和类型。
- 诊断错误:出现 `not authorized` 或 session 错误时运行 `tdl login -T qr` 重新认证;出现 `FLOOD_WAIT_X` 时等待 X 秒后重试;出现 `CHANNEL_PRIVATE` 时让用户先在 Telegram App 中加入该频道;出现 `tdl: command not found` 时按安装步骤安装。
- 需要精确命令语法或详细 flag 文档时,阅读参考文件 `references/commands.md`。
适用边界 · 注意事项
- 需要发送消息、加入/离开频道或其他写入操作时不适用,因为该技能只读。
- 未安装 tdl、无法完成 Telegram 交互式登录、没有 Telegram 账号或有效会话时不适用。
- 目标频道为私有且用户尚未在 Telegram 客户端加入时不适用,需用户先手动加入。