tg-responder
Review and send Telegram response drafts, manage follow-ups for unanswered outbound messages. Use when the user says "/tg-responder review", "/tg-responder status", "/tg-responder follow-ups", "check telegram drafts", "review pending messages", "telegram inbox", "who hasn't replied", or "follow up".
How do I install this agent skill?
npx skills add https://github.com/glebis/claude-skills --skill tg-responderIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The skill manages Telegram communications and includes specific mitigations for processing untrusted incoming messages. It uses localized command execution to coordinate between scripts and AI utilities.
- Socketwarn
1 alert: gptAnomaly
- Snykwarn
Risk: MEDIUM · 1 issue
What does this agent skill do?
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:
- Original message — who sent it, when, what they said
- Draft response — the proposed reply
- Options: approve (send as-is), edit (modify then send), skip
To approve and send a draft:
- Update outbox:
UPDATE outbox SET status = 'approved', final_text = draft_text, approved_at = strftime('%s','now') WHERE id = ? - Send via telegram skill:
python3 ~/.claude/skills/telegram/scripts/telegram_fetch.py send --chat-id CHAT_ID --text "THE_TEXT" - 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
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/glebis/claude-skills/tg-responder">View tg-responder on skillZs</a>