Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
glebis avatar

Tg Responder

  • 116 installs
  • 339 repo stars
  • Updated August 4, 2026
  • glebis/claude-skills

Review and send Telegram response drafts from a queue and manage follow-ups for unanswered outbound messages.

About

Reads a responder queue database to present pending reply drafts for approve/edit/skip, sends approved ones via the telegram skill, and tracks follow-ups. A developer uses it to triage a Telegram inbox and chase messages that never got a reply.

  • Urgency-ordered draft approval with send/skip status tracking
  • Follow-up management for unanswered outbound messages

Tg Responder by the numbers

  • 116 all-time installs (skills.sh)
  • Ranked #723 of 2,715 Automation & Workflows skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/glebis/claude-skills --skill tg-responder

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs116
repo stars339
Last updatedAugust 4, 2026
Repositoryglebis/claude-skills

What it does

Review and send Telegram response drafts from a queue and manage follow-ups for unanswered outbound messages.

Files

SKILL.mdMarkdownGitHub ↗

tg-responder — Telegram Communications Assistant

Review pending response drafts and manage the Telegram response queue.

Commands

review — Approve pending drafts

Read the responder queue and present drafts for approval:

python3 ~/.claude/skills/tg-responder/scripts/schema.py  # ensure DB exists

Then query the database:

-- 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;

For each draft, present to the user: 1. Original message — who sent it, when, what they said 2. Draft response — the proposed reply 3. Options: approve (send as-is), edit (modify then send), skip

To approve and send a draft: 1. Update outbox: UPDATE outbox SET status = 'approved', final_text = draft_text, approved_at = strftime('%s','now') WHERE id = ? 2. Send via telegram skill: python3 ~/.claude/skills/telegram/scripts/telegram_fetch.py send --chat-id CHAT_ID --text "THE_TEXT" 3. Update outbox with sent status and message_id

To skip: UPDATE outbox SET status = 'skipped', updated_at = strftime('%s','now') WHERE id = ?

status — Queue statistics

-- 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;

Report: pending count, drafts waiting, sent today, failed items.

follow-ups — Track unanswered outbound messages

Scan for people who haven't replied, send reminders with exponential backoff.

# 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

Also query directly:

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;

Schedule: exponential (3d → 6d → 12d), fixed (every Nd), or custom per contact. After max_reminders → archived. If they reply → auto-resolved.

Database

Located at ~/Brains/data/telegram/responder.db.

Known Pitfalls

  • Auto-replies are not closers. Messages like "Отвечу в ближайшее время!" are auto-respond placeholders, not real responses. Exclude them from follow-up resolution — they should not mark a thread as closed.
  • My messages vs. other people's messages. The script can mistake the user's own auto-replies for the contact's messages, forming incorrect follow-up state. Always check sender ID, not just message content.

Config

Located at ~/.claude/skills/tg-responder/config.yaml. Edit contacts, modes, and ignore lists there.

Worker

Start: python3 ~/.claude/skills/tg-responder/scripts/worker.py One-shot: python3 ~/.claude/skills/tg-responder/scripts/worker.py --once

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.