如何通过Telethon API检测Telegram聊天用户无法发消息(受限/禁言)
如何通过Telethon获取用户的禁言/消息发送权限状态
你可以通过get_permissions返回的ParticipantPermissions对象直接读取细粒度权限,和edit_permissions的参数一一对应:
核心解决方案
ParticipantPermissions中的send_messages属性直接对应消息发送权限:
- 当
send_messages=False时,用户被禁止发送普通消息(即常规意义上的禁言) - 如果需要判断更全面的受限状态(比如不能发媒体、贴纸等),可以组合多个权限属性判断
修改你的代码示例
permissions = await client.get_permissions(event.chat_id, user.id) # 正确判断消息禁言状态:send_messages为False则被禁言 is_message_muted = not permissions.send_messages # 可选:判断是否处于全面受限状态(无法发送任何类型消息) is_restricted = not ( permissions.send_messages and permissions.send_media_messages and permissions.send_stickers and permissions.send_gifs ) InsertNewUserInDB(user.id, user.username, permissions.is_admin, is_message_muted, permissions.is_banned)
注意事项
你之前使用的permissions.is_muted是针对语音通话中的静音状态,并非消息禁言,这是容易混淆的点,建议替换为上述的send_messages判断逻辑。
内容的提问来源于stack exchange,提问作者Ler04kaTrap
相关产品推荐
相关产品推荐

