我目前正在构建一个软件套件,它通过它们的链接(即频道)接收几千个电报频道,并从它们那里收集信息,以便进行情感分析。使用Telegram API和Telethon,一切都很好,但是我经常遇到一个问题。为了解析每个电报频道的频道ID和用户哈希,我需要运行:
client.get_entity("https://t.me/telegram_channel")然而,这会很快地从Telegram API中触发FloodWaitErrors,大概是因为它认为我可能试图解析电报用户的用户名,以便发送垃圾邮件。
但事实并非如此。我只是解决公共频道,而不是用户或聊天。我在电报文档中搜索了几个小时,没有找到一种不调用ResolveUsernameRequest从而触发FloodWaitError来解析信道链接的方法。这是否可以在不造成这个利率限制的情况下做到?
谢谢!
发布于 2022-01-26 22:43:03
这是因为您自己创建的API_ID和API_HASH并不是正式的。如果您执行太多请求,它将运行到FloodWaitErrors中。
解决这个问题的简单方法是使用,一个官方的API。
解决方案1:使用T桌面的API:
但是,有一个陷阱,正如您在Telegram API的initConnection请求中所看到的,不仅仅是API_ID和API_HASH,它还需要其他参数,比如device_model或lang_pack。Telethon确实为您提供了一种通过TelegramClient.__init__设置这些参数的方法,但是它不允许您设置lang_pack参数,因为只适用于官方应用程序。
这就引出了解决方案2。
解决方案2:使用Telethon的包装库,该库提供官方API。
client,就像与Telethon一起使用它一样。https://stackoverflow.com/questions/70869620
复制相似问题