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

如何使用Python的Telethon获取Telegram消息发送频道ID

如何通过Telethon获取消息发送者的频道ID

核心解决方案

在Telethon的NewMessage事件处理函数中,可通过event对象的相关属性直接获取频道ID,以下是两种常用方式:

  • 直接获取ID:使用event.chat_id属性,这是最简洁的方式,会返回当前消息所在聊天(频道、群组、私聊均适用)的ID。
  • 验证并获取频道ID:如果需要确认当前聊天是频道,可先获取完整聊天对象,再提取ID:
    1. 通过await event.get_chat()获取聊天对象
    2. 用chat.is_channel判断是否为频道
    3. 确认后取chat.id作为频道ID

修改后的完整代码

TELEGRAM_API_ID = xxx
TELEGRAM_API_HASH = "xxx"
TELEGRAM_BOT_TOKEN = "xxxxxx" 
TELEGRAM_BOT_NAME="bot_name"
client = TelegramClient(TELEGRAM_BOT_NAME, api_id=TELEGRAM_API_ID, api_hash=TELEGRAM_API_HASH)
client.start()

@client.on(events.NewMessage()) 
async def handler(event):
   raw_text = event.text
   # 方式1:直接获取聊天/频道ID
   channel_id = event.chat_id
   
   # 方式2:验证是否为频道后获取ID(可选)
   # chat = await event.get_chat()
   # if chat.is_channel:
   #     channel_id = chat.id
   
   print("RAW_TEXT", raw_text, "CHANNEL_ID", channel_id)
   
client.run_until_disconnected()

注意事项

  • Telegram的频道ID通常以负数形式存在,这是平台的标准标识规则,无需额外处理。
  • 如果消息来自私聊或群组,event.chat_id会返回对应聊天的ID,可结合chat.is_channel过滤仅处理频道消息。

内容的提问来源于stack exchange,提问作者Kudzai Madziva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 07:47:20