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

使用Python Bot API向Telegram私有频道发送消息失败求助

解决Telegram Bot向私有频道发消息报"chat not found"的问题

问题原因

公开频道可以通过@频道用户名(比如@testme100)作为chat_id正常发消息,但私有频道URL里的特殊后缀(比如你用的@vMjFCXBghv00NDZl)是私密标识符,Telegram API无法通过它定位到私有频道,必须用数字格式的频道ID才行。

解决步骤

  1. 给机器人分配私有频道管理员权限
    必须把机器人添加为私有频道的管理员,至少要开启"发送消息"权限,否则就算拿到ID也发不了消息。

  2. 获取私有频道的数字ID

    • 先在私有频道里发一条任意消息
    • 调用Telegram Bot API的getUpdates接口:
      https://api.telegram.org/bot<你的BOT_API_KEY>/getUpdates
      
    • 在返回的JSON数据里找到对应频道的chat对象,提取里面的id字段——格式一般是-100xxxxxxxxxx(以负数开头,代表这是频道类型的聊天ID)
  3. 替换代码中的chat_id
    把原来的chat_id = '@testme100'换成你拿到的数字ID。

修正后的代码示例

import requests

# 替换为你的机器人token
bot_token = "你的BOT_API_KEY"

# 替换为私有频道的数字ID,比如-1001234567890
chat_id = "-1001234567890"

text = 'Hello, world!'

url = f'https://api.telegram.org/bot{bot_token}/sendMessage'
data = {'chat_id': chat_id, 'text': text}

response = requests.post(url, data=data)

if response.status_code == 200:
    print('Message sent successfully.')
else:
    print(f'Error sending message: {response.text}')

补充说明

  • 私有频道的数字ID是固定的,获取一次后可以长期使用
  • 如果调用getUpdates没返回数据,检查机器人是否已加入频道,且发送测试消息的时间不超过24小时(API只保留最近的更新记录)

内容的提问来源于stack exchange,提问作者Jaffer Wilson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 05:13:06