📬 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 export or sync chat history to files
- Asks to organize chats into folders
- Wants to check their logged-in account or session status
📦 Install
npm install -g @skillhq/telegram
🔐 Authentication
First-time setup requires API credentials from https://my.telegram.org/apps
telegram auth # First-time login
telegram logout # Clear saved session
telegram check # Verify session is valid
telegram whoami # Show logged-in account
telegram whoami --json # Account info as JSON
📖 Commands
Reading Messages
telegram inbox # Unread messages summary
telegram chats # List all chats
telegram chats --type group # Filter: user, group, supergroup, channel
telegram chats -n 200 # List up to 200 chats
telegram read "ChatName" -n 50 # Read last 50 messages
telegram read "ChatName" --since "1h" # Messages from last hour
telegram read "ChatName" --until "2h" # Messages up to 2 hours ago
telegram read @username -n 20 # Read DM with user
telegram read 123456789 -n 10 # Read by chat ID
Searching
telegram search "query" --chat "ChatName" # Search within chat
telegram search "query" --all # Search all chats (global)
telegram search "query" -n 20 # Limit results
Sending Messages
telegram send @username "message" # Send DM
telegram send "GroupName" "message" # Send to group
telegram reply "ChatName" 12345 "response" # Reply to message ID
Contacts & Groups
telegram contact @username # Get contact info
telegram members "GroupName" # List group members
telegram members "GroupName" -n 500 # Fetch up to 500 members
telegram admins "GroupName" # List admins only
telegram groups # List all groups
telegram groups --admin # Groups where you're admin
telegram kick "GroupName" @username # Remove user from group
Muting
telegram mute "ChatName" # Mute forever
telegram mute "ChatName" -d 1h # Mute for 1 hour
telegram mute @username -d 8h # Mute DM for 8 hours
telegram mute "GroupName" -d 1d # Mute for 1 day
telegram unmute "ChatName" # Unmute
Folders
telegram folders # List all folders
telegram folder "Work" # Show chats in folder
telegram folder-add "Work" "ProjectChat" # Add chat to folder
telegram folder-remove "Work" "ProjectChat" # Remove chat from folder
Sync / Export
telegram sync # Sync last 7 days to ./telegram-sync
telegram sync --days 30 # Sync last 30 days
telegram sync --chat "ChatName" # Sync specific chat only
telegram sync --output ~/exports # Custom output directory
📤 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 |
telegram inbox --json # JSON format
telegram inbox --markdown # Markdown format
telegram read "Chat" --json # JSON with messages array
telegram read "Chat" --markdown # Markdown with messages
telegram chats --json # JSON with chat list
telegram members "Group" --markdown # Markdown member list
Supported on: inbox, read, search, chats, members, groups, contact, whoami
🤖 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) should be confirmed with the user before executing - Rate limiting: avoid rapid successive calls; the Telegram API has rate limits
- Large groups: use
-nto limitmembersoutput on very large groups
💡 Examples
Check inbox for unread messages:
telegram inbox
Read recent messages from a group:
telegram read "MetaDAO Community" -n 20
Get messages from the last 2 hours:
telegram read "Project Chat" --since "2h"
Search for a topic across all chats:
telegram search "futarchy" --all
Search within a specific chat:
telegram search "deadline" --chat "Work Team"
Send a message:
telegram send @username "Hello, checking in!"
Export a chat's history:
telegram sync --chat "Project Chat" --days 14 --output ~/exports
Filter chats by type:
telegram chats --type channel --json
Kick a user from a group:
telegram kick "My Group" @spammer
📝 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
synccommand creates one markdown file per chat in the output directory