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. 選択肢:approve(そのまま送信)、edit(編集してから送信)、skip

下書きを承認して送信するには、次の手順を実行します。

  1. outbox を更新します: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. 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

コメント