Pyrogram:如何检查聊天中是否可发送贴纸、图片或视频
用Pyrogram检查聊天中是否允许发送贴纸、图片或视频
要判断Telegram聊天里能不能发送贴纸、图片或视频,核心是获取聊天的默认权限和当前用户在该聊天的实际权限,Pyrogram提供了直接的API来实现:
核心思路
- 聊天的创建者/管理员不受默认权限限制,默认拥有所有发送权限。
- 普通用户的权限需优先看自身被单独设置的权限,若无单独设置则使用聊天的默认权限。
具体实现代码
from pyrogram import Client app = Client("your_session_name") async def check_media_send_permissions(chat_id): # 获取目标聊天的基础信息 chat = await app.get_chat(chat_id) # 获取当前账号在该聊天的成员身份及权限 current_user = await app.get_chat_member(chat_id, "me") # 初始化权限结果 media_perms = { "贴纸": False, "图片": False, "视频": False } # 管理员或创建者直接拥有全部媒体发送权限 if current_user.status in ("administrator", "creator"): media_perms["贴纸"] = True media_perms["图片"] = True media_perms["视频"] = True else: # 普通用户:优先使用个人权限,无设置则用聊天默认权限 user_perms = current_user.permissions chat_default_perms = chat.permissions media_perms["贴纸"] = user_perms.can_send_stickers if user_perms.can_send_stickers is not None else chat_default_perms.can_send_stickers media_perms["图片"] = user_perms.can_send_photos if user_perms.can_send_photos is not None else chat_default_perms.can_send_photos media_perms["视频"] = user_perms.can_send_videos if user_perms.can_send_videos is not None else chat_default_perms.can_send_videos return media_perms # 运行示例 with app: permissions = app.run(check_media_send_permissions("替换为聊天ID或用户名")) print(f"允许发送贴纸:{permissions['贴纸']}") print(f"允许发送图片:{permissions['图片']}") print(f"允许发送视频:{permissions['视频']}")
关键说明
Chat.permissions:返回聊天的默认权限配置,是ChatPermissions对象。ChatMember.permissions:返回当前用户在该聊天的单独权限配置,若未单独设置则字段值为None。- 权限字段对应关系:
- 贴纸 →
can_send_stickers - 图片 →
can_send_photos - 视频 →
can_send_videos
- 贴纸 →
内容的提问来源于stack exchange,提问作者Serhiy Pustovit
相关产品推荐
相关产品推荐

