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

Почему не работает функция в телеграм боте?

Доброго времени суток! Помогите пожалуйста решить проблему с телеграм-ботом. Суть в том, что бот должен получить картинку от пользователя и сохранить ее. Вот функция

def check_user_photo(bot, update, user_data):
    update.message.reply_text("Обрабатываю фото")
    os.makedirs('downloads', exist_ok=True)                                      
    photo_file = bot.getFile(update.message.photo[-1].file_id) 
    filename = os.path.join('downloads', '{}.jpg'.format(photo_file.file_id))
    photo_file.download(filename)  
    update.message.reply_text("Файл сохранен")

Весь код до команды "filename=os.path.join....." работает, остальные 2 команды после нее нет. То есть файл не загружается в папку downloads, хотя переменная filename не пустая. Лог выдаёт вот это:

Traceback (most recent call last):
File "C:\Users\username\AppData\Local\Programs\Python\Python38-32\lib\site-packages\telegram\ext\dispatcher.py", line 390, in process_update
handler.handle_update(update, self, check, context)
File "C:\Users\username\AppData\Local\Programs\Python\Python38-32\lib\site-packages\telegram\ext\handler.py", line 120, in handle_update
return self.callback(dispatcher.bot, update, **optional_args)
File "C:\Users\username\Documents\Projects\telegram_bot\handlers.py", line 51, in check_user_photo
photo_file.download(filename)
File "C:\Users\username\AppData\Local\Programs\Python\Python38-32\lib\site-packages\telegram\files\file.py", line 126, in download
buf = self.bot.request.retrieve(url, timeout=timeout)
File "C:\Users\username\AppData\Local\Programs\Python\Python38-32\lib\site-packages\telegram\utils\request.py", line 352, in retrieve
return self._request_wrapper('GET', url, **urlopen_kwargs)
File "C:\Users\username\AppData\Local\Programs\Python\Python38-32\lib\site-packages\telegram\utils\request.py", line 231, in _request_wrapper
raise NetworkError('urllib3 HTTPError {0}'.format(error))
telegram.error.NetworkError: urllib3 HTTPError ("hostname 'api.telegram.org' doesn't match either of '*.sibset.ru', 'sibset.ru'",)

а бот создаётся вот так:

bot = Bot(token=settings.TG_TOKEN, base_url=settings.TG_API_URL)
mybot = Updater(bot = bot)
где TG_API_URL= "https://telegg.ru/orig/bot"

Весь вечер голову ломаю, не понимаю почему именно последние 2 строчки кода в функции не работают
  • Вопрос задан
  • 222 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
hottabxp
@hottabxp Куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
telegram.error.NetworkError: urllib3 HTTPError ("hostname 'api.telegram.org' doesn't match either of '*.sibset.ru', 'sibset.ru'",)
может стоит использовать VPN?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
19 дек. 2024, в 02:11
15000 руб./за проект
19 дек. 2024, в 02:09
11000 руб./за проект
19 дек. 2024, в 00:46
30000 руб./за проект