【问题标题】:(Discord.js) Cannot read property 'fetchMessage' of undefined(Discord.js) 无法读取未定义的属性“fetchMessage”
【发布时间】:2020-07-20 06:00:36
【问题描述】:

我正在编写的模块有问题。该模块应该简单地获取通道中的消息并计算它们。频道名称在配置文件中。我试图从控制台访问它并且它有效。 代码如下:

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");

}
}

我收到此错误:(node:77497) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'fetchMessage' of undefined

在控制台中,我得到了第一个 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);

        })


}
}

【问题讨论】:

    标签: javascript discord.js


    【解决方案1】:

    您需要使用频道的cache 来使用频道ID 获取频道,然后您需要使用messages.cache 而不是fetchMessages()

    所以你的解决方案是:

    client.channels.cache.get(config.canaleRisposte).messages.cache.first(50)
    

    注意.first(50) 获取集合中的前 50 个值。

    【讨论】:

    • 嗨 Syntle,感谢您的回复,现在我收到此错误:TypeError: Cannot read property 'get' of undefined。看起来它无法读取通道方法。同时,我会尝试查看 API 文档
    • 你运行的是 discord.js v11 还是 v12?
    • 我正在运行“discord.js”:“^11.4.2”,
    • 好的,你的原始代码是对的,config.canaleRisposte 的值是多少?你是把它存储为字符串还是数字?
    • 好的,我得到了这个工作: await client.channels.get(config.canaleRisposte).fetchMessages({ limit: 50 }) 代码中有一个错误:我拼错了 counter (var conuter = 0;)。可能是导致错误的原因吗?编辑:不,这不是导致问题的原因。我将在答案中发布我的工作代码。
    猜你喜欢
    • 2022-06-10
    • 2021-06-27
    • 1970-01-01
    • 2020-12-05
    • 2021-04-14
    • 2021-11-17
    • 1970-01-01
    • 2023-01-14
    • 2023-02-21
    相关资源
    最近更新 更多