电报:无法使用TelegrafNodeJs将消息/照片发送到频道

问题描述

我会使用telegraf在电报频道上发送一条消息。我邀请了该漫游器并让他成为管理员

我已经使用以下代码进行了测试:

bot.on('text',(ctx) => {
  // Explicit usage
  ctx.telegram.sendMessage(ctx.message.chat.id,`Hello ${ctx.state.role}`)

  // Using context shortcut
  // ctx.reply(`Hello ${ctx.state.role}`)
})
bot.launch();

但是只有当我私人写信时,它才会回复。 那么,为什么它在频道上不起作用? 比起没有命令我该如何在该频道中发送消息呢? (例如with和interval?

我尝试这个:

bot.use((ctx) => {
  console.log(ctx.message)
})

当我在与他的私人聊天中使用该漫游器时,它将返回所有消息数据。在频道上,我收到未定义

解决方法

在您的情况下,CTX具有当前的聊天信息,如果您想向频道发送消息,请提供Telegraf sendMessage中记录的正确ID:

telegram.sendMessage(process.env.TELEGRAM_CHANNEL,ctx.message.text);

我在公共频道上使用漫游器,因此我的情况是:

TELEGRAM_CHANNEL=@MY_PUBLIC_CHANNEL_NAME

在频道信息设置t.me/MY_PUBLIC_CHANNEL_NAME中可以使用频道名称