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