82 lines
2.5 KiB
Python
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())
|