@@ -11,12 +11,12 @@ use tokio_tungstenite::{
11
11
tungstenite:: { self , error:: ProtocolError , http:: Uri , protocol:: WebSocketConfig } ,
12
12
MaybeTlsStream ,
13
13
} ;
14
- use tracing:: { debug , error, trace , warn} ;
14
+ use tracing:: { error, info , warn} ;
15
15
use twitch_api:: {
16
16
eventsub:: {
17
17
channel:: { ChannelChatMessageV1 , ChannelChatMessageV1Payload } ,
18
18
stream:: { StreamOfflineV1 , StreamOnlineV1 } ,
19
- Event , EventsubWebsocketData , Payload , ReconnectPayload , SessionData , Transport ,
19
+ Event , EventsubWebsocketData , Message , Payload , ReconnectPayload , SessionData , Transport ,
20
20
WelcomePayload ,
21
21
} ,
22
22
helix:: chat:: { SendChatMessageBody , SendChatMessageRequest } ,
@@ -25,6 +25,8 @@ use twitch_api::{
25
25
HelixClient ,
26
26
} ;
27
27
28
+ use crate :: twitch:: StreamInfo ;
29
+
28
30
type WebSocketStream = tokio_tungstenite:: WebSocketStream < MaybeTlsStream < TcpStream > > ;
29
31
30
32
pub struct EventSubClient {
@@ -173,14 +175,46 @@ impl EventSubClient {
173
175
tx : mpsc:: Sender < ChannelChatMessageV1Payload > ,
174
176
) -> Result < ( ) > {
175
177
match event {
176
- Event :: StreamOnlineV1 ( Payload { message, .. } ) => {
177
- debug ! ( ?message, "got stream.online event" ) ;
178
+ Event :: StreamOnlineV1 ( Payload {
179
+ message : Message :: Notification ( message) ,
180
+ ..
181
+ } ) => {
182
+ let get_info = || async {
183
+ let token = self . token . get ( & self . client ) . await . ok ( ) ?;
184
+ let stream = self
185
+ . client
186
+ . get_streams_from_ids ( & [ & message. broadcaster_user_id ] [ ..] . into ( ) , & * token)
187
+ . next ( )
188
+ . await ?
189
+ . ok ( ) ?;
190
+
191
+ StreamInfo :: try_from ( stream) . ok ( )
192
+ } ;
193
+
194
+ if let Some ( info) = get_info ( ) . await {
195
+ info ! (
196
+ info. id,
197
+ %info. started_at,
198
+ info. title,
199
+ info. category,
200
+ "streamer started streaming" ,
201
+ ) ;
202
+ } else {
203
+ info ! (
204
+ info. id = message. id,
205
+ info. started_at = %message. started_at,
206
+ "streamer started streaming" ,
207
+ ) ;
208
+ }
178
209
}
179
- Event :: StreamOfflineV1 ( Payload { message, .. } ) => {
180
- debug ! ( ?message, "got stream.offline event" ) ;
210
+ Event :: StreamOfflineV1 ( Payload {
211
+ message : Message :: Notification ( _) ,
212
+ ..
213
+ } ) => {
214
+ info ! ( "streamer stopped streaming" ) ;
181
215
}
182
216
Event :: ChannelChatMessageV1 ( Payload {
183
- message : twitch_api :: eventsub :: Message :: Notification ( message) ,
217
+ message : Message :: Notification ( message) ,
184
218
..
185
219
} ) => {
186
220
if message. chatter_user_id != self . user_id {
0 commit comments