我进行了一个快速测试,运行了两个实例的Node应用程序,使用telegraf每5秒向我发送一条消息,使用的是bot.telegram.sendMessage
函数。
const { Telegraf } = require('telegraf')
const bot = new Telegraf("<MY_BOT_TOKEN>")
bot.launch().then(
setInterval(() => {
bot.telegram.sendMessage('<MY_CHAT_ID>', `hello from ${process.env.INSTANCE_NUMBER}`)
}, 5000)
)
它正常工作,但我也收到了这个错误。
Error: 409: Conflict: terminated by other getUpdates request; make sure that only one bot instance is running
关于这个问题,我在这里找到了
这篇文章。不管怎样,这两个实例都可以正常发送消息。
我想说的是,这取决于库,除了发送这些消息之外,它还轮询电报API以获取更新,即使我没有设置任何回调来管理它们。
事实上,如果你检查电报机器人API的
sendMessage文档,它并没有提到这样的错误。
这意味着你应该能够从同一机器人的多个实例发送这样的
sendMessage
调用,而不会有任何问题,只要注意你正在使用的库以及它在幕后执行的操作。如果现有的应用程序不适合你的用例,甚至可以实现自己的调用。
更新
我尝试发送消息,而没有启动机器人(也就是说没有使它获取更新),我没有收到错误消息。
const { Telegraf } = require('telegraf')
const bot = new Telegraf("<MY_BOT_TOKEN>")
setInterval(() => {
bot.telegram.sendMessage('<MY_CHAT_ID>', `hello from ${process.env.INSTANCE_NUMBER}`)
}, 5000))
现在,我相信你已经能够做到了。