You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Telegram创建贴纸集:如何获取access_hash与file_reference参数

如何获取WebM视频贴纸的access_hash和file_reference?

我想用格式和编码正确的WebM文件创建视频贴纸集,代码示例如下:

sticker = "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]
))

构建InputDocument需要access_hash和file_reference参数,但client.upload_file仅返回InputFile类型数据(示例:InputFile(id=-67133921635690008, parts=1, name='0.webm', md5_checksum='5188d68feebc242395e98819582bac29')),请问该如何获取上传WebM文件对应的这两个参数?


解决方法

client.upload_file返回的InputFile是临时上传凭证,不包含access_hash和file_reference——这两个参数属于永久存储的Document对象,需要将临时文件转为永久存储后才能获取。

有两种常用实现方式:

方式1:发送文件到聊天提取Document

把上传的文件发送到任意聊天(比如自己的账号、私密对话),从返回的消息媒体中直接提取参数:

sticker_path = "0.webm"
# 发送文件到自己的聊天(替换为你的user_id或目标聊天ID)
message = await client.send_file("me", sticker_path)
# 从消息中获取永久存储的Document对象
document = message.media.document
# 提取所需参数
doc_id = document.id
doc_access_hash = document.access_hash
doc_file_reference = document.file_reference

# 构建InputDocument并创建贴纸集
my_sticker = InputStickerSetItem(
    document=InputDocument(id=doc_id, access_hash=doc_access_hash, file_reference=doc_file_reference),
    emoji="💀"
)
result = await client(CreateStickerSetRequest(
    user_id=user,
    title="testset",
    short_name="jjkakschan_by_cool_bot",
    stickers=[my_sticker]
))

方式2:直接调用save_file方法转为永久Document

使用Telethon的client.save_file方法,将临时InputFile直接转为永久存储的Document:

sticker_path = "0.webm"
uploaded_file = await client.upload_file(sticker_path)
# 将临时文件保存为永久Document
document = await client.save_file(uploaded_file)
# 提取参数
doc_id = document.id
doc_access_hash = document.access_hash
doc_file_reference = document.file_reference

# 后续构建InputDocument和创建贴纸集的代码与示例一致

注意事项

  • 确保WebM文件符合Telegram视频贴纸规范:分辨率≤512x512,时长≤3秒,文件大小≤500KB。
  • short_name必须遵循格式要求,结尾需包含_by_<bot_username>(你的机器人用户名)。

内容的提问来源于stack exchange,提问作者sutaro rem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 15:12:33