问题描述
我会使用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
中可以使用频道名称