Files
timmy-home/nostr/debug_send.py

82 lines
2.5 KiB
Python

#!/usr/bin/env python3
"""Debug why events aren't being stored - check relay responses."""
import json
import asyncio
import time
from datetime import timedelta
from nostr_sdk import (
Keys, Client, NostrSigner, Filter, Kind,
EventBuilder, Tag, RelayUrl, SingleLetterTag, Alphabet,
Event, Timestamp
)
RELAY_URL = "wss://alexanderwhitestone.com/relay"
KEYS_FILE = "/Users/apayne/.timmy/nostr/agent_keys.json"
GROUP_ID = "timmy-time"
with open(KEYS_FILE) as f:
all_keys = json.load(f)
async def main():
keys = Keys.parse(all_keys["timmy"]["hex_sec"])
signer = NostrSigner.keys(keys)
client = Client(signer)
await client.add_relay(RelayUrl.parse(RELAY_URL))
await client.connect()
await asyncio.sleep(3)
# Check SendEventOutput details
print("=== Sending test event ===")
tags = [Tag.parse(["h", GROUP_ID])]
builder = EventBuilder(Kind(9), "debug test")
builder = builder.tags(tags)
result = await client.send_event_builder(builder)
print(f"Event ID: {result.id.to_hex()}")
# Inspect all attributes of result
attrs = [x for x in dir(result) if not x.startswith('_')]
print(f"Result attributes: {attrs}")
# Try to get success/failure info
for attr in attrs:
try:
val = getattr(result, attr)
if not callable(val):
print(f" {attr} = {val}")
else:
# Try calling with no args
try:
r = val()
print(f" {attr}() = {r}")
except:
pass
except Exception as e:
print(f" {attr}: error: {e}")
# Check clock - the relay rejects timestamps >120s in past
print(f"\n=== Clock check ===")
now = int(time.time())
print(f"Local unix time: {now}")
# Try a simple kind 1 text note (NOT NIP-29) to see if relay stores anything
print("\n=== Sending plain kind 1 text note (non-NIP-29) ===")
builder2 = EventBuilder(Kind(1), "plain text note test")
try:
result2 = await client.send_event_builder(builder2)
print(f" Event ID: {result2.id.to_hex()}")
except Exception as e:
print(f" ERROR: {e}")
await asyncio.sleep(2)
# Query for kind 1
print("\n=== Query kind 1 ===")
f1 = Filter().kind(Kind(1)).limit(10)
events = await client.fetch_events(f1, timedelta(seconds=10))
print(f" Kind 1 events: {len(events.to_vec())}")
await client.disconnect()
asyncio.run(main())