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