Retrieves unique Telegram chat IDs from local session state, categorised into groups (negative IDs) and private chats (positive IDs).
Usage
python3 "$SKILL_DIR/scripts/list_chats.py"
# Skip name resolution (no bot token required, faster):
python3 "$SKILL_DIR/scripts/list_chats.py" --no-names
$SKILL_DIR means this skill's installed directory. If your agent does not set it automatically, replace it with the path to this list-telegram-chats directory before running the command.
Output
{
"groups": [{"chat_id": -1001234567890, "name": "My Group", "type": "supergroup", "last_updated": "2024-01-15T10:30:00Z"}],
"private_chats": [{"chat_id": 502391728, "name": "Alice Smith", "type": "private"}]
}
nameisnullwhen the bot can no longer access the chat.last_updatedis present only for chats sourced from nanobot sessions.
Prerequisites
Session sources (checked in order):
- Nanobot —
~/.nanobot/workspace/sessions/telegram_*.jsonl(configurable viaNANOBOT_SESSIONS_DIRorNANOBOT_WORKSPACE) - OpenClaw —
OPENCLAW_STATE_DIR/agents/main/sessions/sessions.json(default/twin-data/state) - YouAI backend —
YOUAI_API_URL+YOUAI_TWIN_ID(fallback when no local sessions exist)
Bot token for name resolution (tried in order):
TELEGRAM_BOT_TOKENenv varchannels.telegram.tokenin~/.nanobot/config.json(override path withNANOBOT_CONFIG)
Without a token, name is omitted from all entries.
Related Skills
- telegram-send — send a message to one of the discovered chats