+ case len(message.Photo) > 0 || message.Document != nil:
+ text, err := telegramImageText(ctx, b.api, l.agent.Images(), message)
+ if err != nil {
+ retry, _ := telegramRetryable(err)
+ if retry {
+ return fmt.Errorf("receive image: %w", err)
+ }
+
+ switch {
+ case errors.Is(err, errTelegramOtherMedia):
+ b.notice(telegramTextOnly)
+ case errors.Is(err, errImageSize), errors.Is(err, errImageFormat), errors.Is(err, errTelegramPhotoSize):
+ b.notice(err.Error())
+ default:
+ var answer *TelegramError
+
+ if !errors.As(err, &answer) {
+ return fmt.Errorf("receive Telegram image: %w", err)
+ }
+
+ b.notice("Cannot download image.")
+ }
+
+ return nil
+ }
+
+ _, err = l.Submit(telegramSource, text)
+ if err != nil {
+ return fmt.Errorf("submit Telegram image: %w", err)
+ }
+
+ err = l.Flush(context.WithoutCancel(ctx))
+ if err != nil {
+ return fmt.Errorf("flush Telegram image: %w", err)
+ }