Skip to content

Commit f11da0a

Browse files
committed
fix conversation hanging other handlers issue, critical bug, v1.5.9
1 parent 7406224 commit f11da0a

File tree

2 files changed

+29
-10
lines changed

2 files changed

+29
-10
lines changed

telegram/const.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88

99
const (
1010
ApiVersion = 204
11-
Version = "v1.5.8"
11+
Version = "v1.5.9"
1212

1313
LogDebug = utils.DebugLevel
1414
LogInfo = utils.InfoLevel

telegram/conversation.go

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,12 @@ func (c *Conversation) ReplyMedia(media InputMedia, opts ...*MediaOptions) (*New
8888
func (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) {
125129
func (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) {
161169
func (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) {
207219
func (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

Comments
 (0)