{"adoption": {"forks": 243, "observed_at": "2026-08-28T04:05:18.700363+00:00", "stars": 1662}, "canonical_url": "https://ross.abutalabs.com/products/informer", "card": {"archived": false, "artifact_type": "library", "description": "A Telegram Mass Surveillance Bot in Python", "domain": ["messaging-platforms", "social-media"], "enriched": true, "function": ["web-scraping", "monitoring", "chatbot", "database", "logging"], "health_score": 49, "homepage": "https://www.twitter.com/paulpierre", "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "experimental", "member_repos": ["paulpierre/informer"], "name": "paulpierre/informer", "platform": ["python", "self-hosted"], "pushed_at": "2025-10-20T23:16:20+00:00", "repo": "paulpierre/informer", "stars": 1662, "tags": ["telegram", "telethon", "userbot", "mass-surveillance", "channel-monitoring", "keyword-filtering", "google-sheets", "sock-puppet", "surveillance", "automation", "cryptocurrency", "docker"], "topics": ["telegram-bot", "telegram", "cryptocurrency", "telegram-api", "telethon-userbot", "telethon", "telegrambot", "telegram-bot-api", "surveillance", "python", "scraper", "monitor", "spy", "listener", "listen", "bot"], "urls": [], "use_cases": ["monitor hundreds of telegram channels for keywords", "scrape telegram channel messages into a database", "track cryptocurrency shilling and sentiment in telegram groups", "run brand monitoring across telegram channels", "log telegram channel activity to google sheets", "analyze telegram channel participants and message volume"], "what_it_is": "A Python library built on Telethon that masquerades as real Telegram user accounts to monitor and log messages from hundreds of channels per account. It persists message and channel metadata to MySQL, Google Sheets, and a private Telegram channel for later analysis.", "when_to_avoid": ["you need an official Telegram Bot API solution rather than user-account automation", "you require production-grade stability - it is a proof-of-concept with known bugs", "your use case may violate Telegram's terms of service or local surveillance laws"], "when_to_choose": ["you need to monitor many telegram channels at scale using real user accounts", "you want keyword regex filtering with messages stored in MySQL or Google Sheets", "you want a dockerized, self-hosted telegram listener that stays logged in"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/informer", "repo": "paulpierre/informer", "role": "main", "score": 54}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:18.700363+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:44:35.332157+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30e4a4fb3886c49047ce3252537a25b7e7a5159ea437fb384c3aef8e01fb4673", "fetched_at": "2026-08-28T04:05:18.700363+00:00", "kind": "readme", "missing": false, "url": "https://github.com/paulpierre/informer"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:18.700363+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:44:35.332157+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30e4a4fb3886c49047ce3252537a25b7e7a5159ea437fb384c3aef8e01fb4673", "fetched_at": "2026-08-28T04:05:18.700363+00:00", "kind": "readme", "missing": false, "url": "https://github.com/paulpierre/informer"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:44:35.332157+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30e4a4fb3886c49047ce3252537a25b7e7a5159ea437fb384c3aef8e01fb4673", "fetched_at": "2026-08-28T04:05:18.700363+00:00", "kind": "readme", "missing": false, "url": "https://github.com/paulpierre/informer"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:18.700363+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:18.700363+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:18.700363+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:44:35.332157+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30e4a4fb3886c49047ce3252537a25b7e7a5159ea437fb384c3aef8e01fb4673", "fetched_at": "2026-08-28T04:05:18.700363+00:00", "kind": "readme", "missing": false, "url": "https://github.com/paulpierre/informer"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:18.700363+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:18.700363+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:44:35.332157+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30e4a4fb3886c49047ce3252537a25b7e7a5159ea437fb384c3aef8e01fb4673", "fetched_at": "2026-08-28T04:05:18.700363+00:00", "kind": "readme", "missing": false, "url": "https://github.com/paulpierre/informer"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:18.700363+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:18.700363+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:18.700363+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:44:35.332157+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30e4a4fb3886c49047ce3252537a25b7e7a5159ea437fb384c3aef8e01fb4673", "fetched_at": "2026-08-28T04:05:18.700363+00:00", "kind": "readme", "missing": false, "url": "https://github.com/paulpierre/informer"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:18.700363+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:18.700363+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:44:35.332157+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30e4a4fb3886c49047ce3252537a25b7e7a5159ea437fb384c3aef8e01fb4673", "fetched_at": "2026-08-28T04:05:18.700363+00:00", "kind": "readme", "missing": false, "url": "https://github.com/paulpierre/informer"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:44:35.332157+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30e4a4fb3886c49047ce3252537a25b7e7a5159ea437fb384c3aef8e01fb4673", "fetched_at": "2026-08-28T04:05:18.700363+00:00", "kind": "readme", "missing": false, "url": "https://github.com/paulpierre/informer"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:44:35.332157+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30e4a4fb3886c49047ce3252537a25b7e7a5159ea437fb384c3aef8e01fb4673", "fetched_at": "2026-08-28T04:05:18.700363+00:00", "kind": "readme", "missing": false, "url": "https://github.com/paulpierre/informer"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:44:35.332157+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30e4a4fb3886c49047ce3252537a25b7e7a5159ea437fb384c3aef8e01fb4673", "fetched_at": "2026-08-28T04:05:18.700363+00:00", "kind": "readme", "missing": false, "url": "https://github.com/paulpierre/informer"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 48, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2460, "days_push": 317, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 54, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}