@@ -88,8 +88,12 @@ func (c *Conversation) ReplyMedia(media InputMedia, opts ...*MediaOptions) (*New
8888func (c * Conversation ) GetResponse () (* NewMessage , error ) {
8989 resp := make (chan * NewMessage , 1 )
9090 waitFunc := func (m * NewMessage ) error {
91- resp <- m
92- c .lastMsg = m
91+ select {
92+ case resp <- m :
93+ c .lastMsg = m
94+ default :
95+ }
96+
9397 if c .stopPropagation {
9498 return EndGroup
9599 }
@@ -125,8 +129,12 @@ func (c *Conversation) GetResponse() (*NewMessage, error) {
125129func (c * Conversation ) GetEdit () (* NewMessage , error ) {
126130 resp := make (chan * NewMessage )
127131 waitFunc := func (m * NewMessage ) error {
128- resp <- m
129- c .lastMsg = m
132+ select {
133+ case resp <- m :
134+ c .lastMsg = m
135+ default :
136+ }
137+
130138 if c .stopPropagation {
131139 return EndGroup
132140 }
@@ -161,8 +169,12 @@ func (c *Conversation) GetEdit() (*NewMessage, error) {
161169func (c * Conversation ) GetReply () (* NewMessage , error ) {
162170 resp := make (chan * NewMessage )
163171 waitFunc := func (m * NewMessage ) error {
164- resp <- m
165- c .lastMsg = m
172+ select {
173+ case resp <- m :
174+ c .lastMsg = m
175+ default :
176+ }
177+
166178 if c .stopPropagation {
167179 return EndGroup
168180 }
@@ -207,7 +219,11 @@ func (c *Conversation) MarkRead() (*MessagesAffectedMessages, error) {
207219func (c * Conversation ) WaitEvent (ev Update ) (Update , error ) {
208220 resp := make (chan Update )
209221 waitFunc := func (u Update , c * Client ) error {
210- resp <- u
222+ select {
223+ case resp <- u :
224+ default :
225+ }
226+
211227 return nil
212228 }
213229
@@ -228,7 +244,10 @@ func (c *Conversation) WaitRead() (*UpdateReadChannelInbox, error) {
228244 waitFunc := func (u Update ) error {
229245 switch v := u .(type ) {
230246 case * UpdateReadChannelInbox :
231- resp <- v
247+ select {
248+ case resp <- v :
249+ default :
250+ }
232251 }
233252
234253 return nil
@@ -251,7 +270,7 @@ func (c *Conversation) removeHandle(h Handle) {
251270 for i , v := range c .openHandlers {
252271 if v == h {
253272 c .openHandlers = slices .Delete (c .openHandlers , i , i + 1 )
254- return
273+ break
255274 }
256275 }
257276 c .Client .removeHandle (h )
0 commit comments