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

如何用Telegram机器人向超级群组内的指定频道发送消息?

解决Telegram机器人发送消息到超级群组内指定频道的问题

一、正确获取频道ID的方法

你当前用ctx.chat.id拿到的是超级群组的ID,而非频道ID。要获取频道ID,需按以下步骤操作:

  • 确保机器人是目标频道的管理员(至少拥有发送消息的权限)
  • 在目标频道内发送任意一条消息,然后通过机器人的更新日志(或临时添加监听代码)获取该消息的chat.id值。比如临时添加这段代码:
bot.on('message', (ctx) => {
  console.log(`当前聊天ID: ${ctx.chat.id}, 聊天类型: ${ctx.chat.type}`);
});

发送消息后,控制台会输出频道的ID(通常是类似-1001234567890的负数格式)

  • 也可以使用Telegram内置的@getidsbot:将该机器人添加为频道管理员,它会自动返回频道的ID

二、验证权限与修正发送代码

拿到正确的频道ID后,确保机器人有权限在该频道发送消息,再修改代码:

// 替换成你获取到的目标频道ID(注意是负数格式)
const targetChannelId = -1001234567890;

bot.on('text', (ctx) => {
  bot.telegram.sendMessage(targetChannelId, 'hi')
    .catch(err => console.error('发送失败:', err.message)); // 捕获错误排查权限问题
});

如果发送失败,检查以下几点:

  • 机器人是否在目标频道中,且拥有发送消息的权限
  • 频道ID是否正确(不要漏写前面的-100前缀)
  • 频道是否设置了禁止非管理员发送消息

三、补充说明

超级群组和其关联的频道是独立的聊天实体,ID完全不同。你之前用getChat传入群组ID,自然只能拿到群组信息,必须直接针对频道操作才能获取其ID。

内容的提问来源于stack exchange,提问作者Agustin Chaves

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 02:57:55