如何解决Telegram贴纸集从Client1迁移至Client2的无效集错误?
解决Telegram贴纸集跨客户端迁移的问题
你遇到的问题核心是access_hash是客户端会话绑定的,每个客户端的access_hash都不一样,直接复用必然报错。不用发消息提取的话,最优雅的方式是用贴纸集的short_name(短名称)完成迁移——这个字段是全局唯一且不随客户端变化的。
具体实现步骤
- 从Client1的目标贴纸集中提取
short_name字段 - 在Client2中通过
short_name构造InputStickerSetShortName,替代依赖会话的InputStickerSetID
修改后的代码示例
# 从Client1获取目标贴纸集的短名称 stickers = await client1(messages.GetAllStickersRequest(0)) target_sticker_set = stickers.sets[0] sticker_short_name = target_sticker_set.short_name # 在Client2中通过短名称安装贴纸集 go_save = await client2(messages.InstallStickerSetRequest( stickerset=types.InputStickerSetShortName( short_name=sticker_short_name ), archived=False ))
方案原理
贴纸集的short_name是公开的全局标识,无论哪个客户端访问,这个值都固定不变。Telegram服务器可以直接通过short_name定位到对应贴纸集,完全不需要依赖客户端会话相关的access_hash,完美适配跨客户端迁移的场景。
内容的提问来源于stack exchange,提问作者root
相关产品推荐
相关产品推荐

