4
4
5
5
use Amp \Websocket \Client \WebsocketConnection ;
6
6
use Amp \Websocket \Client \WebsocketHandshake ;
7
+ use Monolog \Formatter \LineFormatter ;
7
8
use Monolog \Handler \StreamHandler ;
8
9
use Monolog \Logger ;
9
10
use Revolt \EventLoop ;
15
16
16
17
function disco (int $ gatewayIntents , string $ botToken , string $ botName ) {
17
18
$ logger = new Logger ('disco ' );
18
- $ logger ->pushHandler (new StreamHandler ('php://stdout ' ));
19
+ $ handler = new StreamHandler ('php://stdout ' );
20
+ $ handler ->setFormatter (new LineFormatter (null , null , false , true ));
21
+ $ logger ->pushHandler ($ handler );
19
22
$ handshake = new WebsocketHandshake (GATEWAY ::JSON ->value );
20
23
21
24
try {
@@ -27,9 +30,12 @@ function disco(int $gatewayIntents, string $botToken, string $botName) {
27
30
$ parsed = json_decode ($ payload );
28
31
29
32
// debug payload
30
- print_r ($ parsed );
33
+ // print_r($parsed);
31
34
32
35
switch ($ parsed ->op ) {
36
+ case OPCODE ::zero->value :
37
+ if ($ parsed ->t === 'MESSAGE_CREATE ' ) handleMessage ($ logger , $ parsed );
38
+ break ;
33
39
case OPCODE ::ten->value :
34
40
handleHeartbeat ($ conn , $ logger , $ parsed );
35
41
handleIdentify ($ conn , $ logger , $ gatewayIntents , $ botToken , $ botName );
@@ -47,6 +53,12 @@ function disco(int $gatewayIntents, string $botToken, string $botName) {
47
53
EventLoop::run ();
48
54
}
49
55
56
+ function handleMessage (Logger $ logger , object $ parsed ) {
57
+ $ sender = $ parsed ->d ->author ->global_name ;
58
+ $ content = $ parsed ->d ->content ;
59
+ $ logger ->notice ($ sender . ': ' . $ content );
60
+ }
61
+
50
62
function handleHeartbeat (WebsocketConnection $ conn , Logger $ logger , object $ parsed ): void {
51
63
$ interval = $ parsed ->d ->heartbeat_interval ;
52
64
$ jitter = mt_rand () / mt_getrandmax ();
0 commit comments