Как получить access_hash и file_reference для createStickerSet в Telegram?

в моем коде ниже:

  sticer = "0.webm"


  upload_sticker = await client.upload_file(sticker)

  my_Stickers = InputStickerSetItem(document=InputDocument(id=upload_sticker.id,access_hash=upload_sticker.access_hash,file_reference=upload_sticker.file_reference),emoji = "💀")


  result = await client(CreateStickerSetRequest(user_id=user, title = "testset", short_name = "jjkakschan_by_cool_bot", stickers=[my_Stickers]))

Я пытаюсь получить access_hash и file_reference, но не знаю, что их возвращает.

У меня есть веб-файлы в правильном формате и кодировке, и я хочу создать набор видеостикеров, используя их, здесь я использовал только 1 для демонстрации.

мой вопрос: получу ли я хэш доступа и ссылку на загруженные мной веб-файлы?

client.upload возвращает только:

InputFile(id=-67133921635690008, parts=1, name='0.webm', md5_checksum='5188d68feebc242395e98819582bac29')

но я считаю, что мне нужен InputDocument

Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Привет, люди RPA, это снова я и я несу подарки! В очередном моем приключении о том, как создавать ботов для облегчения рутины. Вот, думаю, стоит...
1
0
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

file_reference — это временная случайная строка байтов, используемая для доступа к медиафайлам (например, для загрузки). Это означает, что медиафайл должен был быть отправлен или сохранен ранее, и вы получили к нему доступ (скорее всего) через сообщение.

Если носитель не установлен, вам нужно использовать конструкторы InputMedia с Uploaded в их имени. Их всего два: InputMediaUploadedDocument и InputMediaUploadedPhoto.

Фотографии предназначены только для файлов изображений, которые будут сжаты сервером.

Итак, у вас остается всего InputMediaUploadedDocument. И это то, что вы должны создать, поскольку в качестве параметра он принимает InputFile.

InputMediaUploadedDocument(file=input_file, mime_type='application/octet-stream', attributes=[])`

Отрегулируйте по мере необходимости.

Чтобы перейти от загруженного документа к документу, вы должны загрузить носитель (а не файл, который вы уже загрузили) с помощью UploadMediaRequest.

Скорее всего, это вернет MessageMediaDocument , который вы можете использовать с utils.get_input_media.

Это очень запутанно, но именно так работает API.

Мне не пришлось использовать utils.get_input_media в моем случае, все, что мне нужно было сделать, это использовать res2 = await client(UploadMediaRequest(peer=user, media=media)) с носителем как InputMediaUploadedDocument, и я получил Document , который хотел!

sutaro rem 25.05.2024 22:38

Другие вопросы по теме