我在编写模块时遇到麻烦。该模块应该只获取通道中的消息并对其计数。通道名称位于配置文件中。我试图从控制台访问它,并且可以正常工作。 这里的代码:
module.exports = {
name: 'calcola',
description: 'calcola i punti',
async execute (message, client, config) {
console.log("inizio start counting");
await client.channels.get(config.canaleRisposte).fetchMessages({ limit: 50 }).then(async risposte =>{
var conuter= 0;
risposte.forEach(risposta => {
counter ++;
});
})
console.log("end counting");
}
}
我收到此错误:(节点:77497)UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性'fetchMessage'
在控制台中,我得到第一个console.log;因此,代码将一直工作到这一点。仅供参考,在我的主文件中,获得了以下行以获得模块:
if (message.content === config.prefix + "calcola") client.commands.get('calcola').execute(message, client, config);
谢谢您的帮助!
PS:我有found this website,但我不知道如何使它起作用。在该网站上,我添加了“限制”参数。
编辑: 我设法使其正常工作,不确定如何。如果有人能弄清楚,那将是不错的:D
module.exports = {
name: 'calcola',
description: 'calcola i punti',
async execute (message, client, config) {
console.log("inizio start counting");
await client.channels.get(config.canaleRisposte).fetchMessages({ limit: 50 }).then(async risposte =>{
var counter= 0;
risposte.forEach(risposta => {
counter ++;
});
console.log(counter);
})
}
}
答案 0 :(得分:0)
您需要使用频道的cache
来使用其ID获得频道,然后您需要使用messages.cache
而不是fetchMessages()
。
所以您的解决方案是:
client.channels.cache.get(config.canaleRisposte).messages.cache.first(50)
注意.first(50)
获取集合中的前50个值。