如何用Pyrogram原生函数及Telegram机器人创建并添加贴纸包
使用Pyrogram创建贴纸包并添加贴纸的完整解决方案
前置要求
- 确保Pyrogram版本为最新(执行
pip install --upgrade pyrogram tgcrypto更新) - 贴纸文件符合Telegram规范:
- 格式:PNG 或 WebP
- 尺寸:宽/高至少一个为512px,另一个不超过512px
- 文件大小:不超过512KB
- 机器人已获取正确的API ID、API Hash和Bot Token(从Telegram官方平台和@BotFather获取)
1. 创建贴纸包
使用Pyrogram的create_sticker_set原生函数,注意short_name必须全局唯一,只能包含小写字母、数字和下划线,长度4-64字符。
完整代码示例:
from pyrogram import Client from pyrogram.types import InputSticker import asyncio # 替换为你的参数 API_ID = 123456 API_HASH = "your_api_hash_here" BOT_TOKEN = "your_bot_token_here" async def create_sticker_pack(): async with Client("sticker_bot", api_id=API_ID, api_hash=API_HASH, bot_token=BOT_TOKEN) as app: # 获取机器人自身ID bot_info = await app.get_me() # 创建贴纸包(首次创建需至少添加1张贴纸) await app.create_sticker_set( user_id=bot_info.id, title="我的专属贴纸包", # 贴纸包显示名称 short_name="my_unique_stickers", # 全局唯一标识,不能重复 stickers=[ InputSticker( sticker="path/to/first_sticker.png", # 本地文件路径或已上传的文件ID emojis="😊" ) ] ) print("贴纸包创建成功") asyncio.run(create_sticker_pack())
2. 向贴纸包添加贴纸
使用add_sticker_to_set函数,需指定贴纸包的short_name和要添加的贴纸信息。
代码示例:
async def add_sticker_to_pack(): async with Client("sticker_bot", api_id=API_ID, api_hash=API_HASH, bot_token=BOT_TOKEN) as app: bot_info = await app.get_me() await app.add_sticker_to_set( user_id=bot_info.id, short_name="my_unique_stickers", # 对应已创建的贴纸包short_name sticker=InputSticker( sticker="path/to/second_sticker.webp", emojis="😂" ) ) print("贴纸添加成功") asyncio.run(add_sticker_to_pack())
常见错误排查
- SHORT_NAME_INVALID:检查
short_name格式是否符合要求,或是否已被其他贴纸包占用,换一个唯一的名称重试。 - STICKER_INVALID:核实贴纸文件的尺寸、格式和大小是否符合规范,建议用图片编辑工具调整到512x512以内的尺寸。
- FORBIDDEN: bot blocked by user:如果是为其他用户创建贴纸包,需确保用户未屏蔽机器人,且机器人能向用户发送消息;如果是机器人自身的贴纸包,确认
user_id填写的是机器人自身ID。 - STICKERSET_NOT_MODIFIED:添加的贴纸内容与已有贴纸重复,更换不同的贴纸文件后重试。
内容的提问来源于stack exchange,提问作者Mani_az09
相关产品推荐
相关产品推荐

