Skip to content

Commit 74c1100

Browse files
committed
Handle all 403s
1 parent 6cccb27 commit 74c1100

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

handler/check.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,9 @@ func (h Handler) check() error {
133133
func (h Handler) sendText(subscriber int64, text string, sendOptions *telebot.SendOptions) error {
134134
_, err := h.Bot.Send(telebot.ChatID(subscriber), text, sendOptions)
135135

136+
var telebotError *telebot.Error
137+
var floodError *telebot.FloodError
138+
136139
if err != nil {
137140
if errors.Is(err, telebot.ErrChatNotFound) {
138141
log.Printf("Chat %d not found, will be deleted", subscriber)
@@ -143,11 +146,16 @@ func (h Handler) sendText(subscriber int64, text string, sendOptions *telebot.Se
143146
h.DB.Subscribers.Delete(subscriber)
144147
h.DB.Subscribers.Create(migratedTo)
145148
return h.sendText(migratedTo, text, sendOptions)
146-
} else if errors.As(err, &telebot.FloodError{}) {
147-
retryAfter := err.(telebot.FloodError).RetryAfter
149+
} else if errors.As(err, floodError) {
150+
retryAfter := floodError.RetryAfter
148151
log.Printf("%d: Flood error, retrying after: %d seconds", subscriber, retryAfter)
149152
time.Sleep(time.Duration(retryAfter) * time.Second)
150153
h.sendText(subscriber, text, sendOptions)
154+
} else if errors.As(err, &telebotError) {
155+
if telebotError.Code == 403 {
156+
log.Printf("%d: %s, will be removed", subscriber, telebotError.Description)
157+
h.DB.Subscribers.Delete(subscriber)
158+
}
151159
} else {
152160
return err
153161
}

0 commit comments

Comments
 (0)