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;
各下書きについて、ユーザーに以下を提示します。
- 元のメッセージ — 送信者、送信日時、メッセージ内容
- 返信の下書き — 提案されている返信
- 選択肢:approve(そのまま送信)、edit(編集してから送信)、skip
下書きを承認して送信するには、次の手順を実行します。
- outbox を更新します:
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" - outbox のステータスを送信済みに更新し、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;
スケジュール:指数方式(3d → 6d → 12d)、固定方式(Nd ごと)、または連絡先ごとのカスタム設定。 max_reminders に達するとアーカイブされます。相手から返信があった場合は、自動的に解決済みになります。
データベース
~/Brains/data/telegram/responder.db にあります。
既知の注意点
- 自動返信は会話を締めくくる返信ではありません。 「Отвечу в ближайшее время!」のようなメッセージは自動応答のプレースホルダーであり、実際の返信ではありません。フォローアップの解決判定から除外してください。スレッドを終了済みにしてはなりません。
- 自分のメッセージと他人のメッセージ。 スクリプトがユーザー自身の自動返信を連絡先からのメッセージと誤認し、誤ったフォローアップ状態を作成することがあります。メッセージの内容だけでなく、必ず送信者 ID を確認してください。
設定
~/.claude/skills/tg-responder/config.yaml にあります。連絡先、モード、無視リストを編集してください。
ワーカー
起動:python3 ~/.claude/skills/tg-responder/scripts/worker.py
1 回だけ実行:python3 ~/.claude/skills/tg-responder/scripts/worker.py --once