如何使用Python的Telethon获取Telegram消息发送频道ID
如何通过Telethon获取消息发送者的频道ID
核心解决方案
在Telethon的NewMessage事件处理函数中,可通过event对象的相关属性直接获取频道ID,以下是两种常用方式:
- 直接获取ID:使用
event.chat_id属性,这是最简洁的方式,会返回当前消息所在聊天(频道、群组、私聊均适用)的ID。 - 验证并获取频道ID:如果需要确认当前聊天是频道,可先获取完整聊天对象,再提取ID:
- 通过
await event.get_chat()获取聊天对象 - 用
chat.is_channel判断是否为频道 - 确认后取
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
相关产品推荐
相关产品推荐

