首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >远程电报API -不调用ResolveUsernameRequest解析invite链接

远程电报API -不调用ResolveUsernameRequest解析invite链接
EN

Stack Overflow用户
提问于 2022-01-26 20:08:05
回答 1查看 1K关注 0票数 1

我目前正在构建一个软件套件,它通过它们的链接(即频道)接收几千个电报频道,并从它们那里收集信息,以便进行情感分析。使用Telegram API和Telethon,一切都很好,但是我经常遇到一个问题。为了解析每个电报频道的频道ID和用户哈希,我需要运行:

代码语言:javascript
复制
client.get_entity("https://t.me/telegram_channel")

然而,这会很快地从Telegram API中触发FloodWaitErrors,大概是因为它认为我可能试图解析电报用户的用户名,以便发送垃圾邮件。

但事实并非如此。我只是解决公共频道,而不是用户或聊天。我在电报文档中搜索了几个小时,没有找到一种不调用ResolveUsernameRequest从而触发FloodWaitError来解析信道链接的方法。这是否可以在不造成这个利率限制的情况下做到?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2022-01-26 22:43:03

这是因为您自己创建的API_IDAPI_HASH并不是正式的。如果您执行太多请求,它将运行到FloodWaitErrors中。

解决这个问题的简单方法是使用,一个官方的API

解决方案1:使用T桌面的API:

  • 官方电报桌面应用程序正在使用以下API : API_ID = 2040 API_HASH = "b18441a1ff607e10a989891a5462e627“
  • 电传子一起使用: client =TelegramClient(“会话”,2040,"b18441a1ff607e10a989891a5462e627")

但是,有一个陷阱,正如您在Telegram API的initConnection请求中所看到的,不仅仅是API_IDAPI_HASH,它还需要其他参数,比如device_modellang_pack。Telethon确实为您提供了一种通过TelegramClient.__init__设置这些参数的方法,但是它不允许您设置lang_pack参数,因为只适用于官方应用程序

这就引出了解决方案2

解决方案2:使用Telethon的包装库,该库提供官方API。

  • 有一个名为opentele的库,它提供了一种使用官方API的简洁方法,包括桌面、安卓、iOS、macOS、……的API。目前已经被官方应用程序所使用。
  • 首先,您需要从PyPi安装它: pip安装opentele
  • 然后运行下面的示例代码:从opentele.tl导入TelegramClient从opentele.api导入API导入异步def ():api = API.TelegramDesktop client = TelegramClient("telethon.session",api=api)等待client.connect() asyncio.run(main())
  • 之后,您可以使用client,就像与Telethon一起使用它一样。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70869620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档