I'm trying to add an hourly command to my discord bot. Every hour it should find all users and add money to them. The command works perfectly fine when it is not inside of a setinterval or settimeout function. However, the command needs to run every hour so the setInterval command is the best option. Here is my code.
const economy = require('./economy')
const profileSchema = require('./schemas/profile-schema')
module.exports = async client => {
let J = 0
var interval = setInterval (function () {
profileSchema.find({
}).exec(async (err, res) => {
if (err) {
console.log(err)
}
console.log(res.length)
if (res.length === 0) {
console.log('No users.')
return
} else {
console.log(res.length)
for ( i= 0; i < res.length; i++) {
const userId = res[i].userId
let hourly = await economy.hourlyIncome(userId)
await economy.addCoins(userId, hourly)
if (i < res.length) {
J = 0
}
}
// console.log('Done')
}
console.log('Done')
})
}, 3000);
}
the exact error says:
/Users/*******/discordFamilyBot/hourlyIncome.js:14
console.log(res.length)
^
TypeError: Cannot read property 'length' of undefined
I've tried putting the function inside of a setInterval loop indirectly but even that ran the same error.
question from:
https://stackoverflow.com/questions/65623007/why-is-my-discord-bot-returning-result-from-mongodb-as-undefined-when-inside-of 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…