mcpField
T
tg-responder

tg-responder

github.com/glebis生产力401141 次安装1 天前更新
代码仓库

关于 tg-responder

tg-responder 是用于管理 Telegram 沟通的技能,可审核回复草稿、查看队列状态并跟踪未获回复的消息。它支持批准、修改或跳过草稿,以及配置跟进提醒。

主要功能

  1. 01审核并批准回复草稿
  2. 02查看收件箱和发件箱统计
  3. 03跟踪未获回复的消息
  4. 04配置提醒计划
  5. 05通过 Telegram 发送已批准草稿

适用场景

  1. 01批准或修改排队中的 Telegram 回复
  2. 02查看待处理和失败消息数量
  3. 03提醒尚未回复的联系人

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/glebis/claude-skills --skill tg-responder

安装后在 Claude Code 中输入/tg-responder确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.gitignore
prompts/
classify.md
scripts/
backfill.py
classify.py
follow_ups.py
hook.py
lookup_chat.py
schema.py
seed_templates.py
tg_draft.py
worker.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;

对于每个草稿,向用户展示:

  1. 原始消息 — 发送者、发送时间及消息内容
  2. 回复草稿 — 提议的回复
  3. 选项:批准(按原文发送)、编辑(修改后发送)、跳过

要批准并发送草稿:

  1. 更新发件箱:UPDATE outbox SET status = 'approved', final_text = draft_text, approved_at = strftime('%s','now') WHERE id = ?
  2. 通过 Telegram 技能发送:python3 ~/.claude/skills/telegram/scripts/telegram_fetch.py send --chat-id CHAT_ID --text "THE_TEXT"
  3. 更新发件箱,设置已发送状态和 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