我通过使用telegraf 运行节点应用程序的两个实例进行了快速测试,使用bot.telegram.sendMessage 每 5 秒向我发送消息。
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
我找到了this。无论如何,这两个实例都毫无问题地不断向我发送消息。
我想说这取决于库,除了发送这些消息之外,它还会轮询电报 API 以获取更新,即使我没有设置任何回调来管理它们。
事实上,如果你查看 Telegram Bot 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))
在这一点上,我很有信心你能做到。