You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Telethon获取Telegram频道消息遇实体匹配及连接错误求助

解决Telethon无法定位频道实体及连接错误问题

问题现象

  1. 运行Telethon代码从「GTT - Analysis & Signals」频道拉取消息时,报错:
    ValueError: Cannot find any entity corresponding to "GTT - Analysis & Signals"
    
  2. 尝试通过iter_dialogs加载频道缓存时,报错:
    ConnectionError: Cannot send requests while disconnected
    
    (中文翻译:连接错误:断开连接时无法发送请求)

问题原因

  1. 频道名称转义错误:代码中使用了&(HTML转义字符),实际频道名称是&,导致Telethon无法匹配实体
  2. 客户端未连接就执行API操作:iter_dialogs和iter_messages都需要客户端处于连接状态才能调用
  3. 频道未同步到客户端会话:如果未加入目标频道,或客户端会话未同步频道信息,Telethon无法通过名称找到实体

解决方案及修正代码

步骤1:先连接客户端并获取频道ID(可靠方式)

先运行以下代码获取目标频道的ID,后续用ID调用可避免名称匹配问题:

from telethon.sync import TelegramClient

teleapi_id = '你的API ID'
teleapi_hash = '你的API哈希'

# 连接客户端并遍历频道
with TelegramClient('session_name', teleapi_id, teleapi_hash) as client:
    for dialog in client.iter_dialogs():
        if dialog.is_channel:
            print(f'{dialog.id}: {dialog.title}')

运行后找到「GTT - Analysis & Signals」对应的ID,格式类似-1001234567890

步骤2:修正拉取消息的代码

使用频道ID代替名称,确保客户端在连接状态下执行操作:

import pandas as pd
from telethon.sync import TelegramClient
import datetime

teleapi_id = '你的API ID'
teleapi_hash = '你的API哈希'
# 替换成步骤1获取的频道ID
target_channel_id = -1001234567890

df = pd.DataFrame()

# 统一使用一个客户端实例,通过上下文管理自动处理连接/断开
with TelegramClient('session_name', teleapi_id, teleapi_hash) as client:
    # 拉取当日消息
    for message in client.iter_messages(target_channel_id, offset_date=datetime.date.today(), reverse=False):
        print(message)
        data = {
            "group": "GTT - Analysis & Signals",
            "sender": message.sender_id,
            "text": message.text,
            "date": message.date
        }
        temp_df = pd.DataFrame(data, index=[0])
        df = pd.concat([df, temp_df], ignore_index=True)

# 移除时区信息
df['date'] = df['date'].dt.tz_localize(None)

# 保存到Excel(Windows路径需用双反斜杠或正斜杠,添加日期后缀避免覆盖)
df.to_excel(f"C:\\TelegramCopier_{datetime.date.today()}.xlsx", index=False)

关键修正点

  • 修正频道名称的转义问题:原代码中的&改为实际的&,或直接使用频道ID
  • 确保所有API操作都在客户端连接状态下执行(通过with上下文自动管理连接周期)
  • 使用pd.concat代替已弃用的df.append,避免版本兼容警告
  • 修正Excel路径格式:Windows系统下路径需用双反斜杠\\或正斜杠/,添加日期后缀避免文件覆盖

内容的提问来源于stack exchange,提问作者Daniel Alexandrou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 23:25:03