Python Telethon找不到与此实体对应的任何实体

jmo0nnb3  于 2023-03-16  发布在  Python
关注(0)|答案(4)|浏览(196)

我尝试访问一个组,并希望阅读所有的消息。问题不在于代码,问题在于我得到了错误:值错误:找不到任何对应于“鲸鱼警报”的实体。但奇怪的是,如果我用其他会话名称尝试它,有时它会起作用。有人知道我如何100%获得正确的组吗?我有什么其他选项作为输入实体或会话名称?也许这可能是原因。
下面是我的代码:

with TelegramClient('Me', api_id, api_hash) as client:
    
    for message in client.iter_messages('Whale Alert'):
         #Do Sth
fhg3lkii

fhg3lkii1#

完整的错误会直接告诉你要研究什么,它指向文档:https://docs.telethon.dev/en/latest/concepts/entities.html#summary
这个错误经常发生在只使用一个实体(用户,频道,聊天等)的ID时。只有当你的会话已经“看到”并缓存了这个实体时,这个错误才会发生。这就是为什么不同的会话可能会给予你不同的结果。

ckocjqey

ckocjqey2#

当使用字符串telethon检查它是否是一个用户名,如果不是,它将尝试从缓存中获取实体。在另一个会话中,您将名称保存在缓存中。
可能的解决办法:

  • 使用聊天的用户名而不是名称
  • 使用get_dialogs()填充该高速缓存
camsedfj

camsedfj3#

我通过打印所有聊天记录并找到我感兴趣的聊天记录的id来解决这个错误。手动获得id后,get_entity(id)对我起作用了。

for dialog in client.iter_dialogs():
  if dialog.is_channel:
      print(f'{dialog.id}:{dialog.title}')
vtwuwzda

vtwuwzda4#

首先,如果你能更好地理解的话,我试着阅读这里的文档,而不是使用聊天名称,只尝试t.me/chatname(频道链接),这对我很有效

相关问题