telegram
Telegram CLI for reading, searching, sending messages, managing groups, and syncing chat history. Use when the user asks about Telegram messages, wants to check inbox, search chats, send messages, mute/unmute chats, kick users, export history, or look up contacts and groups.
By skillhq · 466 installs
npx skills add skillhq/telegram --skill telegram
Source repository · Upstream listing
📬 Telegram CLI
Fast Telegram CLI for reading, searching, and sending messages.
🎯 When to Use
Use this skill when the user:
Asks to check Telegram messages or inbox
Wants to search Telegram for a topic/keyword
Wants to send a Telegram message or reply to one
Asks about a Telegram group, contact, or chat
Wants to see unread messages
Needs to look up group members or admins
Wants to mute/unmute a noisy chat or group
Needs to kick/remove a user from a group
Wants to promote a member to admin
Wants to transfer ownership of a group/channel to someone else
Wants to export or sync chat history to files
Asks to organize chats into folders
Wants to check their logged in account or session status
📦 Install
🔐 Authentication
First time setup requires API credentials from https://my.telegram.org/apps
📖 Commands
Reading Messages
Searching
Sending Messages
Contacts & Groups
transfer owner notes:
Irreversible: you drop to a regular admin/member and only the new owner can transfer it back.
Requires two step verification (cloud password) on your account; it is prompted for securely at runtime.
Supergroups and channels only convert a basic group to a supergroup first.
The target must already be a member. Telegram also blocks transfer for ~24h after a new login and ~7 days after setting/changing your 2FA password.
Prompts you to retype the group name to confirm; pass y to skip that confirmation.
Muting
Folders
Sync / Export
Incremental sync ( resume ):
Tracks last synced message ID per chat in .sync meta.json
On subsequent runs, only fetches messages newer than last sync
Appends new messages to existing markdown files
Combine with all to maintain a complete, up to date archive
📤 Output Formats
Most commands support multiple output formats:
Flag Use Case
(default) Human readable terminal output
json Structured JSON for programmatic processing
markdown Markdown formatted for display or export
Supported on: inbox , read , search , chats , members , groups , contact , whoami
📎 Media Metadata
Messages containing media (photos, videos, documents, voice notes, stickers, etc.) now include metadata instead of showing "(no text)":
Media Type Display
Photo [📷 Photo]
Video [🎥 Video (2.1 MB)]
Document [📎 report.pdf (540.0 KB)]
Voice [🎤 Voice message]
Audio [🎵 song.mp3 (3.2 MB)]
Sticker [😀 Sticker]
GIF [🎬 GIF]
Location [📍 Location]
Contact [👤 Contact]
Poll [📊 Poll]
In JSON output, messages include mediaType , fileName , and fileSize fields when media is present.
🤖 AI Agent Guidance
When using this CLI as an AI agent:
For processing data (counting, filtering, extracting): use json
For displaying to the user : use default or markdown
Chat identification : names are partial matched (e.g., "MetaDAO" matches "MetaDAO Community"), usernames must start with @ , numeric IDs also work
Read operations are safe to run without confirmation
Write operations ( send , reply , kick , promote , transfer owner ) should be confirmed with the user before executing
transfer owner is irreversible and interactive (it prompts for a 2FA password and a typed confirmation), so it cannot be run unattended; never script it on a user's behalf without explicit instruction
Rate limiting : avoid rapid successive calls; the Telegram API has rate limits
Large groups : use n to limit members output on very large groups
Full archive : use telegram sync all chat "Name" to export complete chat history
Keeping archives fresh : use telegram sync resume to incrementally update previous exports
Media rich chats : messages with photos/videos/files now show metadata, not just "(no text)"
💡 Examples
Check inbox for unread messages:
Read recent messages from a group:
Get messages from the last 2 hours:
Search for a topic across all chats:
Search within a specific chat:
Send a message:
Export a chat's complete history:
Incrementally update an existing export:
Filter chats by type:
Kick a user from a group:
Promote a member to admin:
Transfer ownership of a group to someone else:
📝 Notes
Chat names can be partial matches (e.g., "MetaDAO" matches "MetaDAO Community")
Usernames must start with @ (e.g., @username )
Chat IDs (numeric) can be used anywhere a chat name is accepted
Messages are returned in reverse chronological order (newest first)
Time flags ( since , until ) accept formats like "1h" , "30m" , "7d"
The sync command creates one markdown file per chat in the output directory
Sync metadata ( .sync meta.json ) enables incremental sync with resume
Sender names are cached per request for faster syncs (avoids redundant API calls)
Messages paginate automatically — no silent truncation for large chats