@@ -140,71 +140,18 @@ static async Task Main()
140140 ParseWhoResponse ( ctx , line ) ;
141141 }
142142
143- // Capture ChanServ/SpamServ NOTICE replies (sent to bot nick for service requests)
144- if ( line . Contains ( "NOTICE" ) && ( line . Contains ( "ChanServ" ) || line . Contains ( "SpamServ" ) ) && ctx . PendingServiceRequests . Count > 0 )
143+ // Forward ChanServ/SpamServ NOTICE messages directly to Discord
144+ if ( line . Contains ( "NOTICE" ) && ( line . Contains ( "ChanServ" ) || line . Contains ( "SpamServ" ) ) )
145145 {
146146 string noticeContent = MessageParser . GetMessage ( line ) ;
147147 if ( ! string . IsNullOrWhiteSpace ( noticeContent ) )
148148 {
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- }
162-
163- ctx . Logger ? . Log ( $ "[SERVICE] Buffering response to { ctx . PendingServiceRequests . Count } active request(s): { noticeContent } ") ;
149+ ctx . Logger ? . Log ( $ "[SERVICE NOTICE] { noticeContent } ") ;
150+ await ctx . Discord ? . SendMessage ( $ "[SERVICE] { noticeContent } ") ;
164151 }
165152 continue ;
166153 }
167154
168- // Check for timed-out service responses (2 second timeout)
169- const int timeoutMs = 2000 ;
170- var expiredRequests = ctx . ServiceResponseTimeouts
171- . Where ( kvp => ( DateTime . UtcNow - kvp . Value ) . TotalMilliseconds > timeoutMs )
172- . Select ( kvp => kvp . Key )
173- . ToList ( ) ;
174-
175- foreach ( var requestId in expiredRequests )
176- {
177- if ( ctx . PendingServiceRequests . TryGetValue ( requestId , out var requestInfo ) &&
178- ctx . ServiceResponseBuffer . TryGetValue ( requestId , out var responses ) &&
179- responses . Count > 0 )
180- {
181- string requesterNick = requestInfo . RequesterNick ;
182- bool isDiscord = requestInfo . IsDiscord ;
183-
184- ctx . Logger ? . Log ( $ "[SERVICE TIMEOUT] Request { requestId } complete: { responses . Count } lines for { requesterNick } ") ;
185-
186- string fullResponse = string . Join ( "\n " , responses ) ;
187-
188- if ( isDiscord )
189- {
190- ctx . Logger ? . Log ( $ "[SERVICE RELAY] Sending to Discord for { requesterNick } ...") ;
191- await ctx . Discord ? . SendMessage ( $ "**{ requesterNick } **:\n ```\n { fullResponse } \n ```") ;
192- }
193- else
194- {
195- foreach ( var resp in responses )
196- {
197- writer . WriteLine ( $ "PRIVMSG { ctx . Channel } :{ resp } ") ;
198- }
199- }
200-
201- // Clean up this specific request
202- ctx . PendingServiceRequests . Remove ( requestId ) ;
203- ctx . ServiceResponseBuffer . Remove ( requestId ) ;
204- ctx . ServiceResponseTimeouts . Remove ( requestId ) ;
205- }
206- }
207-
208155 if ( line . Contains ( " QUIT " ) )
209156 {
210157 string quitter = MessageParser . GetNick ( line ) ;
0 commit comments