библиотека python-telegram : tg.call_method Ошибка setProfilePhoto: 400. «Входной файл не указан»

#python #telegram #tdlib

Вопрос:

Я пытаюсь использовать python-telegram библиотеку : https://github.com/alexander-akhmetov/python-telegram/

Помогите мне понять, как отправить InputChatPhoto на сервер в моем запросе tg.call_method:

 from telegram.client import Telegram
import base64
import json

class InputChatPhoto:
    def __init__(self, name="photo.jpg"):
        image = open(name, 'rb')
        encoded_image = base64.b64encode(image.read())
        self.photo = encoded_image.decode("ascii")

tg = Telegram(
    api_id=123,
    api_hash='12312',
    phone=' 799999999',  # you can pass 'bot_token' instead
    database_encryption_key='changekey123',
)
tg.login()
result = tg.get_authorization_state()
result.wait()
print("AUTH: ",  result.update)

image = InputChatPhoto()
print(type(image))
result = tg.call_method(method_name="setProfilePhoto", 
                        params={"photo":{ 
                                         "@type":"inputChatPhotoStatic",
                                         "photo_":{
                                                  "@type": "inputFileLocal",
                                                  "path_": "home/usr/photo.jpg"
                                                 }
                                        }
                                })
result.wait()

print(result.update)
print(result.ok_received) # False
print(result.error_info)
# {'@type': 'error', 'code': 400, 'message': 'InputFile is not specified', '@extra': 
# {'request_id': '15f855f9662f4b3c9bd22dc43ef0482b'}} 
print(result.error) # True

tg.stop()  # you must call stop at the end of the script
 

Я пытался отправить необработанные байты — не получилось. Получено сообщение: «ожидайте, что объект TDLib получит строку»

Я попытался отправить inputFileRemote — тоже не сработало. Получена та же ошибка: «Входной файл не указан»

Как я должен указать? В классе документации inputFileLocal содержит только path_ поле. inputFileRemote содержит id_ то, что я указал, но все равно не годится 🙁