Resources
7Install
npx skillscat add imoonkey/openweb/src-sites-telegram Install via the SkillsCat registry.
SKILL.md
Telegram
Overview
Telegram — messaging platform. L3 adapter reads via webpack getGlobal(), writes via callApi() to GramJS Web Worker. Zero DOM manipulation.
Workflows
Read messages in a chat
getChats→ pick chat →chatIdgetMessages(chatId, limit)→ messages with sender info
Search for messages
searchMessages(query)→ matching messages across all loaded chatssearchMessages(query, chatId)→ search within a specific chat
Send, edit, then delete
getChats→ pick chat →chatIdsendMessage(chatId, text)→ sends messagegetMessages(chatId, limit: 1)→ getmessageIdeditMessage(chatId, messageId, newText)→ edits the messagedeleteMessage(chatId, messageId)→ deletes it
Forward a message
getMessages(fromChatId)→ find message →messageIdforwardMessages(fromChatId, toChatId, [messageId])→ forwarded
Pin a message
getMessages(chatId)→ find message →messageIdpinMessage(chatId, messageId)→ pinnedunpinMessage(chatId, messageId)→ unpinned
Look up a user
getChats→ find chat with user → notesenderIdfrom messagesgetUserInfo(userId)→ full profile (username, status, premium)
Saved Messages write-verify prerequisite
Telegram's "Saved Messages" chat is the canonical safe target for verify, but editMessage/forwardMessages/pinMessage/unpinMessage resolve messageId: "latest" to "the most recent outgoing message in the chat". A brand-new account has no outgoing messages in Saved Messages.
- In the Telegram Web A/K tab, open Saved Messages and send any text (e.g. "test").
markAsRead,editMessage,forwardMessages,pinMessage,unpinMessageagainstchatId: "me"now resolve cleanly withmessageId: "latest".
Mark a chat as read
getChats→ pick chat →chatIdmarkAsRead(chatId)→ marked read
Browse contacts
getContacts→ full contact list with phone numbers and status
Operations
| Operation | Intent | Key Input | Key Output | Notes |
|---|---|---|---|---|
| getChats | list conversations | limit? | id, title, type, membersCount | entry point |
| getMessages | read chat history | chatId ← getChats, limit?, offsetId? | id, text, senderName, date | paginated via offsetId |
| searchMessages | find messages by keyword | query, chatId? ← getChats | id, text, chatTitle, senderName | searches loaded messages only |
| getUserInfo | view user profile | userId ← getMessages.senderId | firstName, username, status, isPremium | null if not found |
| getMe | current user info | — | id, firstName, username | no params |
| getContacts | list contacts | — | id, firstName, phoneNumber, status | reads from cached contacts |
| sendMessage | send text to chat | chatId ← getChats, text | success, chatId, text | callApi write |
| deleteMessage | delete a message | chatId ← getChats, messageId ← getMessages | success, chatId, messageId | callApi write; supports messageId: "latest" (most recent outgoing — chat must have one) |
| editMessage | edit message text | chatId ← getChats, messageId ← getMessages, text | success, chatId, messageId, text | callApi write; latest requires an outgoing message in the chat |
| forwardMessages | forward messages | fromChatId ← getChats, toChatId ← getChats, messageIds ← getMessages | success, fromChatId, toChatId | callApi write |
| pinMessage | pin a message | chatId ← getChats, messageId ← getMessages, silent? | success, chatId, messageId | callApi write; latest requires an outgoing message in the chat |
| unpinMessage | unpin a message | chatId ← getChats, messageId ← getMessages (or paired pinMessage) | success, chatId, messageId | callApi write, reverse of pinMessage |
| markAsRead | mark chat as read | chatId ← getChats | success, chatId | callApi write |
Quick Start
# List your chats
openweb telegram exec getChats '{"limit": 20}'
# Read messages from a chat
openweb telegram exec getMessages '{"chatId": "8259810574", "limit": 10}'
# Search messages globally
openweb telegram exec searchMessages '{"query": "hello", "limit": 10}'
# Get your contacts
openweb telegram exec getContacts '{}'
# Send a message
openweb telegram exec sendMessage '{"chatId": "8259810574", "text": "hello"}'
# Edit a message
openweb telegram exec editMessage '{"chatId": "8259810574", "messageId": 153, "text": "edited"}'
# Delete the latest outgoing message
openweb telegram exec deleteMessage '{"chatId": "8259810574", "messageId": "latest"}'
# Forward a message
openweb telegram exec forwardMessages '{"fromChatId": "8259810574", "toChatId": "5527097202", "messageIds": [153]}'
# Mark chat as read
openweb telegram exec markAsRead '{"chatId": "8259810574"}'