🧪 Skills

Telegram Stickers

Collect and send Telegram stickers smartly. Auto-import packs, tag by emotion, select contextually, and respect frequency limits (2-5 messages).

v0.2.0
❤️ 1
⬇️ 148
👁 1
Share

Description


name: tg-stickers description: "Collect and send Telegram stickers smartly. Auto-import packs, tag by emotion, select contextually, and respect frequency limits (2-5 messages)."

Telegram Stickers Skill

Intelligently manage and send Telegram stickers with emotional awareness.

Core Value

OpenClaw natively supports sending stickers (message tool), but this skill adds:

  • Collection management - Import entire sticker packs at once
  • Emotion tagging - 100+ emoji → emotion mappings
  • Smart selection - Context-based + randomization (avoid repetition)
  • Frequency control - 2-5 messages between stickers
  • Usage analytics - Track which stickers work best

Quick Start

1. Import Sticker Packs

./import-sticker-pack.sh <pack_short_name_or_id>

2. Auto-Tag by Emotion

./auto-tag-stickers.sh

3. Send Stickers (in agent code)

// ✅ Use OpenClaw's message tool directly
message(action='sticker', target='<chat_id>', stickerId=['<file_id>'])

// No bash script needed - OpenClaw handles sending natively

4. Smart Selection

./random-sticker.sh "goodnight"  # Returns random sticker tagged "goodnight"

Tools

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

Agent Integration

## 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)

Emotion Tags

Auto-tagging maps 100+ emoji to emotions:

  • happy 😊😄🥳
  • sad 😢😭😔
  • love ❤️💕😍
  • laugh 😂🤣😆
  • thinking 🤔💭
  • goodnight 🌙💤😴
  • goodmorning ☀️🌅
  • warm, gentle, greeting, ...

File Structure

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

stickers.json Structure

{
  "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
  }
}

Usage Philosophy

Like a human:

  • Stickers enhance emotion, don't replace words
  • Use sparingly but meaningfully
  • Goodnight/morning → always sticker preferred
  • Celebrations, humor, empathy → good use cases
  • Technical answers, data reports → skip stickers

Frequency:

  • Default: 2-5 messages between stickers
  • Special occasions (greetings) override frequency rules
  • Track in messages_since_last_sticker

Example: Goodnight Flow

# 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.

Reviews (0)

Sign in to write a review.

No reviews yet. Be the first to review!

Comments (0)

Sign in to join the discussion.

No comments yet. Be the first to share your thoughts!

Compatible Platforms

Pricing

Free

Related Configs