Не работает метод EditBytesMessageMediaRequest
Задача была использовать метод EditBytesMessageMediaRequest для замены фотографии в ранее отправленном сообщении.
def edit_bytes():
with tg_methods.SyncTgClient.setup(token):
with open('1.jpeg', 'rb') as f:
jpg_sample_bytes = f.read()
tg_request = tg_methods.EditBytesMessageMediaRequest(
chat_id=chat_id,
message_id=message_id,
media=tg_types.InputMediaBytesPhoto(media_content=jpg_sample_bytes, media='attach://1.jpeg'),
)
tg_response = tg_request.send()
Такой код проходит валидацию pydantic, но сервер тг его не принимает.
Bad Request: can't parse InputMedia: media not found
Проблема в том, что должна быть такая схема
data = {
"chat_id": CHAT_ID,
"message_id": MESSAGE_ID,
"media": media_json
}
media = {
"type": "photo",
"media": "attach://new_photo"
}
files = {
"new_photo": open(PHOTO_PATH, "rb")
}
но имеющий код даёт такой результат
data = {
"chat_id": CHAT_ID,
"message_id": MESSAGE_ID,
"media": media_json
}
media = {
"type": "photo",
"media": "attach://new_photo"
}
files = {
"attach://new_photo": open(PHOTO_PATH, "rb")
}
разница в ключе дикта files
следюущий быстрофикс для проверки в tg_methods:1080 помог
# files = {self.media.media: media_bytes}
filename = self.media.media.replace('attach://', '')
files = {filename: media_bytes}
Edited by Ghost User