diff --git a/lnbits/core/services/users.py b/lnbits/core/services/users.py index 412d0373..d21a8aff 100644 --- a/lnbits/core/services/users.py +++ b/lnbits/core/services/users.py @@ -268,42 +268,32 @@ async def _create_default_pay_link(account: Account, wallet) -> None: async def _publish_nostr_metadata_event(account: Account) -> None: """Publish a Nostr kind 0 metadata event for a new user""" - try: - import importlib - import sys - import secp256k1 + import coincurve - # Note: We publish directly to nostrrelay database, no need to get relay URLs + from lnbits.utils.nostr import sign_event - # Create Nostr kind 0 metadata event - metadata = { - "name": account.username, - "display_name": account.username, - "about": f"LNbits user: {account.username}", - } + # Create Nostr kind 0 metadata event + metadata = { + "name": account.username, + "display_name": account.username, + "about": f"LNbits user: {account.username}", + } - event = { - "kind": 0, - "created_at": int(time.time()), - "tags": [], - "content": json.dumps(metadata), - } + event = { + "kind": 0, + "created_at": int(time.time()), + "tags": [], + "content": json.dumps(metadata), + } - # Sign the event using LNbits utilities - from lnbits.utils.nostr import sign_event + # Convert hex private key to coincurve PrivateKey + private_key = coincurve.PrivateKey(bytes.fromhex(account.prvkey)) - # Convert hex private key to secp256k1 PrivateKey - private_key = secp256k1.PrivateKey(bytes.fromhex(account.prvkey)) + # Sign the event + signed_event = sign_event(event, account.pubkey, private_key) - # Sign the event - signed_event = sign_event(event, account.pubkey, private_key) - - # Publish directly to nostrrelay database (hacky but works around WebSocket issues) - await _insert_event_into_nostrrelay(signed_event, account.username) - - except Exception as e: - logger.error(f"Failed to publish Nostr metadata event: {e}") - # Don't raise - we don't want user creation to fail if Nostr publishing fails + # Publish directly to nostrrelay database (hacky but works around WebSocket issues) + await _insert_event_into_nostrrelay(signed_event, account.username) async def _insert_event_into_nostrrelay(event: dict, username: str) -> None: