Install
openclaw skills install tg-stickersCollect and send Telegram stickers smartly. Auto-import packs, tag by emotion, select contextually, and respect frequency limits (2-5 messages).
openclaw skills install tg-stickersIntelligently manage and send Telegram stickers with emotional awareness.
OpenClaw natively supports sending stickers (message tool), but this skill adds:
./import-sticker-pack.sh <pack_short_name_or_id>
./auto-tag-stickers.sh
// ✅ Use OpenClaw's message tool directly
message(action='sticker', target='<chat_id>', stickerId=['<file_id>'])
// No bash script needed - OpenClaw handles sending natively
./random-sticker.sh "goodnight" # Returns random sticker tagged "goodnight"
| Script | Purpose | Usage |
|---|---|---|
import-sticker-pack.sh | Bulk import Telegram sticker pack | ./import-sticker-pack.sh pa_XXX... |
auto-tag-stickers.sh | Tag stickers by emoji → emotion | ./auto-tag-stickers.sh |
random-sticker.sh | Select random sticker by tag | ./random-sticker.sh "happy" |
check-collection.sh | View collection stats | ./check-collection.sh |
## Sticker Usage
When to send:
- Goodnight/morning greetings (always use sticker over text)
- Celebrating success/milestones
- Humorous moments
- Emotional responses (joy, sympathy, encouragement)
How to send:
1. Use random-sticker.sh to pick appropriate sticker by emotion
2. Call message(action=sticker, ...) directly
3. (Optional) Update stickers.json manually to track usage
Frequency: 2-5 messages between stickers (track in agent logic)
Auto-tagging maps 100+ emoji to emotions:
happy 😊😄🥳sad 😢😭😔love ❤️💕😍laugh 😂🤣😆thinking 🤔💭goodnight 🌙💤😴goodmorning ☀️🌅warm, gentle, greeting, ...tg-stickers/
├── SKILL.md # This file
├── README.md # Quick start guide
├── stickers.json # Collection + usage data
├── stickers.json.example # Empty template
├── import-sticker-pack.sh # Bulk import
├── auto-tag-stickers.sh # Emoji → emotion
├── random-sticker.sh # Context-based selection
└── check-collection.sh # Stats viewer
{
"collected": [
{
"file_id": "CAACAgEAAxUAAWmq...",
"emoji": "🌙",
"set_name": "pa_dKjUP9P2dt4k...",
"added_at": "2026-03-06T23:31:00Z",
"tags": ["goodnight", "sleep", "night", "warm", "gentle"],
"used_count": 3,
"last_used": "2026-03-07T00:24:00Z"
}
],
"usage_log": [
{
"file_id": "...",
"sent_at": "2026-03-07T00:24:00Z",
"context": "User saying goodnight",
"message_id": "2599"
}
],
"stats": {
"total_collected": 124,
"total_sent": 15,
"last_sent_at": "2026-03-07T00:24:00Z",
"messages_since_last_sticker": 0
},
"config": {
"min_messages_between_stickers": 2,
"max_messages_between_stickers": 5,
"enabled": true
}
}
Like a human:
Frequency:
messages_since_last_sticker# 1. Agent detects "goodnight" intent
# 2. Select random goodnight sticker
FILE_ID=$(bash /path/to/random-sticker.sh "goodnight")
# 3. Send via OpenClaw (from agent code)
message(action=sticker, target=<chat_id>, stickerId=[$FILE_ID])
# 4. (Optional) Track usage manually
jq --arg fid "$FILE_ID" \
'(.collected[] | select(.file_id == $fid) | .used_count) += 1' \
stickers.json > stickers.json.tmp && \
mv stickers.json.tmp stickers.json
Philosophy: Stickers should feel natural, not robotic. Collect user preferences, rotate selections, and respect conversation flow.