Relay Manager

This module provides a management layer for handling multiple Nostr relay connections.

Overview

The RelayManager class manages connections to multiple Nostr relays, handling message passing, event fetching, and event publishing across all of them.

Typical usage:

import asyncio
from pynostr.key import PrivateKey
from pynostr.filters import Filters
from agentstr.relays.relay_manager import RelayManager

async def main():
    # A list of public relays
    relay_urls = ["wss://relay.damus.io", "wss://relay.primal.net"]

    # Generate a new private key for demonstration
    private_key = PrivateKey()

    # Initialize the RelayManager
    relay_manager = RelayManager(relay_urls, private_key)

    # Create filters to fetch recent text notes
    filters = Filters(kinds=[1], limit=5)

    # Fetch events from all relays
    events = await relay_manager.get_events(filters)

    if events:
        print(f"Fetched {len(events)} unique events from {len(relay_urls)} relays:")
        for event in events:
            print(f" - Event content: {event.content}")
    else:
        print("No events found.")

if __name__ == "__main__":
    asyncio.run(main())

Reference