问题标签 [telethon]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Telethon:如何上传频道/聊天徽标?
如何上传频道/聊天标志?我在官方文档中没有找到这个信息。
python-3.x - 从本地会话 Telethon 获取用户名
我正在使用Telethon库来抓取一些电报频道。在爬行时,我需要解析许多加入链接、用户名和频道 ID。为了解决这些问题,我使用了方法client.get_entity()
,但过了一段时间,电报服务器禁止我的爬虫解析太多用户名。我四处搜索并从这个问题中发现,我应该使用get_input_entity()
而不是get_entity()
。实际上,telethon 将实体保存在本地 SQLite 文件中,每当调用时get_input_entity()
,它首先搜索本地 SQLite 数据库,如果没有找到匹配项,则向电报服务器发送请求。到目前为止一切顺利,但我对这种方法有两个问题:
get_input_entity()
只返回两个属性:ID和哈希,但 SQLite 数据库中还有其他列,例如username、phone和name。我需要一种方法,不仅要返回ID和hash,还要返回其他列。- 我需要控制发送到电报服务器的解析请求的数量,但
get_input_entity()
只要在本地数据库中找不到匹配项,就会向电报服务器发送请求。问题是我无法控制这种方法何时请求电报服务器。实际上,我需要此方法的布尔参数,指示当在本地数据库中找不到匹配项时,该方法是否应向电报服务器发送请求。
我阅读了一些 Telethon 源代码,主要是get_input_entity()
编写了我自己的版本get_input_entity()
:
但是我的代码在某种程度上存在性能问题,因为它对 SQLite 数据库进行了冗余查询。例如,如果target
实际是本地数据库中的实体并且with_info
是True
,它首先查询本地数据库self._client.session.get_input_entity(target)
并检查是否with_info
是True
,然后再次查询数据库以获取用户名和名称列。在另一种情况下,如果target
在本地数据库中找不到,则self._client.get_input_entity(target)
调用会对本地数据库进行冗余调用。
了解了这些性能问题后,我深入研究了 telethon 源代码,但由于我对asyncio了解不多,所以我写不出比上面更好的代码了。
任何想法如何解决这些问题?
python - 使用 Telethon 查找会话 ID 并终止会话
在我问这个问题之前,我检查了这里。我想杀死除了我现在连接的会话之外的所有其他会话。基于我使用的 Telethon api all_sessions = client(GetAuthorizationsRequest()).to_dict()
,我得到了这个结果:
我想终止这个会话,但我不知道session id
上面的链接中提到了什么(telethon API 文档)。我尝试使用这些命令:
但不仅没有删除会话,而且没有来自 api 的响应,并且命令等待并等待响应没有错误或没有异常。我怎样才能终止会话?
telegram - Telethon ID 的唯一性
Telethon有 3 种类型:
- 用户:可以是真实用户还是机器人
- 聊天:电报群
- 频道:电报频道或超群
这三种类型都有一个ID属性。我可以将它们存储在数据库的一列中并使该列唯一吗?或者这三种类型之间可以有重复的id?
telegram - AuthKeyDuplicatedError 电视节目
使用下面的代码,我已经使用 Telethon 连接到电报大约一年了!
昨天当我想用代码连接到我的会话时,我收到了这个错误:
该错误不再说明,并且在文档中没有关于此错误消息的更多描述。如何检索我的会话?
telethon - 使用 Telethon 获取特定 ID 后的电报频道消息
我想在 id(例如 1245)之后获取特定的频道帖子。我写了这段代码:
但这给了我最后的 100 条消息。即使将max_id
参数传递给 GetHistoryRequest,我也会从较早的消息中获取消息到较旧的消息。我怎样才能收到相反顺序的消息?
python - 有什么方法可以使用 Telethon 知道电报张贴照片的网址吗?
我使用 python 和 Telethon 来获取消息。我可以下载消息照片,但我不想存储和下载。我想知道照片的网址,以便以后随时使用它。有什么办法吗?
python-3.x - Telegram API 抛出 PeerFloodError:请求过多
我没有使用机器人 API。我正在使用 Telegram API 发送消息。消息很容易发送,但问题发生在 19 个用户之后。在第 20 个用户,我收到 PeerFloodError。即使在搜索了很多之后,我也没有找到任何具体的限制,并且使用 sleep 也不起作用。请提出解决此问题的方法。
代码
python - 为什么 ImportContactsRequest (telethon 1.3) 方法不添加联系人也不产生错误?
ImportContactsRequest 方法(telethon 1.3)。通过电话号码添加新联系人不起作用。是否可以将此方法更改为另一种方法?
python-3.x - 从 Telegram 频道接收消息
我正在尝试使用 Telethon 库从 Telegram 频道获取消息。每周消息都按类型发布:
- 1 条消息包含姓氏
- 此姓氏的 2 条消息
我需要收到一条带有姓氏和以下消息的消息,并忽略其他名称的所有其他消息。
我收到带有姓氏的第一条消息:
我收到一条消息:
你能告诉我如何以可读的形式获取我需要的消息吗?