Skip to main content

MetricsFirst SDK for Python - Analytics for Telegram bots

Project description

MetricsFirst Python SDK

Official Python SDK for MetricsFirst - Analytics for Telegram bots.

Note: Commands and interactions are tracked automatically when you add your bot to MetricsFirst. This SDK is for tracking custom events like services, purchases, and errors.

Installation

# Basic installation (sync only)
pip install metricsfirst

# With async support
pip install metricsfirst[async]

Features

  • Fire-and-forget: All tracking calls are non-blocking and don't add latency
  • Background sending: Events are sent in a separate thread (sync) or task (async)
  • Auto cleanup: No need to call shutdown() - events flush automatically on exit
  • Error resilience: Errors are logged, never thrown to your code
  • Memory safe: Queue is limited to 1000 events to prevent memory issues
  • Custom Events: Track any event with dynamic properties (Mixpanel-style)

Quick Start

Custom Events (Mixpanel-style)

Track any event with dynamic properties:

from metricsfirst import MetricsFirst

# Initialize once (globally)
mf = MetricsFirst(
    bot_id="your_bot_id",
    api_key="your_api_key",
)

# Track custom events with any properties
mf.track(123456789, 'STORY_RESPONSE', {
    'target': 'username123',
    'url': 'https://example.com/story',
    'response_time_ms': 150,
    'success': True,
})

mf.track(123456789, 'BUTTON_CLICK', {
    'button_name': 'premium_upgrade',
    'screen': 'main_menu',
})

mf.track(123456789, 'VIDEO_DOWNLOADED', {
    'duration_seconds': 45,
    'quality': '1080p',
    'source': 'instagram',
})

# Events are automatically flushed on exit - no shutdown() needed!

Synchronous Client

from metricsfirst import MetricsFirst, ServiceEventData

# Initialize once (globally)
mf = MetricsFirst(
    bot_id="your_bot_id",
    api_key="your_api_key",
)

# Track a service (fire-and-forget, non-blocking)
mf.track_service(ServiceEventData(
    user_id=123456789,
    service_name="image_generation",
    is_free=False,
    price=10,
    currency="USD",
))

# Events are automatically flushed on exit

Asynchronous Client

import asyncio
from metricsfirst import AsyncMetricsFirst, ServiceEventData

# Initialize once (globally)
    mf = AsyncMetricsFirst(
        bot_id="your_bot_id",
        api_key="your_api_key",
    )

async def main():
    # Just use it - auto-starts on first call
    await mf.track_service(ServiceEventData(
        user_id=123456789,
        service_name="image_generation",
    ))

# Events are automatically flushed on exit
asyncio.run(main())

Context Manager

# Sync
with MetricsFirst(bot_id="...", api_key="...") as mf:
    mf.track_service(...)

# Async
async with AsyncMetricsFirst(bot_id="...", api_key="...") as mf:
    await mf.track_service(...)

Available Methods

Method Description
track() Track custom events with any properties
track_service() Track services provided
track_error() Track errors
track_error_from_exception() Track error from exception
track_purchase_initiated() Track purchase start
track_purchase_completed() Track successful purchase
track_purchase_error() Track failed purchase
track_recurring_charge_success() Track subscription charge
track_recurring_charge_failed() Track failed charge
identify() Identify user with properties

track() - Custom Events

mf.track(
    user_id: int,                 # Telegram user ID
    event_name: str,              # Event name (e.g., 'STORY_RESPONSE')
    properties: dict = None,      # Any key-value pairs
)

Configuration

mf = MetricsFirst(
    bot_id="your_bot_id",
    api_key="your_api_key",
    api_url="https://api.metricsfirst.com",  # Custom API URL
    batch_events=True,      # Batch events before sending
    batch_size=10,          # Events per batch
    batch_interval=5.0,     # Seconds between flushes
    debug=False,            # Enable debug logging
    timeout=10.0,           # HTTP timeout
)

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

metricsfirst-0.1.11.tar.gz (9.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

metricsfirst-0.1.11-py3-none-any.whl (13.4 kB view details)

Uploaded Python 3

File details

Details for the file metricsfirst-0.1.11.tar.gz.

File metadata

  • Download URL: metricsfirst-0.1.11.tar.gz
  • Upload date:
  • Size: 9.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.4

File hashes

Hashes for metricsfirst-0.1.11.tar.gz
Algorithm Hash digest
SHA256 0ec0588f39a537432b7987ed19c801632f5e7950b1a27a00775d00a97ba7a61f
MD5 0893c14a4001d41f34cf7d5c7f37864a
BLAKE2b-256 aaa7d4ce0db79c5b6838e81f571aadd89115e1af4bf15db6ab925b91194ac7dd

See more details on using hashes here.

File details

Details for the file metricsfirst-0.1.11-py3-none-any.whl.

File metadata

  • Download URL: metricsfirst-0.1.11-py3-none-any.whl
  • Upload date:
  • Size: 13.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.4

File hashes

Hashes for metricsfirst-0.1.11-py3-none-any.whl
Algorithm Hash digest
SHA256 03199628fb9e6225b17997bf473921de533723ccecbfa32ff0389393bb1e43cc
MD5 62c25c74db1a54c1952efa51704a54bc
BLAKE2b-256 da2f5cda3796fe6b9deaa1b49c4b7655c50074c929bc60fab41dce46756f456b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page