@@ -141,23 +141,26 @@ static async Task Main()
141141 }
142142
143143 // Capture ChanServ/SpamServ NOTICE replies (sent to bot nick for service requests)
144- if ( line . Contains ( "NOTICE" ) && ( line . Contains ( "ChanServ" ) || line . Contains ( "SpamServ" ) ) && ! string . IsNullOrWhiteSpace ( ctx . CurrentServiceRequestId ) )
144+ if ( line . Contains ( "NOTICE" ) && ( line . Contains ( "ChanServ" ) || line . Contains ( "SpamServ" ) ) && ctx . PendingServiceRequests . Count > 0 )
145145 {
146146 string noticeContent = MessageParser . GetMessage ( line ) ;
147147 if ( ! string . IsNullOrWhiteSpace ( noticeContent ) )
148148 {
149- string requestId = ctx . CurrentServiceRequestId ;
150-
151- // Initialize buffer if needed
152- if ( ! ctx . ServiceResponseBuffer . ContainsKey ( requestId ) )
153- ctx . ServiceResponseBuffer [ requestId ] = new System . Collections . Generic . List < string > ( ) ;
154-
155- // Add to buffer
156- ctx . ServiceResponseBuffer [ requestId ] . Add ( noticeContent ) ;
157- ctx . Logger ? . Log ( $ "[SERVICE] Buffering response ({ ctx . ServiceResponseBuffer [ requestId ] . Count } lines): { noticeContent } ") ;
149+ // Append to ALL active request buffers (ChanServ replies are sequential)
150+ foreach ( var requestId in ctx . PendingServiceRequests . Keys . ToList ( ) )
151+ {
152+ // Initialize buffer if needed
153+ if ( ! ctx . ServiceResponseBuffer . ContainsKey ( requestId ) )
154+ ctx . ServiceResponseBuffer [ requestId ] = new System . Collections . Generic . List < string > ( ) ;
155+
156+ // Add to buffer
157+ ctx . ServiceResponseBuffer [ requestId ] . Add ( noticeContent ) ;
158+
159+ // Update timeout for this request
160+ ctx . ServiceResponseTimeouts [ requestId ] = DateTime . UtcNow ;
161+ }
158162
159- // Reset timeout - update last received time
160- ctx . ServiceResponseTimeouts [ requestId ] = DateTime . UtcNow ;
163+ ctx . Logger ? . Log ( $ "[SERVICE] Buffering response to { ctx . PendingServiceRequests . Count } active request(s): { noticeContent } ") ;
161164 }
162165 continue ;
163166 }
@@ -178,13 +181,13 @@ static async Task Main()
178181 string requesterNick = requestInfo . RequesterNick ;
179182 bool isDiscord = requestInfo . IsDiscord ;
180183
181- ctx . Logger ? . Log ( $ "[SERVICE TIMEOUT] Response complete: { responses . Count } lines for { requesterNick } ") ;
184+ ctx . Logger ? . Log ( $ "[SERVICE TIMEOUT] Request { requestId } complete: { responses . Count } lines for { requesterNick } ") ;
182185
183186 string fullResponse = string . Join ( "\n " , responses ) ;
184187
185188 if ( isDiscord )
186189 {
187- ctx . Logger ? . Log ( $ "[SERVICE RELAY] Sending to Discord...") ;
190+ ctx . Logger ? . Log ( $ "[SERVICE RELAY] Sending to Discord for { requesterNick } ...") ;
188191 await ctx . Discord ? . SendMessage ( $ "**{ requesterNick } **:\n ```\n { fullResponse } \n ```") ;
189192 }
190193 else
@@ -195,11 +198,10 @@ static async Task Main()
195198 }
196199 }
197200
198- // Clean up
201+ // Clean up this specific request
199202 ctx . PendingServiceRequests . Remove ( requestId ) ;
200203 ctx . ServiceResponseBuffer . Remove ( requestId ) ;
201204 ctx . ServiceResponseTimeouts . Remove ( requestId ) ;
202- ctx . CurrentServiceRequestId = null ;
203205 }
204206 }
205207
0 commit comments