使用Telethon获取消息时部分消息views属性为None是什么原因?
Telethon获取Message对象views属性为None的常见原因
- 消息所属会话类型不支持浏览量统计
只有公开/私有频道的发帖才有浏览量统计字段,普通私聊、群组、超级群组内的消息,Telegram官方本身不提供浏览量统计,对应views属性固定返回None。 - 频道管理员关闭了浏览量显示
该问题确实可能由聊天管理员设置导致。Telegram频道支持管理员在频道设置中关闭「显示帖子浏览数」选项,关闭后所有客户端和API接口都无法获取到该频道帖子的浏览量数据,views属性会返回None。 - 帖子发布时间过短
刚发布的频道帖子,Telegram后台还未完成浏览量数据的统计同步,发布后几分钟内调用接口可能返回None,等待一段时间后重新请求即可拿到正常数值。 - 当前账号无对应内容访问权限
若请求的是私有频道内容且当前登录账号未加入该频道、或被频道拉黑限制访问,接口返回的消息数据会缺失包括views在内的部分敏感字段,返回None。
补充说明
你提供的示例代码存在缩进错误,print('message ->', message)行没有写在异步函数get_messages内部,实际运行时会在函数未执行完成时就打印,可能导致拿到未完成的协程对象而非实际消息数据,调整缩进即可:
async def get_messages(entity=None, post_id=None, limit=1): await app.tl_client.get_dialogs() input_entity = await app.tl_client.get_input_entity(entity) print('input_entity->', input_entity) message = await app.tl_client.get_messages(entity, ids=post_id, limit=limit) # 调整缩进后放到函数内部 print('message ->', message)
内容的提问来源于stack exchange,提问作者MichelDelpech
相关产品推荐
相关产品推荐

