gpt4 book ai didi

firebase - 如何在 Firebase 中使用 Telegraf(电报)?

转载 作者:行者123 更新时间:2023-12-01 21:53:36 25 4
gpt4 key购买 nike

我正在尝试将 Telegraf 库与 Firebase Functions 结合使用,但它没有像我预期的那样工作。

我关注这些 this article和说明,如 webhooks (as appears for express example) 中所示和 webhookcallback如电报文档中所示。

const Telegraf = require('telegraf')

// The Cloud Functions for Firebase SDK to create Cloud Functions and setup triggers.
const functions = require('firebase-functions')

// The Firebase Admin SDK to access the Firebase Realtime or Firestore Database.
const admin = require('firebase-admin')

// set telegraf and responses.
const BOT_TOKEN = 'my-telegram-bot-token'
const bot = new Telegraf(BOT_TOKEN)
bot.start((ctx) => ctx.reply("Start instructions"))
bot.help((ctx) => ctx.reply("This is help"))
bot.hears('hi', (ctx) => ctx.reply('Hola'))
bot.on('text', (ctx) => ctx.reply('Response to any text'))
bot.catch((err, ctx) => {
console.log(`Ooops, ecountered an error for ${ctx.updateType}`, err)
})

// initialize bot

bot.launch() // <-- (2)

//appends middleware
exports.ideas2coolBot = functions.https.onRequest(bot.webhookCallback(`/my-path`));

在 firebase 服务器中,我需要添加 bot.launch() (2) 才能开始工作,但它仅适用于 Firebase 函数中设置的最大超时。我需要调用 Telegram“setWebhook”API 才能再次开始工作并且它同时工作。就像它生成一个函数实例,并在时间结束时关闭。

我注意到 telegraf.launch() 可以选择以 pollwebhook 模式启动,但我不太清楚如何使用这些选项。

我应该如何使用 telegram.launch() 在 Firebase 的 webhook 模式下工作?

编辑:当我使用 getWebhookInfo我得到这个结果:

{
"ok": true,
"result": {
"url": "https://0dbee201.ngrok.io/test-app-project/us-central1/testAppFunction/bot",
"has_custom_certificate": false,
"pending_update_count": 7,
"last_error_date": 1573053003,
"last_error_message": "Read timeout expired",
"max_connections": 40
}
}

控制台显示传入连接但什么都不做...

i  functions: Beginning execution of "ideas2coolBot"
i functions: Finished "ideas2coolBot" in ~1s

编辑2:

我也一直在尝试添加 Express...

app.use(bot.webhookCallback('/bot'))

app.get('/', (req, res) => {
res.send('Hello World from Firebase!')
})

exports.ideas2coolBot = functions.https.onRequest(app);

它在 '/' 路径下有效,但在 '/bot' 中什么也没有。 POST 到 '/bot' 没有响应。

顺便说一下,我尝试了一个快速独立版本并且工作完美,但是将它与 firebase 一起使用没有响应(“读取超时已过期”)。

最佳答案

删除

bot.launch()

尝试添加这个

exports.YOURFUNCTIONNAME = functions.https.onRequest(
(req, res) => bot.handleUpdate(req.body, res)
)

然后手动设置你的 webhook

https://api.telegram.org/bot{BOTTOKEN}/setWebhook?url={FIREBASE FUNCTION URL}'

关于firebase - 如何在 Firebase 中使用 Telegraf(电报)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58731075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com