You need to enable JavaScript to run this app. 如何通过Python获取Telegram频道chat id:仅持邀请链接/名称的实现方案
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python获取Telegram频道chat id:仅持邀请链接/名称的实现方案

实现通过Telegram频道名称获取Chat ID的方案

前置条件

  • 目标频道必须是公开频道,且已设置公开用户名(即显示为@xxx格式的频道名称),未设置公开用户名的私有频道无法仅通过名称查询ID
  • 你使用的Bot必须已经被添加为该频道的管理员,至少拥有查看频道信息的权限

核心实现方法

使用pyTelegramBotAPI内置的get_chat()方法,直接传入带@前缀的频道公开名称,即可获取频道完整信息,提取返回结果中的id字段就是需要的chat_id。

完整可运行代码示例

import os
import telebot

API_KEY = os.environ['API_KEY']
bot = telebot.TeleBot(API_KEY)

def get_channel_id_by_name(channel_name):
    # channel_name 格式为@+频道公开用户名,例如@my_public_channel
    try:
        chat_info = bot.get_chat(channel_name)
        return chat_info.id
    except Exception as e:
        print(f"获取频道ID失败,错误原因:{e}")
        return None

# 业务逻辑调用
if __name__ == "__main__":
    input("编辑message.txt内的发送内容,完成后按回车继续")
    target_channel_name = "@你要查询的频道公开名称"
    channel_id = get_channel_id_by_name(target_channel_name)
    if channel_id:
        # 修正原代码读取文件的错误:需要读取文件内容为字符串再传入接口
        with open("message.txt", "r", encoding="utf-8") as f:
            msg_content = f.read()
        bot.send_message(chat_id=channel_id, text=msg_content)
        print("消息发送成功")

常见错误说明

  • 接口返回Chat not found:请检查频道名称拼写是否正确、Bot是否已经加入目标频道并获得对应权限、目标频道是否为未设置公开用户名的私有频道
  • 原代码问题:原有代码直接将文件对象传入send_message是错误用法,需要先读取文件内容为字符串再传入,读取消息文件建议用r只读模式而非a+追加模式

内容的提问来源于stack exchange,提问作者AX EL

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 15:15:03