Yes, lots of work in progress 😃 Just poke me if you're missing something in the library that you need.

https://nostr-php.dev

Reply to this note

Please Login to reply.

Discussion

I think the CLI is broken.

I've gotten it to write my 30041 events, but it keeps complaining that the $json in Relay.php must be of type string.

But it is a string. 🤷‍♀️

Could you share a snippet of your code of command? I'm debugging the CLI atm which could be broken indeed after the last minor version upgrade.

include_once(__DIR__.'/vendor/autoload.php');

use swentel\nostr\Event\Event;

use swentel\nostr\Message\EventMessage;

use swentel\nostr\Relay\Relay;

use swentel\nostr\Sign\Sign;

$private_key = file_get_contents("private/nostr-private.key");

$note = new Event();

$note->setContent('30041 event test 2');

$note->setKind(30041);

$note->setTags([

['d', 'test-title'],

['title', 'This is the test title for 30041 2'],

]);

$signer = new Sign();

$signer->signEvent($note, $private_key);

$eventMessage = new EventMessage($note);

$relayUrl = "wss://theforest.nostr1.com";

$relay = new Relay($relayUrl);

$relay->setMessage($eventMessage);

$result = $relay->send();

But it also gave me this

PHP Fatal error: Uncaught TypeError: json_decode(): Argument #1 ($json) must be of type string, WebSocket\Message\Text given in /home/.../vendor/swentel/nostr-php/src/Relay/Relay.php:90

Stack trace:

#0 /home/.../vendor/swentel/nostr-php/src/Relay/Relay.php(90): json_decode()

#1 /home/.../create30041Event.php(28): swentel\nostr\Relay\Relay->send()

#2 {main}

thrown in /home/.../vendor/swentel/nostr-php/src/Relay/Relay.php on line 90

Found it, fixing it and will push a new release asap with the fix.

Might want to see if the tests aren't broken, as well. They seem to be having trouble resolving the Key namespace.

Here's what happened with the CLI.

$ bin/nostr-php --content "Test of CLI" --key /home/.../nostr-private.key --relay wss://theforest.nostr1.com

PHP Fatal error: Uncaught Error: Typed property swentel\nostr\Relay\Relay::$payload must not be accessed before initialization in /home/.../nostr-php/src/Relay/Relay.php:87

Stack trace:

#0 /home/.../nostr-php/src/Application/Client.php(85): swentel\nostr\Relay\Relay->send()

#1 /home/.../nostr-php/bin/nostr-php(47): swentel\nostr\Application\Client->run()

#2 {main}

thrown in /home/.../nostr-php/src/Relay/Relay.php on line 87

Fixed / new release is out.

https://github.com/nostrver-se/nostr-php/releases/tag/1.3.3

$ bin/nostr-php --content "Hello world! Testing this fix" --key privkey --relay wss://nostr.sebastix.dev

Send to Nostr!

Still getting the string error on the $json with the full script using swentel\nostr\Relay\Relay

Switched to RelaySet and it seems to work, but it hangs after writing and throws a fatal error.

PHP Fatal error: Uncaught WebSocket\Exception\ConnectionClosedException: Connection has unexpectedly closed in /home/.../vendor/phrity/websocket/src/Connection.php:374

I didn't have access to a relay. Works now.