@@ -155,39 +155,38 @@ static async Task Main()
155155
156156 ctx . ServiceResponseBuffer [ lastRequest . Key ] . Add ( noticeContent ) ;
157157 ctx . Logger ? . Log ( $ "[CHANSERV] Buffering response: { noticeContent } ") ;
158- }
159- }
160- continue ;
161- }
162-
163- // Check if we've received "end of response" from ChanServ (blank line or end marker)
164- if ( ctx . PendingServiceRequests . Count > 0 && ! line . Contains ( "NOTICE" ) && ! line . Contains ( "ChanServ" ) )
165- {
166- // Send accumulated responses
167- var lastRequest = ctx . PendingServiceRequests . LastOrDefault ( ) ;
168- if ( lastRequest . Key != null && ctx . ServiceResponseBuffer . ContainsKey ( lastRequest . Key ) )
169- {
170- var responses = ctx . ServiceResponseBuffer [ lastRequest . Key ] ;
171- if ( responses . Count > 0 && ctx . GetServiceRequest ( lastRequest . Key , out string requesterNick , out bool isDiscord ) )
172- {
173- string fullResponse = string . Join ( "\n " , responses ) ;
174- ctx . Logger ? . Log ( $ "[CHANSERV RELAY] Sending { responses . Count } lines to { ( isDiscord ? "Discord" : "IRC" ) } ") ;
175158
176- if ( isDiscord )
177- {
178- await ctx . Discord ? . SendMessage ( $ "** { requesterNick } ** banlist: \n ``` \n { fullResponse } \n ```" ) ;
179- }
180- else
159+ // Check for end markers: "None" or "Found X matches."
160+ bool isEndMarker = noticeContent . Equals ( "None" , StringComparison . OrdinalIgnoreCase ) ||
161+ noticeContent . StartsWith ( "Found " , StringComparison . OrdinalIgnoreCase ) ;
162+
163+ if ( isEndMarker )
181164 {
182- foreach ( var resp in responses )
165+ // End of ChanServ response - send accumulated responses
166+ var responses = ctx . ServiceResponseBuffer [ lastRequest . Key ] ;
167+ if ( responses . Count > 0 && ctx . GetServiceRequest ( lastRequest . Key , out string requesterNick , out bool isDiscord ) )
183168 {
184- writer . WriteLine ( $ "PRIVMSG { ctx . Channel } :{ resp } ") ;
169+ string fullResponse = string . Join ( "\n " , responses ) ;
170+ ctx . Logger ? . Log ( $ "[CHANSERV RELAY] Sending { responses . Count } lines to { ( isDiscord ? "Discord" : "IRC" ) } ") ;
171+
172+ if ( isDiscord )
173+ {
174+ await ctx . Discord ? . SendMessage ( $ "**{ requesterNick } ** banlist:\n ```\n { fullResponse } \n ```") ;
175+ }
176+ else
177+ {
178+ foreach ( var resp in responses )
179+ {
180+ writer . WriteLine ( $ "PRIVMSG { ctx . Channel } :{ resp } ") ;
181+ }
182+ }
183+
184+ ctx . ServiceResponseBuffer . Remove ( lastRequest . Key ) ;
185185 }
186186 }
187-
188- ctx . ServiceResponseBuffer . Remove ( lastRequest . Key ) ;
189187 }
190188 }
189+ continue ;
191190 }
192191
193192 if ( line . Contains ( " QUIT " ) )
0 commit comments