🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Telegram cli

by @baontq23

CLI tool for Telegram via MTProto. Send/read messages, manage groups, search conversations, download media, and automate Telegram workflows. Use when the tas...

TERMINAL
clawhub install telegram-cli

πŸ“– About This Skill


name: node-telegram-cli description: CLI tool for Telegram via MTProto. Send/read messages, manage groups, search conversations, download media, and automate Telegram workflows. Use when the task involves any Telegram account interaction.

Source & Trust

1. Repository: https://github.com/baontq23/node-telegram-cli 2. npm: https://www.npmjs.com/package/node-telegram-cli (published with provenance) 3. Credentials are stored securely via OS Keychain (macOS Keychain / Windows Credential Manager / Linux Secret Service), not in plaintext files

Installation

1. Requires Node.js >= 20 2. Install globally: npm install -g node-telegram-cli 3. Verify: ntg --version 4. Run ntg login once β€” interactive, requires phone number + OTP code from Telegram

Critical Rule: Always Use JSON Mode

1. Add --json flag to every command for machine-readable output 2. --json is a global flag β€” place it before or after the subcommand 3. Example: ntg --json inbox, ntg --json search @user "keyword"

Peer Format

1. @username β€” most reliable, e.g. @johndoe 2. Phone number β€” for contacts without username, e.g. +84901234567 3. me β€” your own Saved Messages 4. Chat title β€” group/channel name in quotes, e.g. "My Group"

Read Commands (No Side Effects)

1. ntg --json inbox β€” list recent conversations 2. ntg --json inbox --unread β€” only unread conversations 3. ntg --json inbox --private β€” only private 1-on-1 chats 4. ntg --json inbox --unread --private β€” combine filters 5. ntg --json inbox --chat --limit β€” messages from a specific chat 6. ntg --json search "keyword" β€” search in a specific chat 7. ntg --json global-search "keyword" β€” search across all chats 8. ntg --json chat-info β€” show group/channel info

Write Commands (Has Side Effects)

1. ntg msg "text" β€” send a text message 2. ntg msg "text" --silent β€” send silently (no notification sound) 3. ntg fwd β€” forward a message by ID 4. ntg mark-read β€” mark all messages as read 5. ntg delete-msg β€” delete a message 6. ntg send-photo β€” send a photo 7. ntg send-video β€” send a video 8. ntg send-file β€” send a text file as plain messages 9. ntg download --chat β€” download media from a message 10. ntg download --chat --type β€” specify media type (photo, video, audio, doc) 11. ntg view --chat β€” download and open with system viewer 12. ntg clean-downloads β€” delete all downloaded media files

Group Management

1. ntg create-group "Topic" @user1 @user2 β€” create a new group 2. ntg chat-add β€” add a user to a group 3. ntg chat-kick β€” remove a user from a group 4. ntg chat-rename "New Name" β€” rename a group 5. ntg chat-set-photo β€” set group photo

Contact Management

1. ntg add-contact β€” add a contact 2. ntg rename-contact β€” rename a contact

JSON Output Schemas

#### Inbox (conversation list)

1. name β€” contact/chat display name 2. peer β€” identifier to use as argument 3. peerType β€” "username" | "phone" | "id" 4. type β€” "user" | "group" | "channel" 5. unreadCount β€” number of unread messages 6. lastMessage β€” text/caption (empty string if media-only) 7. lastMessageId β€” use with ntg download for media 8. mediaType β€” "photo" | "video" | "document" | "audio" | "voice" | "sticker" | "location" | "contact" | "poll" | null 9. date β€” ISO 8601 timestamp

#### Chat messages (inbox --chat)

1. id β€” message ID 2. date β€” ISO 8601 timestamp 3. sender β€” sender display name 4. text β€” message text/caption 5. mediaType β€” same values as above 6. isOutgoing β€” true if sent by you

Error Handling

1. Exit code 0 = success 2. Exit code 1 = error (not logged in, peer not found, etc.) 3. If not logged in, commands fail with: "Not logged in. Run ntg login first."

Important Notes

1. Do NOT use ntg chat β€” it is interactive, blocks stdin, not suitable for automation 2. Session persists until ntg logout is called β€” no re-login needed between commands 3. Downloaded files are saved to ~/.telegram-cli/downloads/ 4. Always specify --chat when downloading media to identify the source chat