Получение изображений профиля пользователя с помощью pyTelegramBotAPI (JSON) - PullRequest
1 голос
/ 14 июля 2020

Вот мой код (Python):

import telebot
import time
import json

bot_token = "..."
bot = telebot.TeleBot(token=bot_token)

@bot.message_handler(commands=['myphoto'])
def send_welcome(message):
    number = bot.get_user_profile_photos(message.from_user.id)
    njson = json.loads(number)
    nlist = njson['photos']
    bot.reply_to(message, nlist[0].file_size)

while True:
    try:
        bot.polling(none_stop=True)

    except Exception as e:
        logger.error(e)  # or just print(e) if you don't have logger,
        # or import traceback; traceback.print_exc() for print full info
        time.sleep(15)

Здесь результат JSON, содержащий массив с изображениями профиля моей учетной записи Telegram ( это результат переменная "число" в моем коде ):

{'total_count': 2, 'photos': [[<telebot.types.PhotoSize object at
0x7fc0fd9069a0>, <telebot.types.PhotoSize object at 0x7fc0fd906970>,
<telebot.types.PhotoSize object at 0x7fc0fd906a30>],
[<telebot.types.PhotoSize object at 0x7fc0fd906550>,
<telebot.types.PhotoSize object at 0x7fc0fd906eb0>,
<telebot.types.PhotoSize object at 0x7fc0fd906790>]]}

А вот задействованные классы из pyTelegramBotAPI ссылка

Но печать переменная n json или nlist [0] ничего не показывает. В чем проблема? Я хочу получить file_id одного объекта PhotoSize внутри этого массива (выполняя photosizeName.file_id , поэтому я могу загрузить изображение с помощью обычного API Telegram по умолчанию).

1 Ответ

2 голосов
/ 14 июля 2020

Если вы внимательно на это обратите внимание:

{'total_count': 2, 'photos': [[<telebot.types.PhotoSize object at
0x7fc0fd9069a0>, <telebot.types.PhotoSize object at 0x7fc0fd906970>,
<telebot.types.PhotoSize object at 0x7fc0fd906a30>],
[<telebot.types.PhotoSize object at 0x7fc0fd906550>,
<telebot.types.PhotoSize object at 0x7fc0fd906eb0>,
<telebot.types.PhotoSize object at 0x7fc0fd906790>]]}

фото - это массив массивов. photos [0] - это список, тогда вам нужно go на уровень глубже и выбрать один из его файлов, как это фото [0] [0].

В любом случае вам следует добавить больше информации , ваша программа выдает ошибку?

...