Задать вопрос
@skyspirit

Как исправить код на Python?

 Проблемы 2 (вторая появляется из-за первой):

1 - контроль выгрузки всех изображений. Не могу получить статус, ошибка: telebot.apihelper.ApiTelegramException: A request to the Telegram API was unsuccessful. Error code: 409. Description: Conflict: terminated by other getUpdates request; make sure that only one bot instance is running
"
A request to the Telegram API was unsuccessful. Error code: 409. Description: Conflict: terminated by other getUpdates request; make sure that only one bot instance is running

2. После каждого выгруженного изображения получаю сообщение как об успехе, так и с клавиатурой. Затея дождаться выгрузки всего и получить сообщение об успехе + клавиатура

elif message.photo:
                        # Обработка изображений
                        
                        photo_id = message.photo[-1].file_id

                        try:
                            photo_info = bot.get_file(photo_id)

                            # Получение информации о файле фотографии 
                            #(название может быть None для некоторых типов изображений)
    
                            file_extension=photo_info.file_path.split('.')[-1]
                            if not (file_extension.lower() in ['jpg', 'jpeg', 'png']):
                                raise ValueError(f"Неподдерживаемый формат файла: {file_extension}")

                            directory_img = f'd://Upload/{ufolder}/img/'
  
                            if not os.path.exists(directory_img):
                                os.makedirs(directory_img)
    
                            file_name = f'{photo_id}.{file_extension}'
  
                            filepath = os.path.join(directory_img, file_name)
  
                            downloaded_file = bot.download_file(photo_info.file_path)

                            with open(filepath, 'wb') as new_file:
                                new_file.write(downloaded_file)
                                # Дождаться завершения передачи всех изображений
                            # Дождаться завершения передачи всех изображений
                            
                            
                            saved_photos = []
                            while True:
                                status_updates = bot.get_updates()
                                if len(status_updates) > 0 and status_updates[-1].message.photo is None:
                                    break
                                else:
                                    saved_photos.append(status_updates[-1].message.photo)
                                    time.sleep(1)  # Пример задержки на 1 секунду. Измените значение по необходимости.

                                



                            if len(message.photo) == len(saved_photos):
                                if len(message.photo) > 1:


                                    bot.reply_to(message, f'Изображения успешно сохранены')
                                    keyboard_disk = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True)\
                                    .add(telebot.types.KeyboardButton('Открыть диск'), telebot.types.KeyboardButton('Выгрузить файл'))\
                                    .add(telebot.types.KeyboardButton('Кнопка 3'), telebot.types.KeyboardButton('Назад'))
                                    #keyboard.add(telebot.types.KeyboardButton('Some other button')))
                                    time.sleep(1) # Приостановить программу на 1 секунду
                                

                                    bot.send_message(message.chat.id, "Что Вы хотите сделать далее? \u2615", reply_markup=keyboard_disk)
                                else:
                                    bot.reply_to(message, f'Изображение успешно сохранено')
                                    keyboard_disk = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True)\
                                    .add(telebot.types.KeyboardButton('Открыть диск'), telebot.types.KeyboardButton('Выгрузить файл'))\
                                .add(telebot.types.KeyboardButton('Кнопка 3'), telebot.types.KeyboardButton('Назад'))
                                #keyboard.add(telebot.types.KeyboardButton('Some other button')))
                                time.sleep(1) # Приостановить программу на 1 секунду
                                bot.send_message(message.chat.id, "Что Вы хотите сделать далее? \u2615", reply_markup=keyboard_disk)
                        except Exception as e:
                            print(e)  # обработка ошибки
  • Вопрос задан
  • 680 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
Сейчас запущено два бота с одним токеном одновременно либо, как вариант, что-то идёт не так при запросе, и бот делает второй-третий-четвёртый запрос getUpdates слишком часто. Но я думаю что скорее всего первый вариант, ибо это довольно частая ошибка новичков.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы