关于 tg-responder
tg-responder 是用于管理 Telegram 沟通的技能,可审核回复草稿、查看队列状态并跟踪未获回复的消息。它支持批准、修改或跳过草稿,以及配置跟进提醒。
主要功能
- 01审核并批准回复草稿
- 02查看收件箱和发件箱统计
- 03跟踪未获回复的消息
- 04配置提醒计划
- 05通过 Telegram 发送已批准草稿
适用场景
- 01批准或修改排队中的 Telegram 回复
- 02查看待处理和失败消息数量
- 03提醒尚未回复的联系人
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ glebis/ claude-skills --skill tg-responder安装后在 Claude Code 中输入/tg-responder确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.gitignoreprompts/classify.mdscripts/backfill.pyclassify.pyfollow_ups.pyhook.pylookup_chat.pyschema.pyseed_templates.pytg_draft.pyworker.py详细介绍
tg-responder — Telegram 通信助手
审核待处理的回复草稿并管理 Telegram 回复队列。
命令
review — 批准待处理草稿
读取回复队列并呈现草稿以供批准:
python3 ~/.claude/skills/tg-responder/scripts/schema.py # ensure DB exists
然后查询数据库:
-- Pending drafts needing approval
SELECT o.id, o.chat_id, o.draft_text, o.draft_reason, o.source,
i.sender_name, i.text as original_text, i.urgency, i.category,
datetime(i.received_at, 'unixepoch') as received
FROM outbox o
JOIN inbox i ON o.inbox_id = i.id
WHERE o.status = 'draft'
ORDER BY
CASE i.urgency WHEN 'urgent' THEN 0 WHEN 'normal' THEN 1 ELSE 2 END,
o.created_at ASC;
对于每个草稿,向用户展示:
- 原始消息 — 发送者、发送时间及消息内容
- 回复草稿 — 提议的回复
- 选项:批准(按原文发送)、编辑(修改后发送)、跳过
要批准并发送草稿:
- 更新发件箱:
UPDATE outbox SET status = 'approved', final_text = draft_text, approved_at = strftime('%s','now') WHERE id = ? - 通过 Telegram 技能发送:
python3 ~/.claude/skills/telegram/scripts/telegram_fetch.py send --chat-id CHAT_ID --text "THE_TEXT" - 更新发件箱,设置已发送状态和 message_id
要跳过:UPDATE outbox SET status = 'skipped', updated_at = strftime('%s','now') WHERE id = ?
status — 队列统计
-- Inbox stats
SELECT status, count(*) FROM inbox GROUP BY status;
-- Outbox stats
SELECT status, count(*) FROM outbox GROUP BY status;
-- Recent activity
SELECT sender_name, route, status, datetime(created_at, 'unixepoch')
FROM inbox ORDER BY created_at DESC LIMIT 10;
报告:待处理数量、等待中的草稿、今日已发送数量、失败项。
follow-ups — 跟踪尚未收到回复的外发消息
扫描尚未回复的联系人,按指数退避策略发送提醒。
# Scan for new unanswered messages (needs Telethon session — stop daemon first)
python3 ~/.claude/skills/tg-responder/scripts/follow_ups.py scan
# Process due reminders (drafts to Telegram or outbox)
python3 ~/.claude/skills/tg-responder/scripts/follow_ups.py remind
# List active follow-ups
python3 ~/.claude/skills/tg-responder/scripts/follow_ups.py list
# Archive expired follow-ups
python3 ~/.claude/skills/tg-responder/scripts/follow_ups.py archive
# Run all (scan + check replies + remind + archive)
python3 ~/.claude/skills/tg-responder/scripts/follow_ups.py all
还可直接查询:
SELECT sender_name, outbound_text, reminder_count, max_reminders,
datetime(outbound_at, 'unixepoch') as sent,
datetime(next_reminder_at, 'unixepoch') as next_ping,
status
FROM follow_ups
WHERE status = 'active'
ORDER BY next_reminder_at;
计划:指数间隔(3 天 → 6 天 → 12 天)、固定间隔(每 N 天)或按联系人自定义。 达到 max_reminders 后 → 归档。收到回复后 → 自动解决。
数据库
位于 ~/Brains/data/telegram/responder.db。
已知问题
- 自动回复并非有效回复。 类似“Отвечу в ближайшее время!”(“我会尽快回复!”)的消息是自动回复占位内容,并非真实回复。跟进状态的判定应排除这些消息——它们不应将对话线程标记为已结束。
- 我的消息与他人消息。 脚本可能会把用户自己的自动回复误认为联系人的消息,从而形成错误的跟进状态。务必检查发送者 ID,而不只是消息内容。
配置
位于 ~/.claude/skills/tg-responder/config.yaml。在此编辑联系人、模式和忽略列表。
Worker
启动:python3 ~/.claude/skills/tg-responder/scripts/worker.py
单次运行:python3 ~/.claude/skills/tg-responder/scripts/worker.py --once
评论
支持 Markdown