Здравствуйте, я занимаюсь разработкой бота Telegram с использованием облачных функций Firebase [Typescript]
Мой бот работает все отлично, он выполняет свою работу, но что-то поддерживает мои облачные функции всегда активными, и, как говорится в названии, это ошибка. Я не знаю, как это вообще происходит, потому что это все еще происходит непрерывно, даже после того, как функция завершена и успешно выполнила свою работу.
Это то, что сохраняет мои журналы облачных функций заполненными, и это продолжает увеличивать мой счет вызова функций ,
То же самое повторяется снова и снова и снова ...
Вот мой код, который в основном получается команда от пользователя и разбивает ее на 2 части, если команда имеет 2 слова.
app.post('/', async (req, res) => {
const isTelegramMessage = req.body
&& req.body.message
&& req.body.message.chat
&& req.body.message.chat.id
&& req.body.message.from
&& req.body.message.from.first_name
if (isTelegramMessage) {
const chat_id = req.body.message.chat.id //Telegram User UID
const first_name = req.body.message.from.first_name //Telegram User First Name
const userInput = JSON.stringify(req.body.message.text)
//const userTelegramUID = req.body.message.text.id
if (userInput !== null) {
const userCommand: string = userInput
const userCommandSliced: string = userCommand.slice(1, -1)
const userCommandSlicedLength: number = userCommandSliced.length
console.log(`User command to split is: ${userCommandSliced} and length ${userCommandSlicedLength}`)
const finalNumberOfWords: number = userCommand.split(' ').length
console.log(`Number of words in string = ${finalNumberOfWords}`)
let returnText: string
if (finalNumberOfWords === 1) {
//returnText = userCommand
if (userCommandSliced === '/start') {
console.log(`Start function used by ${chat_id}`)
return res.status(200).send({
method: 'sendMessage',
chat_id,
text: `Hello **${first_name}**`
})
}
else{
console.log(`1 word sent by ${chat_id}`)
returnText = userCommandSliced
return res.status(200).send({
method: 'sendMessage',
chat_id,
text: `Hello ${first_name}, response to ${returnText} and this contains ${finalNumberOfWords} words.`
})
}
}
else if (finalNumberOfWords === 2) {
let command_array:string[];
command_array= userCommandSliced.split(" ", 2)
const commandFn: string = command_array[0]
const commandArg: string = command_array[1]
console.log(`${command_array} is the command array `)
console.log(`${commandFn} is command function.`)
console.log(`${commandArg} is argument.`)
if (commandFn === '/fetch') {
//let usernameFetched: string;
returnText = `${commandFn} used with ${commandArg}`
let usernameFetched: string
const snapshot = await admin.database().ref(`/Users/${commandArg}/username`).once("value")
usernameFetched = snapshot.val()
console.log(`${usernameFetched} is requested username.`)
return res.status(200).send({
method: 'sendMessage',
chat_id,
text: `Your username is ${usernameFetched}. \n\nCommand used was ${returnText}`
})
}
console.log(`2 words sent by ${chat_id}`)
}
else{
return res.status(200).send({
method: 'sendMessage',
chat_id,
text: `Please don't spam with ${finalNumberOfWords} words in the bot chat.`
})
}
}
else{
return res.status(200).send({
method: 'sendMessage',
chat_id,
text: `Null message detected.`
})
}
}
return res.status(200).send({ status: 'not a telegram message' })
})
export const router = functions.https.onRequest(app)
РЕДАКТИРОВАТЬ: Здесь моя функция успешно завершается, но все же это происходит. И что более важно, это происходит, даже если я не отправляю телеграммное сообщение [т.е. не вызываю функцию], оно все равно происходит.
И снова мой бот работает, но ошибка увеличивает мои вызовы функций.
Вызовы функций с момента возникновения этой проблемы.